How Do You Learn To Code?
It’s
been my sole focus to answer this question for the last two years. I’ve
noticed there are three strategies that successful students
consistently use better than anyone else regardless of what resources
they use:
1. Focus on habits, not goals
2. Learning alone is painful
3. Build things
1. Focus on habits, not goals
It seems
counterintuitive that you shouldn’t focus on goals, but hear me out—it’s
all about leverage. Anyone who works with me knows that I dweebishly
reference the R’as Al Ghul scene in Batman Begins pretty much 3-4 times a
day:
R’as tells Bruce:
“Rub your chest, your arms will take care of themselves.”
If you
focus on building the habit of programming for 20-30 hours a week, you
will reach your goal of being a web developer. If you focus on the goal
of being a web developer in X months, you get nothing from that but
stress and insecurity about how far along you are. Focus on the habit,
not the goal. Rub your chest, your arms will take care of themselves.
So here’s what you should do right now:
put 15 minutes a day on your calendar to spend time programming. Don’t
do more than 15, just focus on doing 15 minutes a day. If you can do it
successfully with no excuses for a week, try bumping it up to 20 minutes
a day. Don’t try to overextend yourself by doing an hour a day right
off the bat, this is going to be a 10,000 hour marathon so we’re
focusing on developing the habit right now. The number of minutes you
put in isn’t as important as you showing up each day.
2. Learning alone is painful
When I was
learning web development, the two biggest social components to my
learning were having a mentor and belonging to a community.
Having a mentor: I worked at a small startup called merge.fm
while in college. I learned more in the summer I spent working with one
of their cofounders than I did in the entire previous year at my
university. There’s just something about working alongside an expert who
knows more than you that really accelerates your learning, you’re able
to pick up on how they think and unveil what you don’t know you don’t
know. There’s a reason why mentorship used to be the de facto standard
of learning a new trade, it’s very effective.
Belonging to a community: For
me, the two communities I belonged to were the Illini Entrepreneurship
Network (a student organization at my university) and HackerNews (a
large hacker/startup oriented online community).
I didn’t
learn what objects and classes were from HackerNews, but I learned a
different category of things. I learned that nobody likes Javascript. I
learned that Rubyists are the hipsters of programming. I learned that
Bret Taylor, Rich Hickey, and John Carmack are programming gods, and
that software companies that are truly serious about coffee have
kitchens that look like meth labs.In short, I learned how to talk shop.
That turns out to be important when you’re working with other
developers, but it’s also the thing that makes you feel like a
developer.
3. Build things
In the first year of learning web development, I built:
- A Digg Clone (from a Sitepoint book on Rails, I believe it’s out of date now though)
- An E-Commerce App (from Agile Web Development with Rails 4)
- A GeekSquad-esque App (personal project)
- A Realtime, Online Classroom (personal project)
- A Foreign Language Flashcard App (class project)
I think building real projects is important for many reasons, but the most important one to me is because it’s fun.
That’s something that is tragically lost in classical education, but I
think it’s important enough to be on this list. Look for resources that
show you how to build things; http://ruby.railstutorial.org/ is a good one.
4. Be a cockroach
I secretly added a 4th item for those of you who’ve stuck around to read this far down the page.
Paul Graham once told the founders of Airbnb:
“You guys won’t die, you’re like cockroaches.”
You’ll
probably want to quit learning how to code at some point. Like anything
worthwhile, it’s difficult and will make you feel stupid at times. This
is why #1 on this list is so important—stop worrying so much about
whether you’re making progress or how much longer it’ll be until you
feel like you’ve “made it.” All you have to do is focus on showing up,
for 10-30 hours a week. Be as mindless as a cockroach about everything
else, and don’t “die.”
No comments:
Post a Comment