How do I develop my GIS programming skills?

There is one blog post from Michalis Avraam that explains essential skills to succeed in GIS career which I think is well written. You will probably find lot of good advices there.

UPDATE: unfortunately upper links are dead but similar topic can be found in one research article Identifying Skill Requirements for GIS Positions: A Content Analysis of Job Advertisements


I like Chris Garrard's Python for Geoprocessing course materials. http://www.gis.usu.edu/~chrisg/python/2009/ Personally, I find programmatic manipulation of OGR/GDAL to be indispensable.

With respect to finding the best fit for you, consider the software or geostack you wish to be most expert in (like ArcGIS, QGIS, PostGIS-GeoServer-OpenLayers), and then choose programming language(s) that best supports your choice. That'll be discoverable by checking out the language of the associated API or other customization tutorials. A great deal of online programming learning resources exist, and a websearch of your preferred software package + language + "tutorial" will get you rolling.

I also believe in "learning by doing". For example, crank out a simple map with Javascript and Google Maps, and try to add geometry, styling, user interface, and analyses of interest. Work to see what's possible and what's not. As you build, you'll need more sophisticated tools for customization, and this will point to relevant plaftorms, languages, and libraries.


Don't start with C++ and GIS without learning software development first. It's just too much.

Python is a good place to start regardless of what GIS platform you go with later. There are a lot of books, websites and training materials available and a lot of colleges use python as an introduction before going on to the heavy duty programming languages, like c++ and java.

My favourite python resources -- outside of this site -- are Show Me Do, Think Python, Stack Overflow and the mailing lists of the software I use (mostly GDAL and ArcGIS).