How not to teach yourself to code

Why I should have attended a bootcamp and not self-teach myself (but since I did, the ordered list of resources I think you should use if you choose the same approach).

James Dong
5 min readFeb 26, 2014

For two reasons, I wanted to get my hands dirty with code:

1) I believe employees should actively work on projects outside their specialized field in order to:

  • Break siloes & facilitate communication
  • Improve goal-setting (avoid situations where the business guy thinks a feature should take a day when it actually requires a week)
  • Broaden ownership & therefore increase intrinsic motivation

2) The best way to meet potential developer co-founders is to join the community as a fellow hacker and work side-by-side with them.

Trying to save as much money as possible for the unknown future, I taught myself (see list of tutorials & reviews below). But reading tutorials and watching videos confirmed something that I knew about myself when I fell asleep in every class I visited for a potential MBA program—I’m not ready to return to academia. When you’re learning not for the sake of learning, but to get something done ASAP, I believe there are two stages:

Stage 1 — Getting the basics down by pushing yourself to do something you suck at every day. Example: how to develop a basic Ruby on Rails application by setting up RESTful routes and a clean MVC design. Keywords: painful, chore, laborious, ugh

Stage 2 — Picking up incremental skills on an as-needed basis. Example: how to add specific features like a contact form into the Ruby on Rails application. Keywords: interesting, motivated, productive, cool

I can’t do Stage 1 in isolation. I spent 3 days trying to watch one 6-hour vid-cast (Youtube videos every other minute). What I learned in 3 months I think I could have gotten in 3 weeks. I need the energy of other students, the formality of homework, and the constant over-the-shoulder presence of an instructor or mentor. And so I should have shelled out the big bucks to attend a bootcamp.

But it’s a bit late now, when the opportunity cost of continuing to learn has dramatically increased. As a result, even though I’m finally “doing” it, I spend 50% of my time on StackOverflow feeling like a baby turtle trying desperately to reach water before the rays of hot sun bring death. The DIY route has essentially locked me into a sub-junior-dev type role where I essentially have to find a co-founder or outsource to build a full-fledged application.

Of course, this is not a commentary on the quality of self-taught tutorials, just of my learning preference. For those of you who can do Stage 1 by yourself, I salute you, and I hope my recommendations below will help.

Note, I had to do multiple tutorials, so the below is somewhat an ordered list (but only somewhat—realistically I probably needed to draw a matrix of usefulness vs. easiness)

1) Learn Ruby on Rails by Daniel Kehoe

This tutorial is short, simple, and to the point. While there is overall a good balance of conceptual “how it works” with practical application, I would like the conceptual to have been more mixed in with practical application—as it stands, writing the application starts in Chapter 9. Great positive is that unlike most other tutorials, this book goes in-depth on explaining key components of application programming, such as how Git, Zurb Foundation, Gems, RVM work.

2) Ruby on Rails Tutorial by Michael Hartl

The de facto standard by most Rubyists. The only reason that it’s not first is because Hartl jumps rapidly into programming, without introducing some key concepts sufficiently (at least for me) to not have the student be completely frustrated when some element of configuration doesn’t work and they can’t proceed. Unlike every other tutorial, Hartl really emphasizes test-driven-development/ behavior-driven-development which is one of the best parts of the book (yes he overdoes it, but it’s only so that you’ll really learn how to do it). If this is too difficult to go to next, jump to #6 and #7 and come back after.

3) Learn to Program, 2nd Edition by Chris Pine

This is great, the explanations are very simplified and very clear for majority of topics. A little trickier on the advanced stuff, where I feel like the explanations could use some improvement, but overall a great book.

4) UT Austin Rails course by Richard Schneeman

Has some great visual diagrams and effects that break down the concepts and make it easy to understand. However (and he has admitted this), because this is shortened/ adapted from a college class, at times the material moves very fast with little to no “build” and the homework challenges can be quite challenging.

5) Ruby Kickstart videocast

Lessons seem far too easy compared to the homework assignments. Would appreciate more of a step by step breakdown on each lesson on how to tackle certain problems so that homework assignments can actually be done. Also, it might be helpful in general to have one overarching problem as the problem that the student is always trying to solve, and then each lessons introduces additional “elegance” to the original solution.

6) Rails for Zombies

I like how the presentations animate the code and physically move it around on the screen so that the user clearly sees how it relates to other code or output. However, this lesson seems to be more geared toward a basic introduction; at advanced concepts, the explanations are less thorough and clear. Further, exercises are far simpler than lessons, which is a huge detriment because practicing is how you learn. I need exercises on how to run complex redirects & lookups, for example, and yet at that chapter, I’m getting exercises on how to create a resources line. There’s a large disconnect if a lecture has a lengthy bit of code, but the challenge requires you to write two lines. If you’re doing this after #1-5, it’s likely super simple, and you can challenge yourself by predicting answers.

7) Codecademy — Ruby

The explanations are very clear, but this is again more tailored to a basic introduction. The exercises are also far easier than lessons, there shouldn’t be instances where lectures are huge blocks of code, and exercises are a couple of lines. I feel like the exercises repeatedly drone in the basic concepts, but not the advanced concepts (yes, even in the more advanced lectures). Also, to be clear, learning Ruby does not mean you will be able to write a Web application (Rails is the framework to do so). If you’re doing this after #1-5, it’s likely super simple, and you can challenge yourself by predicting answers.

This blarticle was written in the context of building a product that helps people borrow occasional-use items (e.g., sleeping bags, electric drills) from their friends & neighbors. Check out the prototype here.

--

--

James Dong

Does ‘buying’ have to be the economic bedrock? What are alternative models that are more productive & equitable? Formerly @BainandCompany & @Cal