This is an archived course. Information may be out of date, some links are broken and email addresses have been removed.

20 Rachel McConnell

Hi All,

I'm in the US and have lived here all my life. I'm 36 now and have been
making a living with computers for about 5 years. I had been interested
in computing as a child and teenager, but pursued other interests for
many years before starting to learn programming seriously. I've never
had any official training outside of one high school class and one
week-long on-the-job training session. Here's how it all happened, in
vast detail!

I have always been good at math, and was encouraged in this by my math
professor father. At maybe age 10, I heard somewhere about computers,
and lobbied hard for a Commodore 64 which I eventually was given. I
wanted to try to program it, but I couldn't think of anything
interesting to make it do! I had never heard of computer games or I
might have tried to program a game, and nobody I knew had any interest
in or knowledge of computers to get me going. I did a little
experimentation with making it play music, and I did learn a lot about
sound waveforms (which oddly came in useful many years later), but I
eventually gave up on it.

In high school I did a lot of advanced mathematics, and presumably for
that reason was recommended to take an experimental programming course
on the school's first DOS computers. This was in 1985 (or possibly
1986). We learned BASIC and Pascal, which I liked a lot, but again I
wanted the machines to be able to do something useful or interesting.
All the assignments were for things like, calculate a Fibonacci sequence
to N digits. Otherwise I pretty much hated high school, and did mildly
obnoxious things like correct my English teachers' grammar.

The summer after I took that course, I got an internship at a government
agency where I encountered a graphical UI for the first time - I think
an early version of Windows but I didn't have the concept of OS yet so I
don't really remember. I learned Lotus 1-2-3 and how to program macros
for it. A spreadsheet program was very clearly useful, and I really
enjoyed working with it. I was given a lot of encouragement by one of
my bosses there, a woman, who handed over to me a large spreadsheet
program that she had been maintaining. I told her I couldn't possibly
work on this program, it was large and intimidating (I have no
recollection of what it did) but she laughed and said, you'll do fine!
And then she quit, and I DID do fine, to the point where I got all the
changes made well before the internship was to end and they had to make
up other things for me to do.

At this time I was also doing many other things, notably learning how to
design and make my own clothing. I didn't want to go to college because
I had hated high school so much, so intstead I got a job at a large
fabric store. Soon after I started, the store implemented a
computerized inventory system, and I ended up being the administrator of
it. This was a Unix machine, and I learned all of "ls" and "cd" on it.
I was the most computer-savvy person there, I had my own office, and
all I had to do was about an hour of work every week entering in cash
register receipts. If I'd had any inkling of where to go to learn more
I might have (for some reason I didn't think of the library, but am not
sure there would have been much there anyway) but as it was I got bored
and quit after only a couple of months. I'd spent most of it napping on
the floor with the door locked, as I also discovered Going Out At Night
during this time.

From then on I did less and less with computers. I moved around the
country doing various clothing- and fashion-related things, opened and
closed two businesses, did a fair amount of world traveling, and ended
up in San Francisco in 1999 working for an advertising agency. I
learned a lot on their computer systems, primarily as a user. The
office workers, of which I was one, had Windows boxen, and the graphic
artists had Macs, and I picked up quite a bit of user-knowledge on each
system. I became friends with the office IT guy who was a hardcore PC
gamer and played a lot of Diablo and Starcraft, and learned a bit of
sys-adminning from him, like (gasp) how to install programs!

In early 2000 I met my SO, Matt, who was then (and remains) an
incredibly talented programmer and all-around geek. He had two or three
computers at home, and taught me basic HTML, then Javascript, etc - I
had a ball making webpages and doing weird graphical Javascript stuff -
this was finally something interesting to make the computer do! I also
picked up a bit more Linux ("more") as his webservers were all Linux,
although his desktop machines were all Windows; and I learned how to put
a computer together FROM PARTS, very exciting!

I quit the ad agency job and Matt quit his job with the idea that he
would get a different job that would send him Somewhere Else, as he'd
only been out of the States once for a relative's wedding in Korea, and
I would go with him and we would just see what happened. For various
reasons, this never happened, and we both ended up working at a
consulting company that specialized in telephone applications, he as the
CTO and me as a web programmer. They taught me VoiceXML, an XML flavor
for writing phone-based speech recognition applications, and got bought out.

Matt & I still wanted to travel, so instead of keeping jobs at the new
company, we started our own consulting company, staying in the telephony
application space since we had such recent experience with it. We found
a client who paid us a nice deposit on a project, and we promptly flew
to London thinking we could write the application while traveling around
Europe. You will not be surprised to hear that this did not turn out to
be as easy as we'd thought, and we ended up coming back to San Francisco
after only a couple of weeks.

We did complete the project successfully, got another client, and
another. VoiceXML applications are highly analogous to HTML pages, with
the server serving VoiceXML to a (usually hosted) telephony browser,
which provided the connection to the telephone system. I started
learning Java to be able to write server-side code to make dynamic
VoiceXML pages. I also wrote a couple more websites on the side, for
fun, and some of our clients had corresponding websites and some of them
wanted us to write the websites as well as the voice sites. I learned
about managing clients, practical linguistics, voice UI design, audio
processing, and directing voice talent.

One client was a carsharing organization with a problem: they had a
website reservation system that had been built at great expense by a
single contractor using very old and sidelined tools, and they were
outgrowing it by leaps and bounds. We were both getting tired of
VoiceXML programming at this time - it's a B*TCH to test phone apps -
and we decided to branch out into reservations software. We liked the
idea of getting recurring revenue from a hosted service. We wrote a web
application to handle just about all of the needs of a carsharing
organization and started trying to get more customers. I learned to
manage web servers on Linux (although nothing particularly
distro-dependent) and got familiar with a number of open-source Java
tools & libraries such as JUnit, ant, WebWork (and Struts), Hibernate,
and others.

We spent two years working on this reservation system, while continuing
to do a number of phone applications to pay the bills. Unfortunately,
at the end of this time we still had too few clients to break even and
not enough prospects to believe we'd be able to break even within
another couple of years. After four years in the consulting business we
are reluctantly shutting down :( Matt has a new job he is delighted
with, but I am staying on a bit to maintain the application while our
remaining customers transition to new providers. And this is the
situation at present.

Looking on the bright side, I've got a bit of spare time these days (a
huge change from the past 4 years) and I'm planning on working on one or
more OSS projects. I recently wrote a plugin for a particular wiki to
grab data from an OSS project management tool (called XPlanner), via
SOAP, which was a blast. I'll likely do some work on XPlanner as well
as there are some features I would like it to have that don't seem to be
in the development pipeline.

One thing I find of note is that I don't have a good idea of my skill
level against anyone except my SO. He's been programming for about 15
years, and I for only about 3-4 even counting my tiny high-school
experience, so I certainly don't expect to be at his level quite yet.
But I don't really have anyone else to compare myself to; all my
programming experience has been within this two-person company. I think
to some degree, as I get more into the guts of XPlanner and/or other OSS
projects, I will be able to judge my code against theirs and get a sense
of how good I am from that. I am looking forward to working with other
developers, though, on a day-to-day basis.

Rachel