|
|
Posted: 8/12/1997 |
|
Page Views: 4,276 |
| Hashtags: #Autobiography #ComputerProgramming |
| How I became a computer programmer. |
| Estimated reading time: 9 minute(s) (2066 words) |
I suppose I was destined to come to no good end. When I graduated from high school in 1969,
everyone knew you needed a college degree to make a decent living. But I
dropped out of college not long after starting it, needing to support a wife and
growing collection of babies. So I worked at this and that—everything, actually,
from running a pest control route, to singing professionally, working as a radio
disc jockey, a sailor, and, finally, around 1978, as a fire control dispatcher
for the Florida State Division of Forestry.
That means, each day it wasn't actually raining, I had to climb a 100-foot
fire tower and stare at the horizon, looking for smoke. If I saw any, I had to
radio another tower to triangulate the fire's location and send rangers to it to
put it out.
Right away, it was obvious I didn't fit in. On rainy days, I would sit in the
office and while away the hours laboriously typing a novel on an old Underwood.
One day I was told by my supervisor that I had to stop writing while on the job.
"Why?" I asked. "I only do it when there's nothing else for me to do."
"It makes the rangers uncomfortable," my supervisor replied. "They don't
understand why anyone would want to write a novel."
I suspect it was the supervisor who was uncomfortable, not the
rangers. Either way, rescue was at hand. One day they delivered a big, bulky
teletype and set it on the floor in the radio room. We three dispatchers were
informed that, once each day, we would check our instruments, record the day's
weather, encode it, and use the teletype to transmit the information to a
waiting computer in Seattle. In return, the computer would calculate the
likelihood and intensity of fires for the afternoon; we could use that
information to gauge how many rangers to send to a fire and, for that matter,
how many could take the afternoon off.
The other two dispatchers were aghast. One had been a computer programmer in
the 50s, when that meant 15-hour days spent plugging thousands of little wires
into teenier holes. He had burnt himself out—actually had a nervous
breakdown—and ran, screaming, into the one career he thought would be safe from
computers. And now, here one was. He calmly informed the supervisor that he
would never touch the teletype, and they might as well plan on the other
dispatcher and myself doing it.
That was okay by me; but the other dispatcher turned out to have a problem of
his own. His name was Ralph, and he was a retired Army sergeant. Well—the Army
no longer paid him; but he took the Army attitude with him wherever he went. He
had made himself General of the office, spending his days designing unneeded
forms and chewing out the rest of us when we refused to use them.
Anyway, I discovered Ralph's problem the first day he tried to enter the
encoded weather. He had been at it for about 20 minutes—a job that took me less
than three—and I looked at the printout to see what was the matter. It turned
out that Ralph was entering the letter "L" instead of the digit "1". I pointed
this out to him.
"I've been using typewriters since before you were born," he snarled, chewing
on his ever-present cigar, "and I have always typed a 'L' for '1'."
"The computer expects a '1'," I shrugged.
"The computer will have to change, then," he snorted, "because I'm
not going to." He was still typing the same erroneous line an hour later
when his shift ended; and I was the one who transmitted the weather correctly
afterwards.
As for me, I had never suspected I might have a talent for computers because,
at that time, everyone knew you had to be "good with numbers" to work
with computers and I could barely remember a phone number long enough to dial
it. Still, I memorized the manual that came with the teletype and discovered the
paper tape recorder/reader. Using it, I wrote macros for the system that got my
connect time down to under one minute…something that caught the attention of the
Florida State head programmer, who came to visit. He wanted to find out why our
connect charges were so low. "They think you're cheating the system somehow," my
supervisor said. "If they find out how you're doing it, they'll probably have
you arrested." But the programmer knew I was getting the weather every day. He
just wanted to find out how. I explained the macros to him, and soon a memo went
to all the districts recommending they use my technique.
My supervisor was visibly upset. I had brought attention from the state
itself, and he didn't know what to do. All he knew was that I was obviously
trouble and needed to be put in my place, somehow, soon.
But I didn't care. I had a couple of years' VA college benefits coming to me
from my stint in the Navy; I had been saving them for when I had some idea what
to study. Now I knew. I quit the Division of Forestry and signed up for the next
term at the University of Florida at Pensacola.
While there, I discovered an old PDP-16 and found it irresistible, even
though my classes were in mainframe languages COBOL and FORTRAN. One night the
head of the Systems Science department found me working on the thing at two in
the morning. I didn't even know who he was. We chatted about my project, which
was a program that would convert BASIC code into COBOL. He was impressed, told
me that was "systems programming," and suggested I'd be right for a certain
co-operative education position in Washington, DC. A month later found me in
that position, coding PL/I and Assembler for the EPA.
It was a six month position, and man, did I learn a lot, from a group of
folks who were among the best programmers (and finest people) I've ever met. In
addition to bringing me up to speed on PL/I (which I hadn't yet studied), they
taught me a lot about the ethics of programming and even more about being
comfortable with being myself. Each of them was eccentric in his or her own way;
but, instead of letting their eccentricities embarrass them, they reveled
in them.
And they loved the fact that I wanted to write, and read and critiqued
anything I brought them, in their spare time.
Then I found myself back in school for another six months. It was a strange
time; because I had already learned at the EPA just about everything my classes
had to teach me—and more thoroughly. Finally I just took my remaining classes by
examination. Now, the only thing left between me and my degree in Systems
Science were two courses in Accounting, one in Statistics, and one in Calculus.
I made the mistake of asking the Calculus teacher what I even needed
Calculus for. He became livid, leaping to his feet in maniacal rage. "YOU
USE CALCULUS IN EVERYTHING YOU DO!" he screamed. "EVERY TIME YOU CROSS A
BRIDGE—EVERY TIME YOU ENTER A BUILDING—EVERY TIME YOU DRIVE A CAR!" I became
frightened that he would actually have a heart attack—I had never known what
"apoplexy" was before, but I was sure I had just witnessed it. And I still
didn't know why I needed Calculus.
Back at the EPA for my second stint, I met a guy who had a small consulting
business. He hired me to work part time for him. "Let me know if you want to
take a contract from me for $20,000 a year," he said. "Once you make $20 grand a
year, no one will ever offer you less." Everyone knew
that you can't have security as a consultant, but $20,000 a year happened to be
more than the head of the Systems Science department at school made. Suddenly, I
decided that I didn't need Calculus, and with $20 grand a year I could
pay an accountant. I dropped out of school—for the second time—and have never
looked back.
My friend was right. No one ever did offer me less; and, through the years, I
found my salary steadily increasing. An early job was with GTE Telenet; I was
one of six people who designed Telemail, one of the first electronic mail
systems. That job introduced me to Tandem minicomputers and I happily said
goodbye to mainframes forever.
It was on the Tandem that I discovered object-oriented programming, though I
didn't know it at the time. There were several library functions in the system
that made use of structures they called "control blocks". A function would
initialize a control block, and others were passed the structure as a first
parameter. Although it was possible to look at the structure, there was no need
to; the data and related functions were neatly encapsulated and I thought this
was a really cool idea. I wrote a series of enhanced functions (simulating
inheritance, I now realize) and created other objects ranging from trivial to a
full-blown report writer. Thanks to my love of writing, I actually documented
my functions (other programmers just stared at me uncomprehendingly) and so
was able to actually reuse them. I quickly gained a reputation as an incredibly
fast programmer; but, in truth, I didn't code any faster than anyone else. I
just didn't code as much.
When PCs came out, I bought one. For awhile I had PCs and Tandems talking to
each other. I was unimpressed with Windows 1.0, but 2.03 blew me away. I bought
Petzold's book Programming Windows
and learned, not only Windows programming from it, but C as well! From then
until today, I have coded for Windows exclusively, though I now use Visual Basic
and C++ rather than C.
I sold my first article to PC Techniques and eventually wrote four
books on Windows programming for that magazine's publisher, The Coriolis Group.
The last one led to my being asked to write for Windows Tech Journal and
that led to my being made Contributing Editor to the technical newsletter
then called VBX/OCX Journal, later called Component Builder.
Do I ever regret not getting my degree?
Not for a minute. I know some terrific programmers with degrees. But I know
more bad programmers with degrees than I know good ones. Apprenticeship
and experience, in my opinion, are far
more valuable than memorizing algorithms assigned by an instructor who has
never needed to use them outside of academia. As a consultant, I was paid large
sums of money to get stalled programming projects on track. In every case, the
project had stalled because some over-educated geek kept adding "layers" to a
complex project, trying to simplify it, until the thing was completely
unmanageable. Only real-world experience can tell when additional layers will
obfuscate rather than clarify…and, in my opinion, you can only get that
experience on the job.
So I have come to no good. I am the man that mothers shield their children
from: a professional who doesn't recommend Higher Learning. (I do recommend
junior college, for the general education.) What can I say? I got involved in
computers when everyone knew you had to have a math aptitude I lacked. I
left mainframes at a time when everyone knew they were the answer to a
secure future. I left Tandems at a time when
everyone knew minicomputers were taking over the industry, and starting
coding Windows when everyone knew
graphical user interfaces were "just a gimmick."
It seems that what "everyone knows" turns out to be wrong more often than
not. My advice: if you want to be right, listen to your heart. And the voice of
the heart comes from experience, not a university degree…or
from what "everyone knows".