Hackers and Painters
Hackers and Painters
html
May 2003
Both of these images are wrong. Hacking and painting have a lot
in common. In fact, of all the different types of people I've
known, hackers and painters are among the most alike.
I've never liked the term "computer science." The main reason I
don't like it is that there's no such thing. Computer science is a
grab bag of tenuously related areas thrown together by an
accident of history, like Yugoslavia. At one end you have people
who are really mathematicians, but call what they're doing
computer science so they can get DARPA grants. In the middle
you have people working on something like the natural history of
computers-- studying the behavior of algorithms for routing data
through networks, for example. And then at the other extreme
you have the hackers, who are trying to write interesting
software, and for whom computers are just a medium of
expression, as concrete is for architects or paint for painters. It's
as if mathematicians, physicists, and architects all had to be in
the same department.
What and how should not be kept too separate. You're asking for
trouble if you try to decide what to do without understanding how
to do it. But hacking can certainly be more than just deciding how
to implement some spec. At its best, it's creating the spec--
though it turns out the best way to do that is to implement it.
1 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
In the best case, the papers are just a formality. Hackers write
cool software, and then write a paper about it, and the paper
becomes a proxy for the achievement represented by the
software. But often this mismatch causes problems. It's easy to
drift away from building beautiful things toward building ugly
things that make more suitable subjects for research papers.
2 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
The only external test is time. Over time, beautiful things tend to
thrive, and ugly things tend to get discarded. Unfortunately, the
amounts of time involved can be longer than human lifetimes.
Samuel Johnson said it took a hundred years for a writer's
reputation to converge. You have to wait for the writer's
influential friends to die, and then for all their followers to die.
I've found that the best sources of ideas are not the other fields
that have the word "computer" in their names, but the other
fields inhabited by makers. Painting has been a much richer
source of ideas than the theory of computation.
For example, I was taught in college that one ought to figure out
a program completely on paper before even going near a
computer. I found that I did not program this way. I found that I
liked to program sitting in front of a computer, not a piece of
paper. Worse still, instead of patiently writing out a complete
program and assuring myself it was correct, I tended to just spew
out code that was hopelessly broken, and gradually beat it into
shape. Debugging, I was taught, was a kind of final pass where
you caught typos and oversights. The way I worked, it seemed
like programming consisted of debugging.
For a long time I felt bad about this, just as I once felt bad that I
didn't hold my pencil the way they taught me to in elementary
school. If I had only looked over at the other makers, the painters
or the architects, I would have realized that there was a name for
what I was doing: sketching. As far as I can tell, the way they
taught me to program in college was all wrong. You should figure
3 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
If universities and research labs keep hackers from doing the kind
of work they want to do, perhaps the place for them is in
companies. Unfortunately, most companies won't let hackers do
what they want either. Universities and research labs force
hackers to be scientists, and companies force them to be
engineers.
4 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
The other problem with startups is that there is not much overlap
between the kind of software that makes money and the kind
that's interesting to write. Programming languages are interesting
to write, and Microsoft's first product was one, in fact, but no one
will pay for programming languages now. If you want to make
money, you tend to be forced to work on problems that are too
nasty for anyone to solve for free.
All makers face this problem. Prices are determined by supply and
demand, and there is just not as much demand for things that
are fun to work on as there is for things that solve the mundane
problems of individual customers. Acting in off-Broadway plays
just doesn't pay as well as wearing a gorilla suit in someone's
booth at a trade show. Writing novels doesn't pay as well as
writing ad copy for garbage disposals. And hacking programming
languages doesn't pay as well as figuring out how to connect
some company's legacy database to their Web server.
5 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
Nearly all makers have day jobs early in their careers. Painters
and writers notoriously do. If you're lucky you can get a day job
that's closely related to your real work. Musicians often seem to
work in record stores. A hacker working on some programming
language or operating system might likewise be able to get a day
job using it. [1]
When I say that the answer is for hackers to have day jobs, and
work on beautiful software on the side, I'm not proposing this as
a new idea. This is what open-source hacking is all about. What
I'm saying is that open-source is probably the right model,
because it has been independently confirmed by all the other
makers.
Because hackers are makers rather than scientists, the right place
to look for metaphors is not in the sciences, but among other
kinds of makers. What else can painting teach us about hacking?
I think most makers work this way. Writers and architects seem
to as well. Maybe it would be good for hackers to act more like
painters, and regularly start over from scratch, instead of
continuing to work for years on one project, and trying to
incorporate all their later ideas as revisions.
6 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
7 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
8 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
When I was a kid I was always being told to look at things from
someone else's point of view. What this always meant in practice
was to do what someone else wanted, instead of what I wanted.
This of course gave empathy a bad name, and I made a point of
not cultivating it.
Boy, was I wrong. It turns out that looking at things from other
people's point of view is practically the secret of success. It
doesn't necessarily mean being self-sacrificing. Far from it.
Understanding how someone else sees things doesn't imply that
you'll act in his interest; in some situations-- in war, for
example-- you want to do exactly the opposite. [4]
One way to tell how good people are at empathy is to watch them
explain a technical question to someone without a technical
background. We probably all know people who, though otherwise
smart, are just comically bad at this. If someone asks them at a
dinner party what a programming language is, they'll say
something like ``Oh, a high-level language is what the compiler
uses as input to generate object code.'' High-level language?
Compiler? Object code? Someone who doesn't know what a
programming language is obviously doesn't know what these
things are, either.
9 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
You need to have empathy not just for your users, but for your
readers. It's in your interest, because you'll be one of them. Many
a hacker has written a program only to find on returning to it six
months later that he has no idea how it works. I know several
people who've sworn off Perl after such experiences. [7]
What we can say with some confidence is that these are the glory
days of hacking. In most fields the great work is done early on.
The paintings made between 1430 and 1500 are still
unsurpassed. Shakespeare appeared just as professional theater
was being born, and pushed the medium so far that every
playwright since has had to live in his shadow. Albrecht Durer did
the same thing with engraving, and Jane Austen with the novel.
Over and over we see the same pattern. A new medium appears,
and people are so excited about it that they explore most of its
possibilities in the first couple generations. Hacking seems to be
10 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
Notes
[7] The way to make programs easy to read is not to stuff them
with comments. I would take Abelson and Sussman's quote a
step further. Programming languages should be designed to
express algorithms, and only incidentally to tell computers how to
execute them. A good programming language ought to be better
for explaining software than English. You should only need
comments when there is some kind of kludge you need to warn
readers about, just as on a road there are only arrows on parts
with unexpectedly sharp curves.
11 of 12 18/08/22, 12:49 pm
Hackers and Painters http://www.paulgraham.com/hp.html
Knuth: Computer
Programming as an Art
12 of 12 18/08/22, 12:49 pm