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 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.
- 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.