Mr. Davis,
I am a GIS Specialist who is wrapping up an MS in GIS and looking forward to applying my newly acquired skills to projects here at Baltimore City’s DOT. I recently stumbled onto your blog (http://geospatialscott.blogspot.com/) through an esri forum posting (http://forums.arcgis.com/threads/32892-Google-Streetview-and-Javascript-api) and was quite impressed with the breadth of your programming skills and abilities.
I was asked if I could try to create a program that would display accident history reports based on intersections in a GIS. My GIS application development experience is limited to what I learned through my coursework and I do not have a programming background. My question for you is how did you go about developing your programming skills as a GIS professional? Do you know of any resources that might aid me in going from a GIS analyst to a creative GIS developer like yourself? I see a heavy need for this type of GIS Developer work here at Baltimore DOT and I would like to contribute as much as possible, utilizing all the skills and resources available to me.
I’m sure you are super busy, but any suggestions or input would be much appreciated from this aspiring GIS(lowercase)p.
This caused me to reflect upon the past few years and how I've arrived at such an awesome job. I work for the Utah AGRC as a Geospatial Developer and I love my job. There are very few days that I'm not excited to get to work and create something cool. Every day I'm challenged by new problems to solve through code.Thank you in advance, [name withheld]
I've worked in my current position for almost two years and am just now becoming comfortable calling myself a developer. This is because I'm entirely self-taught and am naturally self-conscience about my knowledge and skill as a developer. My formal education was in Geography with an emphasis in GIS; no computer science classes at all. I started my career as a GIS Analyst working for several local municipalities.
Here are a few things that I think have contributed to my transformation from a GIS Analyst that had no programming experience to a Geospatial Developer.
30 Minutes Per Day
At the beginning of every GIS job that I have had I have always asked my supervisor if he would allow me to spend 30 minutes per day on learning something new. Universally the response has been, "Really!? You want to better yourself!? Heck yes you can." OK, that may not be the exact wording, but you get the idea. My managers have always been happy to give me that time. I believe that it's because they see it as an investment in their employee.
You Gotta Love it Baby
In order to have the motivation to teach yourself something as complicated and frustrating as programming you have to enjoy it. Find something that excites you and then learn about it. If you are not excited to learn about it, you better move on to something else."Give someone a program, you frustrate them for a day; teach them how to program, you frustrate them for a lifetime." - David Leinweber
— Programming Wisdom (@CodeWisdom) June 19, 2012
Learn By Doing Real Work
It's important to me to learn by doing something related to a real project rather than a demo or example project. This helps me stay invested in it as well as lets me know if this technology will really work for my environment. For example, recently I've been reading about backbone.js. Instead of trying to work through an example project that has not relation to anything that I would ever build, I've been reading through the examples and trying to translate them into one of my current projects. By doing this I'm finding that backbone may not be the best solution for my projects. I'm not sure that I would have come to this conclusion as quickly if I had buried myself in demos. Demo's are super useful for showing me how something works, but if I'm writing something, I want it to be connected to my world.Find a Yoda
Having someone smarter than you to whom you can ask questions is a necessity. I really feel like this is what has made the difference for me. It was only when I was able to get past my own self-conscientiousness and ask smart people questions that I really felt like I made progress.
Fortunately, in my experience, most programmers are more than happy to give you a little advice and point you in the right direction. I've had several 'famous' JavaScript people respond to my questions on twitter within minutes.
The best ones won't give you the answer right away, but will give you just enough info for you to find the answer on your own. @SteveAGRC is a master at this and has been a great mentor for me. As he would say, "you don't learn anything by keeping your mouth shut."
So I hope that this is a beginning to an answer for my new friend in Baltimore. Maybe a later post will be about specific languages and technologies that I think are the best to learn (JavaScript & Python). If you have any other suggestions for this aspiring developer, please leave a comment.
What a great post, Scott. There is something for everyone here from the new GISp to those GISPs that are adapting to the every changing state of GIS. Thanks.
ReplyDeleteI live in Ghana and my search oblong brought me to this blog. I've learnt something new. I have started learning Python (learnt it's ESRI's favorite tool). Looking forward to see your post on Javascript and Python.
ReplyDeleteGreat post!
ReplyDeletePersonally I learned developing because I got a real necessity for my hobby: quantum mechanics ;) ... not a joke, really! I was wondering about recurring patterns in radioactive decay outputs and in 1997 there was no free software which could analyze the data I got. So I started the real hard way, by learning c++. After a year I got a little tool which could tell me if the radioactive decay got some entropic anomalies. A friend of mine, who I've not seen for 5 years, came to visit me and saw the books about c++ in my bookshelf and asked me if I would like to start as a developer in the company he works ... since then I earn my money as a developer, learned more than 10 different languages, develop desktop, web, mobile and so on ...
My advice (like Scott already has written) is to get a little personal project and learn step by step. Get accustomed to the high frustration level at the beginning, breath deeply and just keep trying, asking asking asking ... a lot of help is out there in the www. Soon you will acquire experience and then bigger projects are nothing special anymore.