March 94 - THE VETERAN NEOPHYTE
THE VETERAN NEOPHYTE
WHY WE DO IT
DAVE JOHNSON
In the interest of pushing back the boundaries of human knowledge in my own small way, I decided
to conduct a little survey via e-mail. I asked only one question:
What's so interesting about programming computers, anyway?
I sent out 87 letters and received 37 direct responses, a 43% return rate! This is a fantastic return
rate for a survey. As one respondent wrote:What an interesting survey! Getting hackers to talk about
themselves should be easy!
It was.
To alleviate your suspense, here are the top two reasons programmers program, according to my
survey:
1. Programmers like solving problems and puzzles. (49%)
2. Programming is a creative outlet. (36%)
In the survey itself I included some hypothetical answers to my own question, as follows:
Do you just like doing puzzles? Is it the money? Was it a horrible accident, and you were supposed to be a
doctor when you grew up? Is it because you're really an artist, and computers are the best medium around?
Is it because it's the only profession where you don't need to wear shoes to meetings? Is it because you get to
hang out with smart people?
Unfortunately, while this accurately conveyed my enthusiasm for the subject, it also completely
shredded any objectivity my survey might have had, and skewed the results sharply toward the tight,
square little box of my preconceptions. Note that the top reason appears in this list, and furthermore
it appears first. Coincidence? I think not. As one alert respondent pointed out, I even blurred the
important distinction between what makes programming interesting and what makes it a nice
business to be in. Sheesh.
Abandoning rigor and embracing whimsy, I decided to dump all the responses into one big text file
and do a word frequency analysis of the whole thing, logging how many times each word appeared.
Ignoring the common words likethe and the expected words likeprogram , the winner was problem, at
12 occurrences. Game came in a close second, at 11 appearances. Three words tied for third place, at
8 occurrences:fun, interesting, and think. Nowthis is a satisfying analysis!
Other frequently appearing words were these:puzzle, art, control, creation, enjoy, paid, challenge,
complex, efficient, god, high, hooked, money, music, play,and solving. Taken together, they make astrangely accurate mantra about what programming is like, and probably describe in a more complete
way than any individual answer why people program.
But let's look again at those top two reasons. In second place we have "Programming is a creative
outlet." That fact was mentioned over and over again, but creativity comes in many varieties, and it's
interesting to look at the metaphors people chose to describe the act of writing software.
Interestingly, they fell into three
very distinct categories: programmer as mechanic, programmer as artist, and programmer as God.
The similarities between computer programming and mechanical engineering may be deeper than it
seems at first glance:
I got hooked on erector sets when I was young.
-- John Powers
But if programmers are just frustrated machinists, then why don't they get up from their computers
and build real machines? Here's why:
On a computer, I can build an amazingly fantastic and elegant gadget, with thousands of working parts all
cooperating pleasantly with one another, and I never have to get my hands dirty.
-- Jeremy Nguyen
If you're willing to build your machines behind the glass of a computer monitor, to build them out of
logical stuff instead of real stuff, then suddenly the landscape of possible machines becomes
effectively infinite. You can build any machine you canthink of, and all those pesky, annoying details
like friction and inertia and tensile strength just fall away. For people who like to design machines,
and especially for those who aren't so keen on the grease and skinned knuckles, this is a powerful
attraction.
Other people chose to compare programming with creating art:
I'm not very good at art, but when I write something that works well I feel like an artist creating a piece of
artwork.
-- Kevin Mellander
My father is a painter, and I grew up watching him continually producing new artwork . . . Software is
just another medium, less messy, easier to change.
-- Fred Huxham
Programming is definitely a means of expression, and unlike other media software can simulate everyother medium; in Alan Kay's words it's ameta-medium. For those with an artistic leaning this is rich
ground, indeed: you can create your artandyou can create new ways of creating art.
My own favorite creation metaphor is programmer as God:
I like it because you can play God, albeit on a microscopic scale. It's hard to explain, but writing code is like
creating new life.
-- Dave Hersey
It is the closest I can get to being God (without lifetimes of sadhana). I get to sculpt a little "life-form" that,
while admittedly unsophisticated, has a satisfying degree of autonomy.
-- Corey Vian
Since software is something that's dynamic in time and semi-autonomous, it can fairly convincingly
imitate living things, in much the same way that machinery often can. But since the software
"machines" that computers allow us to construct can be orders of magnitude more complex thanmachines in the real world, their resemblance to life can be much more compelling, much more
striking.
The joy of solving problems (or thecompulsion to solve them, as the case may be) seems to be the
major reason people program. My favorite survey response of all sums this up nicely:
The reason I program is because I'm a compulsive problem solver and my computer is a never-ending source
of problems.
-- Craig Prouse
It's the twin meaning of "never-ending" that I love so much here. The fact that the problems never
end is one of those "both blessing and curse" features that computers seem to overflow with. On the
one hand, it means that we have an inexhaustible source of puzzles and problems to slake our thirsts,
but on the other hand it means that we can never really be finished, and like Sisyphus rolling his
stone up the hill, we are doomed to repetitive toil, solving the same kinds of puzzles over and over
again.
Here are some of the other reasons people gave, which didn't fall neatly into any category:
It's basically because I have all these ideas in my head, and a computer is the best way to get them OUT of
my head . . .
-- Jeff Barbose
Solving the problems is fun, but I must admit that I enjoy the company of the machine -- it's not every day
you meet somebody who will associate with you unconditionally.
-- Steve Beitzel
I program to get back at my senior year English teacher. I once got a bad grade on an English paper, and
she couldn't give me any concrete reasons why. She just didn't like it. The computer, on the other hand,
always gives me a reason why I'm incorrect. It's a game I play with my Mac . . . There are a bunch of rules
and it tells me (usually via a bus error) that I broke one.
-- Konstantin Othmer
It's the one thing in my life that is easy to debug.
-- Michael Weingartner
These last two hint at something else that I think might be important. In sharp contrast to the real
world, the world of the computer is reassuringly knowable. What this means is thatcomputer problems
always have answers. There is always a discoverable reason behind a computer's behavior, and I can't
help wondering whether this is one of the major reasons people get such satisfaction from
programming.
Most questions we ask about the real world turn out to be hopelessly complicated. How can we
improve the economy? No neat and tidy answer to that one. Why does your child love those
particular red plastic boots so much? That's not really answerable in any complete way. Why is ice
slippery? Why is the sky blue? How do birds know when it's time to fly south? None of these
questions have clean answers.
Ironically, though, there seems to be a basic human need tofindanswers. Look at the huge amount
of time and energy we spend trying to discover and proclaim truths about our world. Religion, art,
and science are all manifestations of the human desire to understand. So it's no surprise that
computers, with their fantastically complex but ultimately knowable behavior, are extremely satisfying
artifacts to spend time grappling with. Finding the answers can be enormously challenging, but
there's always an answer to be found:
It gives me one thing I *know* I can boss around.
-- Jim Luther
Amen.
RECOMMENDED READING
- Dreams of Reason by Heinz R. Pagels (Simon and Schuster, 1988).
- The Hidden Life of Dogs by Elizabeth Marshall Thomas (Houghton Mifflin, 1993).
- Tuesday by David Wiesner (Clarion Books, 1991).
DAVE JOHNSON's favorite book between the ages of 5 and 11 was the World Book Encyclopedia. Sometimes in the
early mornings, before anyone else was awake, he'd sneak out of bed, creep quietly through the dark and silent house to
the living room, and slip a volume from the shelf. ("M" is fondly remembered to this day: matches, monsters, motors . . . )
Stopping off in the kitchen for a stack of cookies, he'd make his way back to his bed, and stay there reading and
generating crumbs as the sun came up.*
Thanks to all the survey respondents and to Jeff Barbose, Michael Greenspon, Bill Guschwan, Mark ("The Red") Harlan,
Bo3b Johnson, Lisa Jongewaard, and Ned van Alstyne for their always enlightening review comments. *
Dave welcomes feedback on his musings. He can be reached at JOHNSON.DK on AppleLink, dkj@apple.com on
the Internet, or 75300,715 on CompuServe.*