No, kids, you probably don’t.

I used to be a terrible, horrible, miserable hobbyist programmer. I enjoyed it a great deal, but land-o-lakes was I dumb!

I learned out of books, most of which are still bending the shelves they sit on. A good programming book is a pleasure. It teaches you the principles and the basic moves. But, programming is fun because it’s so specific. You need to measure the length of a line displayed in a particular font, or you want to set the opacity of a circle based on its diameter, and the book you’re using just does not happen to hit those examples. The time I used to spent guessing and poking around was not instructive and did not build character. It was simply what you had to do when you were dumb.

I am still a terrible, horrible, miserable hobbyist programmer. But my ability to solve problems, and, yes, eventually even to learn, has gone up orders and orders of magnitude because of three inter-related things:

1. All problems only arise the first time in a population once. Therefore, most problems have already been addressed by someone before you. They’ve either been solved by someone else or, if there are no solutions, someone has already discovered that.

2. It’s now so easy to make your work public

3. The hacker ethos has resulted in superb developers making their work available as examples and as entire libraries.

The second and third together has resulted in an enormous and public repository of questions, answers, examples, and explanations. (For example, see Rebecca Murphey’s introduction to JQuery…and then consider the centuries of engineering time libraries like JQuery have saved us. (Hat tip to ReadWriteWeb for the link to Rebecca’s book.))

4. Search engines are so damn good that we can find our way through that gigantic, unplanned repository.

You know every single thing I’ve just said. Still, it’s just good to remember now and then how amazing it is that we all know this as if it were always so. Especially if for you it has always been so.