GIS coding skills and strategies for university students

Blog Post created by jkerski-esristaff Employee on Jan 30, 2020

Because GIS is rapidly expanding its presence inside web architecture, including data services, software tools, and networking and sharing capabilities, coding and computer science are growing in importance for all who are involved in the geospatial field.  As I work with faculty and students around the world, I frequently get asked about the specific skills that students should learn, and the strategies for learning them, if they wish to be successful in a career that is focused on the computer science side of GIS.  After consulting with some colleagues at Esri and in academia, the starting points I wish to share are below.  I am mindful that this list can and should change, going forward, and I intend to update this post as needed.


What are the programming topics and software necessary in the geospatial industry?   I would include scripting (Python with ArcPy, and inside ArcGIS (such as with Arcade scripts), GIS database programming, GIS algorithm implementation and optimization, desktop application development (C#, Java, ArcGIS Runtime SDKs, GDAL), Mobile app development (ArcGIS Runtime SDKs and ArcGIS API for JavaScript, Web application development (JavaScript with APIs from ArcGIS and others), work with statistics (R, Matlab), and Big data analytics (Tensorflow, Hadoop, Spark).    

What are the differences between GIS programming in an academic setting and in industry? To bridge the gap, how many GIS programming courses of different levels should be provided, and which levels should be required for the completion of the degree?   
Some of the differences might include broad troubleshooting skills for a variety of systems. Also important is the ability to adapt and change based on requirements from management or budgetary-related. The ability to inherit, improve or maintain systems that you didn’t create and they may be outdated and potentially involve unsupported implementations or implementations that don’t use best practices may happen and it is good to be prepared. 


Courses that would be valuable include:

  • Intro to programming concepts
  • A lab that focuses on debugging skills.
  • Introductory and Intermediate courses on JavaScript.
  • Intro and Intermediate courses on Python
  • Other CS courses as electives (e.g. algorithms?)

How can we convince our colleagues that GIS programming courses are important?    GIS is simply mapping a database nor is it just a flavor of computer science.  Certain skills are critical for all GIS students such as Python, for example. Understanding basic programming concepts and the modern web GIS architecture only helps ensure student success once they graduate. Not every student needs to be proficient in building websites or native applications, but if they have the basics, then they will be more adaptable.  


Are our students prepared to meet the programming needs from industry yet? How do we bridge the gap?  There is a spectrum of needs in GIS that ranges from little-to-no-programming-skills-needed to fully custom application building. Does every GIS student need to be able to program at an intermediate level, for example?   


How should pedagogy change given the change in dominant languages over the past 50 years (e.g., FORTRAN vs C vs Python)? Have students changed in ways that requires a different approach in pedagogy?  The fundamentals of “how” programming language work hasn’t changed all that much (in terms of variables, data structures, control structures, and so on). These fundamentals can be applied across a variety of languages.


What is changing very rapidly is advances in some of the programming languages, themselves. Web browsers and JavaScript is a great example of unbelievable rapid change. One challenge and goal might be to keep curriculum as current as possible without stressing that everything used is the "latest and greatest"  Students will still get much training on the job, and thus I encourage university faculty to focus equally on teaching students flexibility in how to learn programming languages and to learn how to adapt. But I am keen on hands-on work with GIS and programming languages--you really only learn by doing it.  Most people cannot simply read about GIS or programming in a book and then apply it successfully.