« Clojure's missing piece | Main | How becoming a pilot made me a better programmer »

Recipe for a great programmer


  • Books for a computer science curriculum from a top university
  • Computer
  • Headphones
  • Internet
  • Stress ball
  • Pillow
  • Lighter fluid
  • Food


  1. Cover computer science books with lighter fluid
  2. Light books on fire
  3. Use flames to cook an energy-rich meal for the thousands of hours ahead
  4. Pick an editor
  5. Choose a project beyond current capabilities. Good ways to push boundaries:
    • Unfamiliar domain (e.g. large scale data processing, UI programming, high performance computing, games)
    • Exotic programming language
    • Larger in scope than any project before
  6. Shut up about your editor
  7. Attempt to build
  8. Stop procrastinating on Hacker News
  9. Re-attempt to build
  10. Squeeze stress ball and scream into pillow as necessary to keep sanity
  11. When stuck:
    • Paste stack traces into Google
    • Find appropriate mailing list to get guidance
    • Realize that real learning happens when you are stuck, uncomfortable, and/or frustrated
    • Seek out books, classes, or other resources AFTER you have a good understanding of your deficiencies
  12. Repeat #4 to #10 for at least 10 years

Results guaranteed! (to the same extent static types guarantee bug-free programs)