How to become a GIS Programmer

There was a post on the NEARC List Serve recently that grabbed my attention.   The post read something like "Please give me your thoughts on the quickest way to become a GIS programmer as it seems that I could be more employable with these skills."  The post really struck a chord with me as we have a very difficult time finding good GIS programmers at PenBay Media.  I have been pretty frustrated with the University system and its inability to graduate well-prepared developers of any stripe let alone GIS developers.  Most of the responses to the post were very narrow (one was LEARN JAVASCRIPT) and technology specific which frustrated me and I am assuming the original poster.  I have been thinking about the issue for some time now, and here is my advice:

1.  Learn an object-oriented programming language.

I try to be technology agnostic.  The choice of platform should really be determined by the organization that you wish to work for and what you want to really achieve with your programming skills.  Each organization has its own IT preferences and truthfully the differences in capabilities of the different platforms are in the margins.  Learning the concepts of object-oriented programming, however, is a must for any good developer.  Pick your platform - Java or C# and learn the fundamentals of object-oriented programming.

2.  Learn how to develop for a 3-tier web architecture.

If you want to build applications that people will use to solve real-world problems, then you must be able to design, develop, and deploy web applications.  This means that you need to know how databases work, you need to understand how application servers work (how they scale, how your application design will affect performance, etc.), and you need to understand how security is handled in a web environment.  In order to do this, you will need to be competent in a number of different technologies including SQL, HTML, XML, JavaScript, CSS, and your application server of choice.

3.  Learn what coordinate systems are and how to use them.

The concept is simple - we live in a roundish world and we make flat maps.  Coordinate systems help us to resolve the whole round to flat thing.  The implementation is anything but simple.  There are thousands of different coordinate systems that have been developed over the centuries each optimized for linear distance or area in a particular part of the world or for the whole world.  You need to understand the basics of coordinate systems to be a successful GIS developer.  Period.

4.  Apply what you have learned to real-world problems.

This is what seperates the wheat from the chaff.  This is also where I belive most Universities are failing their students.  Being able to repeat coding patterns from text book examples does not make effective developers.  Effective developers create solutions that people use to solve real-world problems.  In the hiring process, this is where the real stars stand out.  When I am interviewing developers, I am only marginally interested in the school that a candidate attended or the grades received.  What I AM looking for is practical experience.  I am looking for developers that can demonstrate their ability to listen to users, to understand their problems, and then design, develop, and deploy solutions that help solve those problems.

I am a big believer in learning by doing.  If you want to become a GIS developer, start developing solutions.  Start small and build up.  Each time you do something new you will learn something new.  As you develop more, and more interesting applications you will simultaneously be building a portfolio that will be your biggest help in landing a new job or a more interesting job in your current organization.