Yes, You Need to Code

Over the past year, I’ve been involved in searching for GIS analysts a number of times. As a result, I’ve noticed a few patterns:

  1. There are a lot of analysts out there looking for jobs. Every time I run an ad, I get at least 100 resumes from people of various levels of experience and education.
  2. The vast majority of those that I call to pre-screen have not done any meaningful coding of any kind. This includes Python, which has been shipping with ArcGIS for several versions now.
  3. Of those that do have some coding experience, many do not show it on their resumes. I find this particularly interesting as I can’t imagine why a person would choose not to list all relevant skills or experience.

I am very publicly on the record that I think some form of coding skill is essential for any GIS analyst entering the workforce today. My reasoning here is fairly straightforward.

  1. The “IS” in “GIS” stands for “information system.” This means “computers.” Actually, according to one of my professors in the late ’80s, an information system doesn’t technically have to involve computers but this is 2013 and even brewing a cup of coffee involves a computer.
  2. The “G” in “GIS” stands for “geography.” (Don’t worry, the revelations will keep coming.) Geography is intensely mathematical. I suppose, in the interest of accuracy, I should state that some segments of geography are less mathematical than others but I think it’s safe to say that the elements of the science that are addressed by GIS involve a lot of math. Take, for instance, coordinate reference systems. That one small but important part of geography can separate the wheat from the chaff quickly.
  3. Computers use code to do math.

Modern GIS software is complicated and comes with a lot of capability by default. Just look at the default UI for ArcMap or QGIS and you’ll see a lot of tools at your fingertips. In other words, there are a lot of buttons to push. This is fine but I’d wager that these software tools expose less than 10% of their full capability through their default interfaces.

The reason for that is that there are simply too many use cases in geography to design into a piece of software by default. That is why these tools, and most other GIS software, ship with APIs. (“Ship” is a loose concept with open-source but please grant me license.) These APIs expose the full capability of the software so that users may customize it to their needs. That means coding. For both ArcGIS and QGIS, that can mean Python but there are lots of other choices as well.

If you choose to get by with just using the GUI tools, you are doing yourself two disservices:

  1. You are placing yourself at the mercy of others who can code to get around to building the customizations you need.
  2. You are allowing your skills to erode by not using a significant amount of capability.

So you need to code to some extent. You need to in order to automate complicated tasks you do regularly, or read in data that’s in some oddball format, or use some capability of your GIS-du-jour that isn’t exposed out of the box, or to make that web map sing, or for any of a number of other reasons. Luckily, you have a wealth of information at your fingertips. It is called open-source geospatial software. I can already hear the protests: You learned on ArcGIS in school. You are comfortable with ArcGIS and you like it. Fine, keep using it.

But while you’re using ArcGIS, also check out the source code for open-source libraries like Shapely or GEOS or GDAL or other commonly used (even under the hood of ArcGIS) tools. You learned the math in school. You toughed out these concepts and you understand them. Now look at the compiled knowledge of a lot of smart programmers to see how the concepts are concretely implemented in code. The process will, at a minimum, make you a better ArcGIS user because you’ll understand what’s going on under the hood. The truth is, even if ArcGIS isn’t directly using one of those open-source libraries, it’s probably using an ESRI-developed implementation of a standard algorithm. It’s similar enough that you’ll be able to understand the behavior and that will help you better bind your own customizations to their closed-source API.

I say this because it worked for me. I am a programmer by training and passion. I heard the phrase “GIS” once, in passing, during a lecture in college. Yet, my first job was in the GIS field. Needless to say, I had a lot of learning to do. Most of it came at the hands of some very patient geographers. The first tools I was exposed to were the proprietary tools of MapInfo and ESRI (with a smattering of Intergraph). I was able to soak in what the geographers were telling me and bang against those APIs to build some useful tools but the light bulb really came on for me when I began reading the source code of open-source projects. There, laid out before me, was what the software was really doing.

Today, I work with a mixture of open-source and proprietary tools but the majority of my paying work is still in the Esri realm. My exposure to open-source has, however, made me better with it because it has deepened my understanding.

Not everyone can be a professional software developer as it takes a certain mindset to do it all of the time. But, in the GIS market of 2013, everyone needs to have some understanding of some kind of coding, whether Python or R or Javascript or something else.

One other side note: Over the past year, I have also advertised for software developers with results that are opposite of what I see with analysts. There are very few applicants and many that I see have been out of work for a while, have no GIS background and spent a lot of years working with older tools. These are “blue bird” applicants hoping to catch on. In short, there is a gulf between the high demand for GIS-literate programmers and the miniscule supply. Having the ability to code, and showing it on your resume, can be what separates you from the pack of 100 other analysts applying for the same position.

So, yes, you need to code.

Note: For some reason, the comments aren’t showing on this post. You can follow the link below to comment. I apologize for the inconvenience.