I am considering upping my programming skills by taking a python geoprocessing course through ESRI. Before I part with the hefty registration fee, I would like to get your opinion on the value of 24 hrs of instructor led python programming. I am primarily interested in learning the following:

For those of you who have taken a course such as this, did you walk
away with applicable skills or more theoretical knowledge?

For those of you who have recently been in the job market, did you
find employers looked favorably on having a class such as this on
your resume?

For employers, does a specialty course like this really matter, or do most GIS
analysts/specialist learn python programming on their own?

A general criticism of Esri courses I've done is that they can hold your hand through every step, without imparting any real understanding of what you are doing, or why. A random person off the street could probably complete the exercises, but wouldn't have a clue about how to use the software the Monday after the course. Real world experience, backed up by self-learning, is more useful IMO. But a course can look good on your CV...
– Stephen LeadOct 15 '12 at 23:01

9 Answers
9

I am of the opinion that any course you have on your resume cannot be a bad thing. Your initiative to take a course to increase your knowledge can only be seen as a positive thing to prospective employers.

I cannot speak to the value of the ESRI course but it will probably be of high quality. It will, however, be focused on python implementation within the ArcGIS environment. It will not teach you programming best practice techniques that you will gain through a university course. You will most likely gain knowledge of how to implement tasks that will help you in your working environment.

I recommend reading up on Python and practicing as much as you can prior to the course to get the most out of it.

Here is a good source that helped me learn the basics of Python. Some other sources to help you out can be found here:

I took a paid course through Geospatial Training Services, but I didn't pick up all that much. It was generally just: type this, type that.

The course that really got me going was the Python course through Penn State's GIS Master's program. It's free, of high quality, and it makes you think. They give you several exercises to work through. Solutions are included through code and video.

The course focuses on arcpy (ArcGIS). If that's the software you're using I highly recommend the course.

NC State offers a programming course in their Master's of GIS program too. It goes into more detail than the Penn State course on the built in Python Modules / language as a whole. There are some specifics on arcpy as well.

To @WolfOdrade 's point MIT's Computer Science program offers their Intro to Com Sci & Programming course (in Python!) under the open courseware license too. The course covers all the basics of Types, Loops, Control Structures, etc. without a bias towards any API.

Another option for vanilla python is Learn Python the Hard Way. The pdf is available for $29 if you prefer a hard copy, but the web version is free. There are distinct, digestible topics that you can work through in series, or as you need a refresher.
– RoyDec 31 '13 at 3:45

In addition to a (potential) increase un employability, I think learning to use python is always a good idea. It makes your workflows reproducible, allowing you to version control how an analysis develops in time. If a co-worker asks you how you did this or that, you can just pull up the script. In addition, if someone asks you which postprocessing steps changed in the last few weeks, you can answer that question. Imo this is hard to do with the GUI.

In addition to Fezter's advice, I'd recommend getting a good Python textbook and working through it. I have Beginning Python by Magnus Lie Hetland. But to be honest, I'm not thrilled by this one—not enough exercises and sample code throughout much of it compared to a more college-oriented text like Big Java by Cay Horstmann, which I taught myself Java with.

(as an aside, I'd love to find a more college-oriented Python textbook. If anyone knows of one...)

Another resource that you might want to look at and is FREE is the text How to Think Like a Computer Scientist - http://www.openbookproject.net/thinkcs/python/english2e/. Working through this and some of the other resources (like Penn State) will make it easier for you in the ESRI class.

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

2

-1 - This question was asking specifically for details about what people gained from taking courses, and how they went about learning python, whether on the job, or through a class. This answer would be more useful if, for example, you included what was useful about these courses, and why you suggest taking them. Simply providing a list of courses with no context, won't help someone else who may be searching for an answer to the same question.
– Get SpatialOct 15 '12 at 21:28

1

As a beginner to program I wanted to catch the simple but valuable tips of programming. I am following these three (online free) courses parallel, not for certificates but for the knowledge and gaining skills. The second course uses python 3, others use 2.7. The class schedule for introducing concepts is different in each. Although it is pretty cool chance to practice the same concept in many ways.
– SamanthiOct 19 '12 at 6:15

Like Fezter, I agree that the ESRI course would be of high quality. However I think that like most APIs, the ESRI model is nearly impossible to understand without a background in 1) object-oriented programming and 2) design patterns. I'm talking 'Rain Man tries to figure out Hu's On First' incomprehensibility. Even seasoned programmers without this background will have pretty much the same experience.

With any sort of formal training in these two areas, programming against ESRI APIs (and pretty much everything else) becomes quite easy without any additional training and this is a knowledges base that transfers well to other settings.

I guess my point here is that I would get a couple 100- level CS courses from a local college or something under my belt before anything else, or at least read some of the comprehensible great material published on these subjects.

I picked up this book about a year and a half ago (Python Scripting for ArcGIS) and found it to be very good as it is geared toward ArcGIS. I had picked up some other Python books from the library and found them hard to relate back to GIS. I do not have a programming background, but this book was quite helpful in going over the basics as well as info specific to ArcGIS.

It took awhile to plod through the exercises, but it gave me a good foundation to work off of. I found the best way to learn is to just go out there and try to make up some scripts. You sure do figure stuff out after you bang your head into a wall several hundred times!

Edited to add: I did take an ArcPy course that was more discussion than lecture and while it was somewhat helpful, I think learning it on your own (with a mentor, if you are lucky enough to stumble across one) is the best way.