« Updates on recent posts | Main | Several ways to find "end of yesterday" in MySQL »

January 24, 2007

On learning to program (in 21 days or 10 years)

A few years ago Peter Norvig wrote a great article about how absurd it is —contrary to many popular titles—to learn to program well (or learn most other worthwhile skills) in less than several (ten) years.

I first came across this article when Phil Windley mentioned it a few weeks ago (I wish he'd written more about his perspective as a CS teacher). It got me thinking about my programming roots, and the several times I've taught programming to others. I realized I really haven't thought a lot about my programming background.

I started programming as a kid 25 years ago, on the Apple ][+ at the local public library. I spent a lot (probably too much) of my free time programming (AppleSoft BASIC, TRS-80 BASIC, 6502 assembler, Pascal, C) over 2-3 years, and off-and-on through my teens until I got my first full-time job as a programmer. Even though I haven't been a full-time programmer for most of those 25 years, I've easily programmed for a cumulative 10 years. Wow.

The thought process this article started helped me realize a few things (that may apply to other programmers):

  • I think about programming more than the average person (maybe more than the average programmer). Even when I've worked in other jobs, I tend to see many problems as programming opportunities (and can't understand how anyone could live with tedious manual processes). I've always been a "programmer-mailroom-sorter" or "programmer-network-engineer" or "programmer-NOC-manager" or "programmer-IT-manager".
  • I forgot a long time ago how I learned to program. My brain has been wired for "programmer think" for a long time, so I understand why teaching someone else to program and think like a programmer is a different effort than I'd expected.
  • Programming is something like riding a bike: the basic skills and thought processes that are tough to learn seem to stick with you, though they may need to be fine-tuned to the latest technologies.

    Probably a good thing I've gone back to programming full-time.

    Posted by pete at January 24, 2007 12:54 PM