When I first heard the idea of Codecademy and other online teach-me-to-code websites, my first reaction was to tell my friends “well, in a couple of months there will be a lot of disappointed people who thought it was a magic bullet, but still can’t actually write an app”.
Now I’m seeing tweets that prove it. The problem is that people got the impression that they’d be coding wizards at the end of the courses, and that’s not true. These sites are definitely a great way to see what coding is all about and to learn about some fundamentals so that when you do start building something, you have a good idea about where to start/what you’re looking at.
The only way to learn something properly is the hard way. The only way out is through.
The method that’s worked best for me, and that I recommend to anyone starting out, is to try to build something that you want to see made as your first project. You might fail, but you might also succeed. Either way, you’ll be learning in the real world, which is full of pitfalls, incompatibilities, and challenges, unlike parroting code back into a web browser.
I’ve been writing code since I was in 3rd grade. Basically, once I discovered programming, code became my LEGO blocks, and I’ve been building all sorts of (hopefully) useful apps ever since.
My first Ruby on Rails app was the first version of Hngry (which has now evolved to be an iPhone app with a Rails backend), back in 2006, and it took me crazy places. From that one app, I got job offers, flown to New York for meetings about it… it was crazy. I’ve released other apps to a whimper in the market. Sometimes you win, sometimes you don’t! Since then I’ve released numerous Rails, PHP, and iOS apps: http://shiftedfrequency.net and http://madewithsense.com hold links to most of them.
I didn’t do it alone, though. I was helped by kind people who had nothing to gain from helping me other than the good feeling of helping someone else. I had nothing to offer them.
I’d like to say thank you to a few of them:
Madeline Benjamin (primary/elementary school computer teacher, introduced me to the Apple IIe, IIGS, IIc and the Macintosh)
Ron Dupuis (high school computer science teacher, he pushed me further than anyone had before, and by the time I was a senior I was actually teaching the web development class at school)
Jeremy Cowart (now photographer to the stars, but then he was the co-founder of a web design/development company, he introduced me to…
Jeremy Pinnix, his coding counterpart at Pixelgrazer, who was very helpful in getting me pointed in the right direction as far as learning Ruby/Rails was concerned).
Erik Benson/Buster McLeod/Buster Benson (now at Habit Labs, when I “met” him he was over at The Robot Co-op, where he was a co-founder. His name has changed over the years, but he hasn’t seemed to, and that’s a good thing. Over an extended period, he patiently answered a ton of what were probably the simplest questions to him about Ruby/Rails, but that helped me greatly along the way.)
But I digress. I’ve mentioned these people above because I feel like the best way to learn to code comes down to this:
- Have an idea.
- Find out what you’ll have to learn to build it.
- Ask people who have done it before what books they’d recommend. (For Rails devs, I’d recommend the latest version of Agile Web Development With Rails. I built the first version of Hngry while working through the first edition of that book.. I even got the co-author of the book and creator of Rails, DHH to sign it when I met him at RubyConf, which was pretty awesome because that was definitely the book that taught me Rails.
- Work through the book(s) while you build your idea.
- Ask questions from someone who has done it before. They’ve been through it before and a lot of them are willing to help you out if you respect their time and ask direct questions. Don’t abuse the privilege, ask them when you’re really stuck, don’t understand a concept, and you’ve done the research.
I’d like to close with this: If you have a Ruby or iOS question and you’re at Step 5 above, hit me up on Twitter. I’m glad to help if I can. The people above helped me, and I try to help others in the same way.