The following is a list of ideas about the skills that, in my experience, are needed (or at least very helpful) to have a succesful career as a GIS professional (cartographer, data analyst, etc.) nowadays. Although I am not including developers in that group, most of these ideas can be applied to any programmer wanting to specialize in geospatial technologies.
These points are based on two main goals: being efficient and producing quality results in your work with GIS software and spatial data.
Writing. No matter what you do, you will end up writing. From sofware documentation to a large report, from a comment in a source code file to a description of the procedure used to create a map. Writing is the main way of communicating ideas, and GIS is (as most things) all about communication.
I am not talking about having a good prose style or writing beautifully (which are good things, of course). The main benefit from writing will be to learn how to structure your ideas, be concise, and organize your thoughts in a clear fashion. There’s no better way of getting there than writing.
Practice your writing skills and that will make a huge difference in your work. Start a blog, keep a diary, write letters to your friends…whatever you prefer.
Data visualization. A map is not always the best way of representing geospatial data, and you might not need one even if you think so. Let’s face it: maps are frequently overused. Mastering other ways of visualizing data is a very important skill for a GIS professional, and will also make a big difference.
Cartography. If you end up creating a map (but let me write it again: a map is not always the best way of representing geospatial data, and you might not need one even if you think so), you must learn some fundamental ideas about how to do it. Cartography is a language, and as such, it has to be learnt and studied. Basically, if you haven’t read at least one book on cartographic theory and map design, you do not how to make a good map. Go read some basic theory before you start playing with those symbology settings.
GIS theory: A word processor is a tool that you can use to write a novel, but it makes no sense to try to write one unless you have some notions about storytelling or character development. Without them, no matter how proficient you are using that tool, your novel is likely to be weak. Same with GIS tools.
Learn to use your computer and your Operating System. This one might sound obvious, but it’s not. If you are a Linux user, you have probably read some documentation about Linux itself. If you are a Windows user (most Mac users will also fit into this), most likely you haven’t read anything about your OS. The Operating System is the most complex piece of software you are using. Trial and error, and a bit of intuition, that might be enough to use it somehow, but it won’t make you a really productive user. Read about it and learn as much as you can.
Learn to use your system console. Closely related to the above point. There are plenty of useful GIS tools that do not have a UI, so you will need the console to use them. And even for those that have it, using them in the console provides great advantages such as allowing automation and reproducibility. Of course, that is also true for non-GIS tools. If you want to be efficient, you must feel confortable using a console.
Learn how to use a text editor. Text editors are not just for programmers. Instead, they are probably one of the most useful tools any computer user can have. Knowing how to use one of them efficiently will improve your productivity by orders of magnitude. Learn as many of its functionalities as you can. If you want to go a step further, learn how to use regular expressions.
As a rule of thumb, if you can do something using plain text in a text editor, do it that way instead of using any other format or software.
Scripting language. Most GIS software nowadays supports scripting, and a power user should be able to use that functionality to automate tasks and define custom workflows.
You do not need to be a programming expert, since your main work will not be writing software. Programming will just be a helpful skill for your GIS work, so some basic concepts will be more than enough.
To correctly learn those concepts and have a solid foundation, I would recommend not using books like “The X programming language for GIS professionals” or “GIS analysis in X”. Instead, get a title that just teaches the language itself, and maybe some fundamentals of computer programming. Then apply it to your preferred software.
Python is probably the best language to learn nowadays.
Once you learn it, don’t use it just within your GIS tool, but everywhere in your daily work. I find this book to be a great tool for that.
Non-technical skills. Even if you are not intereted in using or developing Open Source oftware, you should follow an “Open-Source-like” approach for your work. Share your results, get feedback, take part in a community or local group, etc. Being a lone wolf is not the best way of becoming a competent professional nowadays.
For this, there are plenty of tools that make things easier, but the one you should not miss is:
Version Control Systems. Be it a small script, a data sample, a check list for your project or a tasty recipe, you are likely to share your work with others or collaborate with them. Versioning systems were originally developed for programmers, but they have become an ubiquitous tool and are of great use for many professionals, including GIS ones.
And to close, a little advice about what to learn apart from what is in this list:
Beware of new stuff. GIS is trendy. So is programming. Same with mobile and positioning technologies. With that, it’s easy to focus on all the shiny new stuff and forget the old and trusty fundamental ideas. I usually find a great lack of knowledge about the roots of GIS as a science, while, at the same time, people spend a lot of time learning concepts and tools that are brand new.