\documentstyle[12pt,doublespace,fullpage]{article}
\title{Writing of a Different Sort}
\author{Greg Hudson}
\begin{document}
\maketitle

I've always wanted to do computer programming for a living.  I don't
remember deciding this; I just always have.  It can't have had much to
do with my parents, who are both in the pure sciences.  I don't think
it had much to do with peer pressure, since I was never really able to
discuss programming with anybody until I came to MIT.  Nevertheless,
for as long as I can remember, it's what I've wanted to do.

I must have learned about programming shortly after I learned how to
write.  I think I was no older than eight when I started playing
around with the old PDP-11 in my father's lab.  I mostly played games,
but I also learned a little FORTRAN---a little of how to get the
computer to do something I told it to do.  When my mother asked me to
show her how to write a text file on the machine, I showed her how to
write a program that would output the text she wanted to write.  I
thought that a program was superior to a text file.

Ever since, I've spent a large part of my spare time writing code.
I've written games, bulletin board systems, databases, computer
languages---dozens of systems, some trivial, some complicated, all
very different from each other.

In recent years, I have learned to write code not for the computer but
for other people.  I'm not so much telling the computer what to do as
describing how the system I've created should work; the computer
happens to understand the way I say it.  Sometimes I get frustrated
that the computer languages I use don't let me write something that
both a person and a computer can understand.  This is one reason I've
written my own computer languages from time to time.

Writing code for human readers is more than just a fetish, of course;
it means I can fix bugs and make changes to my programs more easily,
because I have to structure my code more carefully, and comment it
well.  I also have to limit my vocabulary; just as writing can become
impossible to understand because it is filled with jargon, programs
can become difficult to understand because of unclear variable and
procedure names.

I have learned that most of the programming world writes code very
much like history books or government documents: boring, custom
database applications.  I have avoided this kind of drudgery; what I
do is much closer to fantasy.  I like to make my own universes, my own
computer languages and environments.  Sometimes I share these
universes with others; sometimes I spend time in them by myself.  With
computers, creation is easy, reasonably quick, and exhilarating.

Destruction is even easier.  There are billions of lines of code out
there that do wonderful things and yet are completely useless.  The
programs were never really finished, or they don't do quite the right
thing the way it stands.  Their authors doesn't care about them any
more, and nobody else cares about them enough to pick up where the
authors left off.  You can never walk away from a program and expect
it to survive for very long; programs are very much extensions of
their maintainers.

Programs also die because no one ever documents what it does.  I'm
always careful to document anything I let other people use.  I enjoy
technical writing; in many ways, it is similar to programming.  Like
programs, documentation is a way of telling someone how my system
works; only now it's a description at a level that today's computers
can't understand regardless of how I phrase it.

But I don't really mind when code I have written becomes useless.
Whether or not a program I write improves anyone's life, it still
contributes to my experience.  Programming, for me, is very much a
matter of what I can do tomorrow, not what I did yesterday.

From time to time, I have second thoughts.  Just because I like
programming doesn't mean I have to do it for a living.  There are
plenty of things I do well, some of them completely unrelated to
computers.  I sometimes fancy being a librarian, like my older sister.
In the end, though, I never consider this option very seriously.
Computers have become an integral part of my life, and I can't imagine
changing that.

\end{document}

