Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site Glacier.ARPA
Path: utzoo!watmath!clyde!burl!ulysses!allegra!bellcore!decvax!decwrl!Glacier!reid
From: reid@Glacier.ARPA
Newsgroups: net.cse
Subject: Re: Where have all the hackers gone?
Message-ID: <1999@Glacier.ARPA>
Date: Thu, 20-Dec-84 13:31:24 EST
Article-I.D.: Glacier.1999
Posted: Thu Dec 20 13:31:24 1984
Date-Received: Sat, 22-Dec-84 01:54:57 EST
References: <3137@utah-cs.UUCP> <67@tove.UUCP>
Organization: Stanford University, Computer Systems Lab
Lines: 55

I am the professor who teaches the weedout course at Stanford. It is called
CS108, "Fundamentals of Computer Science". It is the third CS course that
people take here (after Intro Programming and Intro Algorithms).

I consider myself a pretty good hacker; I learned to program at the
University of Maryland 20 years ago by stealing access to the IBM 7094,
and I hacked for a living for 10 years before turning into a graduate
student and then a professor. I have written several million lines of code
in my life, and perhaps half of that code is still in use commercially. Here
at Stanford I amuse myself by doing system hackery on my two Vax Unix systems
when I get too depressed by dealing with whining students.

Let me tell you why I insist on teaching the weedout course, and why I
flunk about half the class.

Raw brain power is not enough. Raw programming skill is not enough. For a
person to be an effective software engineer in today's world, and for that
person to be able to continue being effective as he turns 25, 30, 35, or 40,
or older, he must learn more than just hackery. A student who wants to be a
successful wizard for the rest of his life, rather than just being
impressively smart for a 19-year-old, had better learn how to keep learning.
He had also better learn about the principles that shape the design of his
beloved favorite computer, and about the mathematics, physics, information
theory, and computer science that explain the boundaries of the world of
computers.

When I was at Maryland I was very scornful of some of the faculty because I
knew I was a better programmer than they were. In my 18-year-old view of the
world, I saw it as a complete waste that I had to take all these dumb
courses when I already knew more about the material than the person teaching
it.

Of course I didn't know more about the material, and I didn't have the
perspective to see that I didn't know the material. My vanity at being such
a good hacker clouded my vision for the big picture.

I am now 35, old for a hacker, and I can still get away with challenging the
students in my CS108 class to write a better program than me, or a faster,
or smaller, or cleverer program. Most of the time I still beat them, though
each year it gets harder. It doesn't get harder because they get better--it
gets harder because I get older and my kid gets older and I can't quite put
in the 12-hour marathon hacking sessions like I used to. Last year 2
students out of a class of 200 managed to beat my execution time in a speed
contest; one of them got an A- because he bungled the midterm.

So I teach the weedout course to make sure that students learn things whose
worth they cannot yet comprehend. My being a good hacker does not make me
any better at teaching the weedout course--its contents have very little to
do with hackery--but it enables me to get their attention while I make them
learn some computer science. A weedout course taught by someone who is not a
gunslinger like me is still a perfectly legitimate course, even if the
students can't see it yet. They will someday.

	Brian Reid	decwrl!glacier!reid
	Stanford	Reid@SU-Glacier.ARPA