← Quora archive  ·  2010 Dec 08, 2010 02:34 PM PST

Question

I'm about to quit my job to learn to program. What should I do?

Answer

Wow! 25 and 100k. Impressive, if you earned it.

For starters, take 3 months off, wander around, drift, go to Jakarta, etc.

Re: programming: you don't know if you are going to like it enough to put in 10,000 hours to become truly good enough to both enjoy it and build killer s/w products that others will love (10,000 hours is the benchmark for "deliberate practice" hours needed to get truly good at anything).

That's 3-5 years before you'll be good enough to do stellar work. Unless you are a genius. In which case, don't listen to me.

Re: learning, at least 1-2 classes will help if you REALLY have no clue, but get involved in real projects as soon as possible, and in a way that builds your network. For example, start fixing bugs in WordPress the moment you know enough PHP.

And be prepared to discover that you are fundamentally not cut out to be a professional programmer. It took me 15 years and 1000s of lines of code before I discovered that (dumb, I know). I discovered that I was only interested in (and good at), write-once-use-once throwaway code of the sort used a lot in scientific computing. I was more interested in getting something to work once to validate/prove something about a non-programming problem, than in actually building robust products with tested, solid, built-to-last production code for others to use. Of the 3-4 core activities involved in becoming a real programmer (algorithms and data structures and other core CS stuff, learning practical hacking and sysadmin stuff, s/w engineering discipline skills like test-driven development, and "production" work like learning to deploy a production website), I only liked the first one. That made more a mathematician than a programmer.

That tends to be a common fault line. Another common fault line is between designers and programmers... somewhere along the way some people realize they like UX design or graphic design more than programming.

Test these 2 fault lines as early as you can. Maybe take a design/usability course and a math course in something like graph theory, to figure out what you actually like.

As for the 100k, for starters, give some of it to me. Then I'll make suggestions on how to use the rest :)