Don't Call Me Sir
I took a surfing class the first term after I transferred to
UC Santa Cruz. We took a
van out to this popular surfing spot called Pleasure Point
and paddled our boards around and try to catch rides on the
waves.
Naturally I would end up paddling over to where the best
waves were but I wasn't very good at it and the better
surfers would end up dodging around me when they caught
rides. At some point a boy of about twelve years of age
paddled up to me and said: "Please Sir, for your safety and
ours, could you go surf over there", pointing off to the
distance where I'd be away from the pros.
I bristled at this. My reaction was not so much
embarrassment at being scolded by a kid, but irritation at
being called "Sir" when I was just 21 years old.
I feel like an old man today. It's really got me
down. I'm
thirty-eight, and it usually doesn't bother me, but today it
does.
I've had paid employment as a programmer for fifteen years
now, all except a few weeks off and on. I programmed for
several years before that, in school.
I first learned to program in FORTRAN in 1976 when I was
twelve, although I didn't really get very far into it until
I took some community college classes when I was 16 - but we
programmed on punch cards on a DECSystem 10. We were taught
business application programming - an introduction in DEC
BASIC, then a class each in FORTRAN and COBOL. I still have
my decks.
Part of what's getting me down is something that I really
should feel proud of (and usually do). I've learned a lot
of important things to know about programming the hard way
and I've written
some
web
pages
in an attempt to
pass
on this
knowledge.
It turns out many of these web pages are very popular and I
get a lot of visits to my sites because of them. And I also
get a lot of email from young programmers wanting my advice
on how to advance themselves, and even from experienced
programmers wanting to go into consulting.
I'm glad these people look up to me and sometimes I even
feel honored, and sometimes I think I'm able to do some
good. But sometimes, like now, it makes me feel old. I
still haven't fully accepted the fact that I'm not a
teenager any more, but every now and then realization of
this pushes through the cracks, and then I have a day like
today.
My wife noticed me being very quiet at supper and asked me
afterwards why I was so sad. I didn't really know why but
she managed to worm it out of me. Then my ever loving and
supportive wife said "I'm not buying it". She suggested
that I was "wallowing in self-pity". She inquired whether a
red convertible and a trophy wife were on the horizon. She
forgot to ask about a toupee.
One of the things that gets me down is that I know a lot of
people think I'm a good programmer, but really I feel like a
fake. I know I've put a lot of work into improving my art
and I've written a lot of code, but honestly I don't think
I've got much to show for it. The fact is that I don't feel
I have much to show for all my work, and I'm not
particularly well off. I'm struggling just to get by, and
I've been struggling for a long time.
Sometimes when people ask me how they can be better
programmers, I want to tell them that programming is best
avoided, maybe they should choose some other career entirely.
Often I wonder if I have misplaced priorities. I know times
have been tough for everyone since Tulipomania came to an
abrupt halt, but even at the height of the dot-com frenzy my
first priority in my work was basically to ensure that I
worked out of my own home, never went into someone else's
office, and got to spend a lot of time hanging out in
coffeehouses in
Santa Cruz. The woman
who was to become my wife came to live with me then, and
instead of me slaving away for stock options in some Silicon
Valley cubicle, we spent a lot of time watching her dog play
on the beach.
I even left California in April 2000 and moved to St.
John's, Newfoundland to get married. Even when we moved
back to the U.S., it was to a rural town in Maine - far from
any high-tech centers, but we got a large house on nearly
two acres of wooded land with a big garage and everything.
Throughout my career I've been a real butthead about
choosing quality of life over employment prospects; early on
I'd quit jobs because I didn't want to commute anymore and
later on I'd quit because they didn't want to let me work at
home.
I've had a lot of wonderful experiences that most others can
only dream of, but what I don't have is any money in the
bank or any real achievements to feel proud of. I have
written some really cool code, but an awful lot of it has
fallen into a black hole when the companies either went out
of business or discontinued the products - one reason I want
to do Free Software is so that my work will have a life
beyond the company I write the code for.
Which brings me to the whole reason I'm still a programmer.
I wasn't too happy at UCSC, but managed to B.S. my way into
a programming job. At first it was part time, but then they
offerred me a full-time position, and I dropped out of
school. For quite a long time, I hated programming and
honestly I was really bad at it. I couldn't even type and I
would labor for weeks to write a 300 line command-line
program.
But then a visiting consultant installed GNU Emacs on our
Suns (16 Mhz 68020 systems with 4 MB of RAM apiece!) and
explained to me about Richard Stallman and the Free Software
Foundation. I read the GNU Manifesto. I did the little C-h
t tutorial in Emacs.
I wanted to write my own extensions to the editor, but it
was poorly documented at the time, so to figure it out I
started reading the Emacs source code. I ended up basically
dropping out of productive work for over two weeks, maybe a
month. One morning I noticed that I was feeling sleepy at
my terminal (9600 baud!) and realized I'd been sitting at it
for 24 hours straight without even taking a break to eat.
And then I had this realization. People could do things
with software that were really worth a damn. I had always
considered software a handy tool for engineering and science
and even business, but not as an end in itself. I didn't
think that any serious intellectual would waste his time
programming. At CalTech we called the
Computer Science majors "prostitutes" because many of them
intended to sell the products of their minds for money
rather than the advancement of pure knowledge.
But here was a glowing example of software that was a reward
in itself. And I had all the source code on my workstation.
I wanted to write something like that someday.
But first I had to get a clue about how to write code. My
education was in Physics, not Computer Science.. I started
by learning to type. My boss gave me this little DOS
ASCII-graphic video game he wrote where letters would drop
from the top of the screen and you'd shoot them down by
typing them.
Then I started to study. I would read Knuth's Art of
Computer Programming on the bus on the way to work. My
roommate and I had bought a Mac 512k a while back and I got
the ThinkC compiler and started learning GUI programming. I
started investing in good technical books, something I soon
realized was an immensely valuable thing to do, and
something I continue to this day - I've got a huge technical
library in my house now.
One I lamented to a friend that I had a really hard time
figuring out how to program. He replied "What are you
worried about? In ten years you're going to be murderous".
That was fourteen years ago.
Nearly every time I looked for a new job, I based my
decision mostly on how much opportunity I'd have to learn on
the job (except for when I'd get sick of the commute and
quit, and refuse to work outside of Santa Cruz).
Back in those days, computers has really severe limitations.
When I finally could afford to upgrade my Mac, I got first
one megabyte, then a second, of RAM. It was a pretty big
deal when I bought a 135 MB 5 1/4 inch full-height hard
drive - for $700, used! There are a lot of things that
people do now that you couldn't then, but people wanted to
anyway. So what people did was write tight code. That's
how I learned my chops -
my first shipping retail software
product sold for $29 or so and occupied eight kilobytes of
RAM!
My first job for a software company, writing code outside of
school, was for a company that developed a fully-implemented
Common Lisp environment that would run on 640 KB IBM XT's
running DOS - with room for the user's applications. For
some reason Artificial Intelligence was all the rage in the
computer biz at the time but all most people had was 16 bit
machines.
The way we did this was to use a manually operated virtual
memory system implemented in software, where we would
explicitly get and put eight-byte conses from and to a VM
manager with an eight megabyte backing store file. It was a
fiendishly complex program, and we were plagued with bugs
during development, but the product eventually shipped and
is now
available
as a freeware download. It even has a
MicroEmacs editor.
But now, on the day I feel so old, I also feel so
irrelevant. These skills aren't appreciated anymore. I
still pride myself on writing efficient, well designed and
reliable code, but what many clients want is code that may
be buggy, bloated, slow and hard to maintain - but they want
it yesterday. And I'm afraid I just can't work that way.
It not even that I won't - I don't know how to.
For a long time now I have felt that there is no future in
the kind of consulting I do, and I'm not sure where to turn.
I know it's important to keep studying to keep on top of
trends in the industry. I've spent years advancing my
knowledge of C++, but today I suggested to my wife is that
what I've really been doing is learning how to fashion
particularly elegant buggy whips.
And I still haven't written my great program. I've been too
busy just trying to survive. Maybe if I hadn't been so
obstinate about living in Santa Cruz for fifteen years, or
maybe if I'd got some hot stock-options during the dot-com
craze, I could be set now and be able to take time out from
my day job to write some really good Free Software.
It is only recently that I feel my skill has advanced to the
point that I am capable of writing the kind of program I'd
like to write. But I know many, many Free Software
programmers don't apprentice for fifteen years before they
set out to write something for the community - they have an
itch, scratch it as best they can, and post the URL at Freshmeat.net. Often their
code's not so good, but often it's useful anyway, and once
the source code is out there anyone can improve it. Maybe
that's what I should have done years ago.
But still - I'm sitting in Fortune, Newfoundland, visiting
my inlaws for over a month, with two laptops (a
windows/linux compaq, and an OS X iBook), and I've been
working out of my home for over four years. I'm married to
a wonderful woman, and we own a house in the Maine woods.
I've put a total of five weeks of onsite work at clients'
offices in this whole time, and I've only worked one
contract through one of those accursed agencies.
Life is still a struggle, but I manage my money much better
than I used to when things seemed easy (and I got myself
into this mess). It's going to be a while until I pay off
the money I owe, but at least I can make the payments each
month. The winter and spring of 2001 were pretty rough on
me and Bonita, but at least we got through it, and I've been
steadily employed for a year, and I just started work for a
second client who bought me this wonderful iBook.
That's a lot better than many people can say, and I'm
grateful for what I have.
I guess it's good to be an old guy. I feel bad for the kids
who are
just starting out these days.