GIS Analyst to GIS Developer
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.
Just learn JavaScript already
I could probably put together a whole post about this. Maybe you’re focused on desktop GIS, but those pretty maps aren’t very helpful sitting on your pc. You’ll probably want to share them on the web (or not, that’s your business), so just learn some JavaScript. Flash and Silverlight are dead. They’ve been dead. You can wish they weren’t, doesn’t make them any less dead. JavaScript: The Good Parts is a near essential. I really liked Dom Enlightenment as well to learn about how to do jQuery like tasks without jQuery. If you’re ready to do some deep soul-searching JavaScript learning, go look at the You Don’t Know JS series.
Go learn the ArcGIS API for JavaScript and some Leaflet/Mapbox. Get familiar with the Google Maps API. There are no shortage of JavaScript tutorials, check out tuts+, Code School, FrontEnd Masters, check out some of the free vids at watchmecode and more out there. Learn it, live it, love it. I’m a big fan of TurfJS, which is used mostly in a Node environment, but can be used in the browser and it is just awesome and a great resource to see some spatial operations done in JavaScript. And not to toot my own horn, if you want to learn some ArcGIS web dev, check out ArcGIS Web Development.
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.
Optional
Learn SQL
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.
More resources
Summarize
Pick one or two of these and boost your GIS skills thus making yourself more marketable and give yourself a warm fuzzy feeling.