Richard Gabriel,
Paul Graham, and
Peter Norvig all have sites of
essays. Norvig has more technical stuff than Graham or Gabriel, but
all three collections are worth browsing. I've already mentioned Graham's
essays, but if you're unfamiliar with the other two: Norvig is Director
of Search Quality
at Google, but I know him better as the author of
The AI Book (together with Russell); and I first learned of Richard Gabriel
from his essay on the rise of Worse is Better,
which you can learn about
from his site. All three are also Lisp hackers extraordinaire, which is why
I was fishing through their writing.
I particularly liked Norvig's essay
Teach Yourself Programming
in Ten Years.
Exactly.
Norvig's essay is reminsicent of the one expressed by Keith Devlin
in his essay on staying
the course. The difference between the popular mis-understanding
of mathematics and of computer science as disciplines is that so many people
who know nothing of mathematics think that it must be inhumanly difficult,
while so many people who know nothing of computer science think it's possible
to become an expert in three days. Or perhaps thirty days at the outside.
Going through a formal computer science education, I've been told, is pointless:
you learn so many things that you'll never use! The same logic -- or lack
thereof -- would indicate that a professional carpenter really only needs a
screwdriver and a hammer, or that a professional writer in the English language
needn't be able to form compound or complex sentences. There is such
a thing as useless knowledge, which is either so contorted or so fundamentally
mistaken (or both) that it represents
a backward step with no potential for interesting development or discovery.
But for the most part, discarding a misunderstood tool as useless
is a sign or a certain lack of imagination.
You needn't be a professional to enjoy and appreciate either mathematics or
computation. In the case of computer science, in fact, being a computing
professional
or having a computer science degree seems to be surprisingly
uncorrelated with enjoying and appreciating computer science. There are a
variety of folks without formal CS degrees who are nevertheless highly competent
both as programmers and as computer scientists -- in fact, CS is a sufficiently
young discipline that most of the older generation of CS faculty can be held up
as an example of this. And there are also a variety of folks with formal
CS degrees who are nevertheless fairly incompetent both as programmers and as
computer scientists. If you spend all day sitting in front of a computer and
writing tedious, redundant code, you should really wonder: couldn't I make the
computer do this? But a lot of folks don't (or, rather worse, they do,
but they're overruled by management). Yes, in twenty-one days you can probably
learn to write simple programs. But that type of programming is no more the
end goal than summing columns of numbers is the end goal of mathematics, or
pounding nails into boards is the end goal of carpentry.
Take a look, too, at Mob
Software,
by Richard Gabriel. I think he has it right, too. And this
is the hidden potential of open source as a software model: that it can inspire
amateur efforts, in the original and best sense of an amateur
as one who
does a thing for the sheer love of it. Up with open source projects, with ham
radio, with mathematical puzzles and with the coffee mugs that children make for
their parents! The drive toward professionalism may make money, but the drive
toward amateurism makes things worth doing.