Some Coveted Programming Skills

To follow-up on an earlier post I wrote this year about GIS Skills, I recently read a story in Readwrite Enterprise outlining 15 programming skills most coveted by employers (http://readwrite.com/2013/04/09/15-programming-skills-most-coveted-by-employers). While their story was aimed at the development community, two of the 15 skills outlined in their story are definitely needed by GIS Analysts and are skills I regularly see in newer job advertisements:

  • SQL * (the #1 most coveted skill)
  • Python (Skill #10)

If your aim is to become a GIS developer, than the additional other programming skills listed in their article apply, namely:

  • ASP.net (Skill #14) **
  • PHP (Skill #11)
  • C# (Skill #7) ***
  • XML (Skill #6)
  • JavaScript (Skill #4)
  • HTML (Skill #3)

* Also the number one preferred skill I listed in my earlier post. So you’ve heard it from at least two different sources now.

** ASP.net is really a framework that you’d develop in using Visual Basic.net or C#, so I’m not sure it’s really in the same category as the other skills mentioned in their article.

*** While you can certainly develop GIS applications using Visual Basic.net, most GIS developers use C#. So if you’re just learning to program, learn C#. If you’re already well entrenched in Visual Basic from years of experience with prior versions (like me), then keep developing in VB.net unless your lack of C# experience starts to interfere with employment prospects.

You’ll also note that their list does not contain references to Flash/Flex and/or Silverlight. Both Flash and Silverlight were all the rage in web-based GIS application development the last few years, however the rather sudden appearance of mobile devices (with their lack of support for Flash and Silverlight) really killed advancement of those technologies as people moved towards GIS websites that would work in the mobile space. Thus these days HTML5 and JavaScript are the preferred development languages for web-based GIS, as these technologies are supported on the major mobile operating systems.

Learning GIS and Getting a GIS Job – Some Tips and Tricks

Note: I wrote this post in 2009 and much of the content below is still relevant in 2013. However, I have written an updated skills development post that may be of interest too:  Landing a GIS Job and GIS Skills Development in 2013

 

I’ve seen some forum posts recently from folks wanting to know how to learn GIS, and many of the responses have had fairly typical information. So, this got me thinking about my own path to learning GIS and the atypical ideas and skills I learned and developed along the way that helped me excel in the industry. I used to teach some GIS course at the University of California Riverside Extension; and many of these ideas are drawn from my lectures in the practical class I co-taught with a GIS colleague. So, here is a rather lengthy discussion of how I got into GIS, what I did to set myself above the pack and what recommendations I give to aspiring GIS students.

Getting Started
There are a variety of ways to get started learning GIS. You may be employed in a non-GIS field and are learning GIS as part of your job. Maybe you are switching careers or retraining yourself to find a new job in the growing geospatial industry. Perhaps you are a student who wants to learn GIS to support your field of study, or you are a student majoring in GIS or geography with aspirations of landing a job doing GIS.

Depending upon your goal, your pathway to get started learning GIS may vary. If you are a student intending to major in GIS or geography, your best bet would be to start at a community college or university where you can take accredited GIS courses that will apply to your major’s requirements. However, those seeking GIS skills to broaden their work-related knowledge or re-tool themselves for immediate employment may be better served by finding a professional certificate program in GIS at a local community college or university extension. These programs are usually non-accredited, which means that they will not likely count towards satisfying the requirements for a degree in GIS. However, professional GIS certificate programs are a great way to learn GIS quickly and gain readily employable skills to help you enter the marketplace. In addition, many professional certificate programs are taught by professionals working in the field, so you will get first-hand information about how GIS is used by the people who use it daily. These programs are also fantastic places to network with potential future employers.

My Experience
In my own career, I started learning GIS on my own without any training. Once I realized that I wanted to work with GIS as a career, I found a professional GIS certificate program and enrolled in classes. I was very fortunate to be in a region with a fantastic certificate program and excellent instructors from public and private industry. I took many classes to learn a variety of GIS topics, and I talked often with my instructors to get a feel for the industry and where the job potential was. I attended local and regional GIS User Groups to further network with peers and potential employers, see new product demonstrations, and learn tips and tricks that would help me in my GIS practice. I also read GIS industry magazines to learn how organizations were implementing GIS and get a sense of what direction the industry was moving. Finally I read ads for GIS jobs to see what employers were looking for and where the jobs were.

All of this helped me learn not only what minimum skills are essential, but what additional skills are valuable to employers. I quickly formed an idea of what skills make up a ‘great’ GIS, besides just knowing a lot about GIS. These other skills are those that provide a competitive advantage over others who just learned how to use a particular GIS software package such as ArcView.

The main skills that stood out were database management and application programming. Fortunately, I had some experience with programming before getting into GIS. In my previous jobs I wrote a few small Visual Basic programs to help automate certain tasks. Since I knew these skills would be extremely valuable to a GIS person, one of the things I did was find an opportunity to become a better programmer and database person while I was learning GIS.

So I took a job as a programmer for a start-up company. The job had nothing to do with GIS; and I was also struggling at first, because I’d never been employed as a full-time programmer. But it wasn’t too long before I was coding like a pro. The job also required me to learn SQL Server, so I was getting the database management experience I wanted as well. I was getting great programming and database management skills, so I wasn’t concerned about not working in GIS at that moment. I was learning GIS at night and on weekends in my certificate program classes, so I was making progress with my career goals. It was the combination of the programming skills I was learning on the job and the GIS knowledge I was learning in my classes that would pay off; and it did.

Within a year I was offered a job in government chiefly because of the connections I had made while networking with my instructors and at the local GIS user group. Working as a GIS person in government provided many opportunities to apply GIS to a variety of situations that involved crime mapping, land use planning, utilities, finance and others. In almost every case, the database management and programming skills I learned at my non-GIS jobs came in handy. From writing scripts to scrub and reformat data, to creating ad-hoc Microsoft Access databases to organize data for our GIS, these non-GIS skills helped the GIS team work faster. My colleagues who didn’t know how to write scripts or work with databases often did this work manually and talked about wanting to learn these other skills.

Today I’m a GIS consultant and ESRI Business Partner. I get to help agencies and organizations implement GIS in all kinds of environments and situations. The job is full of challenges as each client’s situation is different. I also continue to learn new skills. For example, I’m currently teaching myself to program in Microsoft Silverlight to see if it can help enhance our mapping applications.

So what are the take-home messages from my experience?
If you wan to learn GIS and you want to increase your chances of obtaining employment:

Find a class
Ideally I think in-class learning is more valuable than online training, so I would first recommend that you look for GIS classes offered by your local community college, university or extended university. Some regions also have non-profit organizations that offer technical classes to train displaced workers for new careers. Some of these groups offer GIS classes too. If you can’t find a class in your area, then look online. There are a number of online GIS classes offered by ESRI and other organizations:

ESRI Virtual Campus (http://training.esri.com/gateway/index.cfm)
List of GIS Schools (http://www.gis.com/education/formal.html)

Attend regional and local user groups
I can’t stress enough how important this is. Virtually everyone I know working in GIS got their first or subsequent job as a result of networking at a local or regional user group. Find one and attend them often. Ask questions, talk to people – they will become your colleagues and peers. If there isn’t a local or regional User Group in your area, start one. There are probably lots of GIS people working in your area that would love to attend a user group. It’s just no one has the time or wants to responsibility of organizing one. If you have the time and don’t mind calling people, this is a great way to make contacts in the GIS industry very quickly. Talk to your ESRI regional representatives and they can provide names of people you can contact about speaking, attending or helping. Many agencies can get the use of their meeting rooms for free. Most local vendors will jump at the chance to market their product to a room full of potential customers, so vendors can be helpful in filling presentation slots and getting the word out. With a little bit of tact you can usually get a vendor to sponsor snacks if they are presenting. Whether your group starts out as a formal event or an informal lunch with colleagues, get together with GIS people and network.

Network with GIS professionals and classmates
If you are fortunate to be in an area where you can attend in-class training, be sure to network with those in your classes. In my experience while attending classes, those of us that talked with each-other shared information about job openings and tricks we learned. Those who didn’t network with us didn’t get this information. Be sure your class peers know who you are and admire your knowledge. You could share tricks you’ve learned, tell them about upcoming user group meetings, etc. It will impress them and impress your instructors.

Get real-world experience
You might be thinking about the double-edged sword: You can’t get experience without getting a job and you can’t get a job because you don’t have experience. The fact is I’ve been on a lot of hiring committees for entry-level GIS positions, and there are always TONS of resumes from candidates whose only GIS experience consists of course work. There are a lot of people out there who have taken GIS classes. Most of those introductory classes teach people how to push buttons to ‘operate’ the software. As a prospective employer, we want to see a candidate who can ‘use’ the software.

This is an important distinction. From your coursework I have no doubt that you know how to operate the GIS software. What I can’t see from your coursework is whether you can think on you own and whether you have solved real problems, using real data (classroom data always works well) in the real world using GIS. Unless I can see experience like that, or unless you’ve stood out in some other way (refer to the networking and user group items above), I’m probably not going to take a chance on you.

To get that GIS job you have to get some real world experience. So how do you do that? You volunteer. If you have the requisite GIS skills you get from a couple of introductory classes, there are plenty of government agencies who will take you on as a volunteer intern and build upon your knowledge in exchange for some volunteer labor from you. So, you give up some free time by helping them, and they teach you to use GIS in the real world, with real data, to solve real problems. What does this give you? It gives you another network opportunity and demonstrable experience to discuss at an interview. You can also show off copies of your maps and analyses from the portfolio of work you’ll develop during your volunteer efforts. Plus if you’ve proven to be a good asset, a good boss will try their best to keep you around by hiring you. Otherwise, they will let you know about opportunities with other agencies. It’s not limited to government agencies too. Look around for local non-profit agencies that might need help.

Learn auxiliary skills
I’ll say it again: learning to use ArcGIS Desktop is good. But a lot of people who want to work in GIS learned to use ArcGIS Desktop. What else can you do?

Databases
Any GIS person worth their salt knows how to set up and manage a database. Whether it’s Microsoft Access, SQL Server, Oracle, mySQL, PostGRESQL, etc. if you don’t know how to use a database, learn to. These days everyone stores data in a database. It might not be well organized, but it’s in a database; and you’re going to have to know how to work with it to make it useful in the GIS. My recommendation is that you learn Microsoft Access. It’s a good database system that’s easy to learn and use. From there you can graduate to the workgroup and enterprise systems such as Microsoft SQL Server, Oracle, mySQL, PostGRESQL, etc.

Scripting
Learn to program in a scripting language. Pick a scripting language such as Visual Basic for Applications (VBA), Python, or JavaScript and learn it. These scripting languages come in handy when you need to scrub huge databases to perform actions like correcting addresses for better geocoding accuracy, reformatting data, exporting and importing large datasets, and other fairly common activities GIS people get tasked with.

An easy way to start is learning Microsoft Visual Basic for Applications (VBA). It’s included in ArcGIS Desktop and it’s embedded in all Microsoft Office products. With a copy of Microsoft Access and a solid knowledge of VBA, you can convert anything into a format readily useful in a GIS. I use VBA and Microsoft Access to reformat data all the time. My data usually ends up in SQL Server, but it’s far easier to prepare it using Microsoft Access and some VBA scripts. ESRI has some resources to learn VBA and there are many websites that provide VBA resources for working with Microsoft Access.

ESRI Virtual Campus VBA Classes
http://training.esri.com/gateway/index.cfm?fa=search.results&searchterm=VBA&softwaretype=All+Software&trainingformat=1%2C2&search=search

VBA Wikipedia
http://en.wikipedia.org/wiki/Visual_Basic_for_Applications

VBA is also your gateway to learning ArcObjects and object oriented programming for more advanced GIS development projects.

Crystal Reports
You know that CD that comes with ArcGIS Desktop that installs Crystal Reports? If you haven’t done so, install it. If you have installed it, play around with the Crystal Reports program. Make sure you figure out how to use the Crystal Reports report functions in ArcMap, but also play around with the core Crystal Reports program that you can launch without ArcMap. Crystal Reports is a powerful reporting tool that can read databases and spreadsheets, perform queries, sort and summarize data and generate nice looking reports.

Why learn this? Because one of the first lessons I learned working in GIS for government was that it’s not always about a map. In fact, it often isn’t about a map at all. Sure we GIS people got into GIS because we like to make pretty maps. But the mistake we make is in thinking that everyone else likes maps too. When I started working in government GIS, I was amazed at how often I was asked to create a report showing the results of my analyses. No map. No pretty aerial photo; just a table of numbers representing the results of a geographic question. Sure there was a lot of cool GIS analysis that went into generating the resulting table, but the deliverable product wasn’t a map. As you might guess, I often relied on Crystal Reports to generate that final product from the GIS analysis. I’m pretty sure you’ll find that as your analysis skills increase, the proportion of maps versus reports you generate will shift. So, learn Crystal Reports. You may find that in knowing it you’re valuable to non-GIS users as well. By learning Crystal Reports for GIS, I was able to help the finance department make a bunch of reports of data from the financial system. It had nothing to do with GIS, but I was pretty valuable to the team for my Crystal Reports skills.

In Conclusion
If you’re successful in getting a GIS job, you’re entering a great career at a time when GIS technology is advancing very rapidly. You’ve got to keep your knowledge up-to-date, so make sure you continue to learn new tools and techniques for working with GIS. Where can you do this? Most of the suggestions I’ve discussed are also appropriate for keeping your GIS skillset current. In addition, there are numerous online resources for learning about GIS techniques, and industry news. Social networking sites like Twitter offer the ability to tap into the thoughts of many great GIS people in real-time, while blogs provide in-dept articles about GIS topics (such as this one). In addition, nothing beats the software support forums. Chances are you are not the first person to encounter a problem or have a question about how to do something. The forums are your first line of support, use them. Along the way if you learn useful to the GIS community, share it and help others.