I’m going to keep this short and simple. If you’re a GIS pro or student and wondering how to get started learning how to boost your developer chops, I’m going to list some resources. For some detailed geo-career advice, I’d recommend Justin Holmans blog with tons of great resources.
I’m a GIS professional, why do I need to learn to program?
Look over some of the job listings at gjc, gisjobs, gisgig or any other job site and look up "GIS" or "spatial". More and more positions are looking for people that can do some sort of programming. They can range from just knowing how to automate the sofware you use to wanting someone that knows a dozen languages, server-side and database administration while juggling apples (and pays like a damn intern). My point being… it can’t hurt.
Caveat You don’t need to learn everything listed, but I would advise, pick at least one and you will definitely boost your all around skills.
Caveat++ I made this list specifically targeting geo folks, so it’s by no means "one size fits all".
Learn some damn Python
I’m going to go ahead and say that every geodev should learn some Python. Why? Because it’s a great automation language and spatial tools have historically favored them. There is of course ArcPy for your Esri-flavored Python, but even the ArcPy tools are built on top of GDAL, and you would do yourself a huge favor learning some GDAL. To learn some GDAL basics, check out Geprocessing with Python and Geospatial Power Tools from Locate Press. For some ArcPy, look at Python Scripting for ArcGIS. You can even use Python in QGIS.
Benefits of Python?
- Easy scripting tool
- GDAL bindings
- Can schedule scripts
- Good starter language
I’m probably glancing over some other benefits. But we run scheduled Python scripts to do large data exports and conversions across servers and databases in addition to using it to automate some complicated map-book generation tools. Go check out Learn Python The Hard Way to learn some Python..uh…the hard way, but you’ll really learn it that way.
Learn some C# or Java
Yeah yeah, I may get some flack for this, but I don’t care. Learning Python alone will take your desktop GIS skills to the next level, in either ArcMap or QGIS. If you are at all interested in doing some custom web stuff, learn Java or C#. They are both object-oriented languages that can be used to do some pretty heavy lifting on the server. I’m a heavy user of Pluralsight(not affiliated by the way) which has tons of courses that covers both of these. I suggest getting a trial, checking it out. Once you get your feet wet in either of those, dig further with something like C# In Depth which will teach you more about C# than you ever even cared about. When it comes to Java, well, I’m no Java pro, but I learned Java by learning JUnit and Jetty. I have this Head First book too. Besides, tons of books like Clean Code use Java in the examples, so you pick up a lot reading books like that. I don’t think it matters which of these you learn, once you pick up one, it’s fairly easy to learn the other, they’re very similar in syntax so that shouldn’t be an issue.
Why not Ruby or C++? I’d say if you learn C#/Java, you can pick up Ruby just fine. I wouldn’t say the same about the other way around. Want to learn C++, sure go ahead, it’s well worth it, C++11 and C++14 make things like memory management much easier to work with, but it’s still pretty barebones, so for that reason and seeing how I’m focusing on "Geo" devs, I’d recommend C#/Java.
What about Node? Damnit dude. See previous answer.
Look to some OSS
Open-source won’t save the world, but if you are typically an Esri dev, branch out. Look at GeoServer and what the BoundlessGeo suite has to offer. I wasn’t kidding about learning GDAL, even by the command-line. Try QGIS, you may be pleasantly surprised at how you can extend it. Check out OpenStreetMap and embrace your local roads.
Oh yeah, I said it. This may be optional until it’s not. If you in anyway shape or form ever want to get any sort of meaningful information out of a database, for the love of all that is sacred, learn to write some SQL. Learn the Hard Way even. I’m sure there are some great resources out there, but I pretty much learned by trial and error, lots of error.
Pick one or two of these and boost your GIS skills thus making yourself more marketable and give yourself a warm fuzzy feeling.