[Courses] [Careers] Rachel McConnell

Rachel McConnell rachel at xtreme.com
Sat Mar 5 20:58:33 EST 2005

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.


More information about the Courses mailing list