I got an iPod Touch in 20091 and wished from the start that I could write my own apps for it.2 I knew approximately nothing about coding, though, so it was a rather far-away sort of wish.
In grad school I learned to code in Matlab. It was a sink-or-swim kind of thing. With the help of another grad student, two books, the wonders of Matlab Central (and later StackExchange), and lots of practice, I learned how to write and debug programs.
My brother is a programmer, and by his standards I'm a hobbyist at best, but I can make the computer do what I need, and I've gotten better as I've gone. Still, he teases me about how I should learn a "real" language, and I kind of agree. So about a year ago, after listening to a Mac Power Users episode about learning to code, I bought a book about learning Objective-C.3 I got a little better than halfway through it before other things got in the way; it's one of the things I was planning to come back to this summer between grad school and job.4
Those summer plans may have just changed, though. A week or two ago at the WWDC Keynote, Apple announced a new programming language called Swift and I think I'm in love. I watched the demo and thought "I can definitely do this." I may finally be able to write the apps I wished for. There's an eBook about the language, which I've already started reading. Though it starts from "Hello world," I don't think it would be much help if you had no familiarity with programming whatsoever,5 but it does look promising for someone (like me) who has at least dipped their toes into the programming pool before.
So that's my next side project: learn another language, try to make an app (I have several ideas), and see how it goes. I'm excited to get started.
1: Nearly 5 years later, it's a bit sluggish but still kicking.
2: I was also bowled over by the idea that the device playing podcasts in my pocket had a bigger hard drive than my laptop's original drive: 64 vs 60 GB. When I stop to think about it, it still amazes me how powerful the gadgets in my pockets and bags are. And then I start feeling old…
3: It's a really good book, too: The Big Nerd Ranch Guide. My inability to finish it has much more to do with being an overwhelmed graduate student in need of "off" time for my brain than the quality of the book. I highly recommend it, and I think it's an excellent example of instructional writing.
4: Oh yeah, I accepted a job about the same time I was completely overloaded with dissertation and defense stuff. The defense is done, the dissertation is submitted, and though I wrote about the stresses and thrills of job-hunting, I guess never did mention here that I did accept an offer. More on that another time. Short version: I have a job starting in August and I'm excited about it!
5: This is actually the same gripe I have about the Matlab Getting Started Guide and books for "beginners." All of these say that you can start from scratch, but they usually assume knowledge and vocabulary that a first-time programmer may not have. (I'm looking at you,
Consider these programming languages like human languages: the Getting Started Guide might tell me how a verb is conjugated, but if I don't know what "conjugation" is, I don't know what to do with that information. If you've learned another language before, you've probably learned the meta-terminology already, and have some kind of structure for understanding this new set of words, sounds, and grammar rules.