I went to a Y Combinator Q&A last night and started getting frustrated when the audience almost completely shifted the talk to the problem of finding technical co-founders and how extremely difficult that is. Yes, it is difficult. More difficult, I think, than learning some of that tech yourself, which it sounded like most of these intelligent people weren’t trying to do at all. I can’t say I’ve bootstrapped a CS education (my little brother is completely dismissive of my allegiance to Rails), but I knew essentially nothing about programming last spring and have since learned enough to handle most of the tech for a live, social application. To me that’s proof that basic-level programming does not require any special type of mind, but just regular hard work.
At any rate, the talk prompted me to publish this post about learning to code (mostly) from the Internet. This is meant to be useful, not profound - I started it yesterday based on an email of links I sent to my roommate, who is just working on his first Ruby project.
Start with a book - I went on a family vacation last June during which I had almost no Internet access, but I brought along the SitePoint Simply Rails 2 book with me. Most of the time I was there I was impatient to get back to actually building my app, but in retrospect that week of slower, guided learning was much more valuable. Rails does a lot of magic for you, and up until that point the way I coded was mostly to hack away at something until it worked. Learning just a little bit of background on how the magic works saves you time overall.
If you don’t feel like paying for a book, I’d also recommend Michael Hartl’s Rails Tutorial, which takes you through making a Rails project along with version control on Github, deploying to Heroku, and testing.
Railscasts - If you ever bother to look carefully enough through Kommons.com, you might discover that almost all of the coolest things it does were at some point the subject of one of Ryan Bates’ 200+ Railscasts. They’re free (unlike Peepcode), usually under 10 minutes, and Ryan Bates has a lovely, soothing voice. I guess he’s a minor celebrity in the Rails dev community; the comments on his screencasts tend to be very positive, usually something along the lines of “OMG I love you Ryan!!!!!!!!!!!!!!”
StackOverflow - StackOverflow is extraordinary, I don’t really know how anyone finds anything on it, but you can post the most esoteric or stupid question and within the hour you will probably have an answer. They are kind of mean if your questions are especially stupid, but they give you an answer anyway.
Google - Occasionally, StackOverflow will fail you, or you’ll be so completely stumped by an error that you don’t know how you would pose a question, in which case my technique has been to cut and paste the error message you’re getting straight into Google. You’ll probably end up on the RailsForum (which I’ve never actually searched through myself, but come to via Google) and on a lot of Google discussion groups, but there are so many people trying to do what you’re doing that it’s likely someone has already written about your exact problem.
Docs - All the harder stuff is much easier to learn once you’re actually building, because you can instantly, intimately feel the reward of a deeper understanding. All the frustration you’ve built up from staring at error messages that don’t mean anything to you means that everything new you learn feels like a grand, personal discovery and opens up your eyes to the possibilities of what you can actually do with Ruby. So…what this means is diving into the Ruby docs and the Rails API, and looking up things like Enumerables, which you’ve probably been using for awhile without really getting, or ActiveRecord.
Github - If you’ve gotten to the point that you’re generally comfortable with Ruby syntax and the Rails MVC architecture, an interesting way to learn more is by reading through open-source projects on Github that have something to do with something you’re trying to do. You get to see the way a different person writes code and might see some patterns you want to repeat (not to mention lifting pieces of code straight into your own project - these programmers are pretty okay with that). Github search sucks a little bit, but you’ll probably be running into Github projects more than you want to during your countless Google searches.
I didn’t mention programmer-friends, since I was sticking to resources on the Internet, but working with someone IRL who can explain to you what s/he is doing is invaluable (shoutout to @jcn, @talsafran, @danielbachhuber, and the younger Ray, Lucas). I’ve also had some success changing my Gchat status to whatever tech issue I’m having, and having someone who’s online come to my aid.