What is a personal blog post if it isn't a snippet of autobiography anyway, right?  I've written about parts of this for my old web site (the one hosted at home).  I'm keeping this professional.  It is likely that I'll post this again at some distant point in the future, but with more detail.

For most of my professional life, I've been a computer programmer or computer administrator.  This is my story.

Small Beginnings

For an American, I grew up relatively poor.  At least the part of my child-hood after my parents divorced.  My mother couldn't afford a computer, and at had declared that they were nothing more than overpriced video game systems.  The point of this is I never had access to a computer in my home growing up.  To this day, I don't know if this is a benefit or disadvantage.

Two Things From School

In the 8th grade, I took a business class, and learned to type.  I had absolutely no idea at the time that this one thing would be the most important thing I would ever learn in school.  Everything I've done professionally, I thank Ms. Mason for teaching that class.

In high school, something else happened that would also shape my life, but I never imagined that it could.  A friend of mine got an Amiga 500.  These computers came with a BASIC language interpreter, and that BASIC interpreter could do simple (monophonic) music as well as a very basic text to speech function.  I actually spent hours in front of that thing getting it to do and say different things.  I was fascinated by programming.

I learned Mechanical Drafting on paper and AutoCAD, both in high-school and vocational.  I can't say that I never would have found a job in this field, but I can say that knowing how to type meant I was in a better paying job by the time I got an interview.

In the early mornings at the vocational school, I played with their IBM computers that would boot to a BASIC prompt, and wrote many silly little programs in my spare time.  I didn't own a computer of my own, and I just thought that putting in commands, and making the computer do what I wanted seemed like magic.  Either way, it was a game to me, and I never once thought that I'd have a chance to ever do anything with this.

I thought I knew at the time that "real programmers" could do a very different kind of magic.  I thought that computer programmers were Electronics Engineering majors that could write an entire functional program in their head, and type it out in binary without thought (this is what the movies taught me).  For the most part, this is still what movies teach, and that is too bad.

Office Work

About a year after I left school, I was able to quit my job in a K-Mart garden center for an office job doing data entry.  This was a friend connection job, as so many successful starting out stories are, and the only prerequisite was that I know how to type.  I took the job, at just under twice minimum wage at the time, and was doing so much better than I had at K-Mart that I thought I was set.

Several things all happened in a six month span that were all very amazing.  A roommate couldn't pay his rent, I had a very bad interview, and I opened my mind to new possibilities.

At home, my girlfriend at the time and I had a roommate for a while.  He was there for only five months total, but his helping with the rent was good.  Then, on the third month, he couldn't pay his rent.  Then, he brought home a computer, and suggested a barter.  I wanted it, and it was too easy to talk me into it.  It had a 286 processor when Pentium processors were already out (three versions old), and I reasoned that it could have been sold cheaply and handed down.  I knew then that it was probably stolen, and that it was wrong for me to agree to take it.  It came with MS-DOS, and had some programs on there that I had no interest in, and deleted.  For the first time in my life, I had a computer at home.

While doing this job, I got a job interview for a Mechanical Drafting job.  This is what I thought my path was, so I went on the interview.  I found out that the job payed 20% less than I was already making, and that they thought that they were paying generous wages.  Then, surprising everyone there (including me) I spent most of the interview time asking them about their technology and how it works (and even had some notes on how they could improve it).  The guy who ran the place told me that I probably need to be in the Information Technology field.  I gave up on the idea of using my vocational schooling at that point.

After not so long doing data-entry, I started realizing that most people who work in an office environment, in my area of the country, drove cars.  Even people in that same office, and same company, drove cars.  They were not fabulous cars, not necessarily even new cars, but I took the bus or rode my bicycle to the office.  So, I start looking at what these other people do, and I realize that they are all either computer programmers or computer administrators.  In my head, all magicians to be revered.

I started talking to the programmers here and there, and a couple of things started to strike me.  First, these guys knew more, but they weren't really smarter than I was.  Second, programming even relatively simple things took these guys a long time.  They didn't write in BASIC, they mostly wrote in C (I didn't know anything about C, but I figured that I could learn it).  I started asking questions.  I started reading technical manuals for the computer systems that they had.

Norman Bronstein worked there.  This guy was in his 60s (at the time), and loved to tell tales about when he used to work for Bell Labs in New Jersey.  He talked about technology, and handed me compiler software to load at home (this was pre-internet, I didn't even know this stuff could be purchased by mere mortals, and certainly wasn't aware of software piracy as a problem).  He bought me one of my first books on learning the C language...

Self Schooling

When people hear that I don't have a college degree, most assume that I must be some sort of savant.  The thing is, I've probably read more computer books, done more homework, and actually keyed in more examples than most people with four year Computer Science degrees.  What I'm missing, honestly, is Calculus and Trigonometry.  I can, however, do binary algebra with the best of them (and frankly, I've never once been asked to do the sorts of graphics processing that would require the math that I'm missing).

I started with nothing but my hobby background in BASIC, and went to the book store looking for a book on C.  Well, I started with a book that was well above my head, A Small C Compiler by James Hendrix.  I read a lot of it, but it talked so much about the limitations of computer internals that it probably did me more harm than good.  I realized that I was missing something fundamental but I wasn't sure what it was.

I then picked up a book on Intel Assembly Language (and a copy of MASM that Norm had handed me).  I read through some of this, and I saw a distant glow of possibility, but nothing really clicked.  I borrowed some other books from people at work, started reading those, too.  I just didn't really understand what I was looking at.  All of this, though, like the first book I picked up, did a lot of talking about what the hardware itself was doing.

My mother had a book from when she went to college called Digital Fundamentals by Thomas Floyd.  This is the book that made it all click for me.  It starts with binary algebra, and the CMOS logic gates that implements the binary algebra.  It talks about memory, and gate sets, and functions implemented in gate arrays, and finished on microprocessors, specifically calling out the 8088, the very set of Intel Assembly that I had been reading about before that.

I spent the next three months diligently writing assembly from my various books, going so far as rushing through the examples in Assembly Programming: For Real Programmers Only by Marcus Johnson, including the Windows examples, and excluding the device driver examples.

From there, I went back to the C books, but this time, I would compile the samples into Assembly so that I would understand what was actually happening.  After a few more months, I stopped reading and using assembly, and I started trusting what the compiler was doing.

Then, as a way to give myself a project, I wrote a Klondike Solitaire program, including graphics and mouse control (but no "win" detection) under Watcom C and DOS 4.  When it worked, I was amazed.

Meanwhile, At the Office

By way of recognizing that I was learning things about computers in general, I was hired into the computer operations group.  I did very well at this job, and it was a place where questioning everything, all of the time was not only encouraged ... it was rewarded.  I sometimes caught things that other operators didn't catch, and I know I made some enemies during this time.  I didn't mean to be hurtful, but I was cocky.

At one point, there was a general call to all of the computer operators.  There is a programmer job, and everyone is encouraged to turn in a program they wrote (executable and source code).  Except me, every person who applied had been going to the local college for Computer Science.  Except me, every applicant turned in their final assignment from the C class (a single user customer-service management app).  I ... turned in my lowly solitaire program, and I got the job!

Two weeks before my new job starts, I hear that Norm Bronstein was being laid off.  He was "too slow".  I will always feel bad about this.  This man had been a mentor to me, and I ended up replacing him.  I was a UNIX shell programmer for a few months, then I was a C programmer for almost a year.  Then, after I was put under a manager who had been in operations when I had been cocky, I ended up switching roles and working as a UNIX Administrator for a while.  Eventually I was a team lead over the operations team that I had previously worked in.

Then, after a rather scary change of management at that company, I decided to move to another state (the company closed 5 months later).  I had done a lot to train in one of the operations guys to do a lot of the UNIX Admin job that I was also doing, and recommended him as my replacement on the way out the door.  That guy got the job, for the little time the company lasted.

Legitimate Work

I had spent my first five+ professional years at a company where a friend of a friend worked.  Even my getting the programming job over the other guys could have been, at least partly, because of that nepotism.  I wasn't fully sure of myself, but I knew in my heart that I had some legitimate skills.  So, when I found myself in a new state, and a new market, I was worried.  I stayed unemployed for over six weeks, and finally got a contracting job running Linux systems (1,600 Linux systems), and I did fine.  I was there for 5 months (and I often don't list this on my CV).

At the end of that contract, I found a new job doing HP/UX administration and software support.  After six months, I started repairing laptops and picking up the rest of the IT admin work at this company (their only IT support was in another country).  I had one of those tough negotiations with my manager, and got the title IT Manager after 8 months.  While I was there, only sometimes with part-time employees, I started using Perl to do automation work.  I also did Oracle DBA work, and became certified in Progress 9 (another database).

At the end of my time there, the comptroller let me know that they were looking to outsource my job to an external IT contractor (I wasn't actually making that much, but they were looking to sell, and wanted to cut down the salary base pre-sale).  I was at this company for over six years, ending as the Director of IT.  Just before my end-date, I found a contract job as a Perl programmer.

At the end of a six month contract as a Perl programmer, I was hired full-time.  My job was Technical Team Leader.  I was a Technical Team Leader with teams of 1 to 4 people for five years, and then was promoted to Development manager.  I don't program or administer anything anymore.  It's been 21 years since this tale began, and I'm happy that I've made it to management.  Strangely, while I miss being "close to the metal" and doing stuff, I can also tell ... I'm slow and sloppy now.  Maybe I'm just out of practice.  Or maybe, it's the slow that was creeping up on Norm all those years back.  I'll never be sure.