September in (and out of) iOS
This month my intention was to continue the Udacity Nanodegree program. I think the learn-by-doing approach it takes is great, and usually works well for me. However, in a fit of frustration -- wrestling with NSRegularExpression for something that would be trivial in many other languages and forgetting about the .rangeOfString method -- I began to reflect on the overall experience and my approach to learning at this point. What were really my goals in becoming a better iOS programmer? I'm familiar with enough of the APIs and resources for learning, can wade through the docs if necessary, have built some toy apps, etc. So why the urgency to add more to the never-ending list of things to keep up with (in code, business and law)? What other stuff would get put on the backburner for a while?
Well, part of the problem is that the other stuff is never really on the backburner. I spend my days in Ruby and the browser, and absolutely love it, and my subway rides reading articles and keeping up with developments in the Rails world. People have their reasons for not using or liking Ruby or Rails, but the joy of coding in Ruby coupled with the productivity boost of Rails still makes it my go-to. If/when I need to deal with millions of concurrent connections and the other performance problems at crazy scale that many see as a drawback to using Rails, or the speed of the language is more important than my productivity with it, I'll reconsider. I've checked out many of those other tools - just enough to know where to start looking when a problem presents itself, and to improve my existing approaches (hopefully).
And so back to iOS, and really any new language, framework or library. Yesterday I quit the Nanodegree program since I didn't feel like it was materially pushing me forward as a programmer generally, or an iOS programmer specifically. Sure, the exercises are good and you need a guide beyond just the docs, Stack Overflow and Google. At the same time, I'd already done a lot of that stuff and know the areas I need to learn or improve. Plus, at $200/month for something they give away for free, it just didn't feel worthwhile to me. (No offense to those doing it and making the most of it, or the company for expecting to get paid for their work.) For those shifting careers or just starting out, go for it. But having an iOS Nanodegree isn't going to make or break my resume at this point.