Other than military service, technology has always been my chosen career path from the time I was in high school taking vocational classes to learn electronics tech and repair skills. In those days every science fiction fan was into anything high-tech, particularly electronics, and I was a huge Star Trek nerd.
Originally I expected military experience to enhance my initial electronics tech training but realized pretty quickly the sad reality was the military doesn’t use anything close to current tech – at least the kind you’d find in the civilian (i.e. consumer) sector. Unless I wanted to spend my life in aerospace and, by association, government work, I knew I’d have to start over when I was finished with my service.
It took a few years but eventually I made it into Engineering school at a good university. The question for me at the time was, should I follow the same track I’d been on up to that point by enrolling in Electrical Engineering for a BSEE degree, or do something new and go for Computer Systems Engineering for a BSCSE, a brand new degree program. I’d been tinkering with PCs and video games for years as a hobby, so the idea of making my living with them was too much to resist, and anyway the degree program was 40% EE and 60% CS. So CSEG it would be.
Those days you either wrote mainframe-type code (COBOL etc.) or you wrote in C and machine code on “open systems” (UNIX, Windows NT, etc.) and embedded systems (FORTRAN was only used as an introduction to programming course). I immediately disliked mainframe work, even their assembly code was horrid to work with, so I dived right in to UNIX and Win32 with the standard C library and BSD Sockets (TCP/IP) in my coding classes and my after-hours hobby. I absolutely ate it up. My years of working at the hardware level really made working in C and machine code click for me, closing the loop, so to speak.
So after working my way through undergrad classes, and also having lucked into an internship at the local IBM field office while attending school, I graduated and was itching to go. During those years, coding highly reliable and fast code close to the hardware was the big thing companies wanted. They were tired of their mainframe costs, and at the time SMP (symmetric multi-processors) running some flavor of UNIX or Windows NT were truly a bargain for back-end data crunching.
I had a blast working for Acxiom for 3 years developing custom multithreaded, networked server code doing all manner of data processing, job queues, billing systems, etc. while squeezing every last ounce of processing power out of the hardware and saving the company millions of dollars moving off their mainframes. But then I got it in my head I wanted to go to grad school and teach at my old university, and soon took advantage of a very generous teaching assistantship program they offered me. Those 3 years of graduate school and full time teaching were 3 of the most rewarding years of my life. But a teaching salary on a Masters degree wouldn’t even pay the rent, let alone my undergraduate student loans I still had. So, back to the professional world.
Microsoft in the early 2000’s was a great place to work, and other than IBM I had never worked alongside so many smart people, but even more of them and smarter were there at Microsoft at that time. I really fed off of the dynamic, being challenged by peers smarter than I was, and it was fun because, though it’s a large corporation, in those days the project teams felt like their own little startup companies. A lot of autonomy and innovation, kind of the wild west in a way. But the dot com crash brought most of that to an end, and soon Microsoft started feeling more and more like working for Proctor and Gamble (that’s an inside joke for those who were there at the time).
That, and technology was changing. I found myself writing code more and more removed from the hardware as time went by. Using C# and .NET is cool and powerful at first, but I got bored with it very quickly. Where’s the connection to the physical world? And what’s all the fuss about Java? Where’s the need for efficiency and robust design? I could see where things were going, so I took stock.
I started thinking about all those years of performance reviews where my manager always had a comment about how great it was I always did such fantastic documentation in addition to my coding work, but that I wouldn’t be able to apply that writing work and skill toward my career in any tangible way. Just an “atta-boy” to show for it. Hmmm… wait a minute. Can I get paid for writing full time?
Putting out some feelers, it wasn’t long before I found out there was a big demand at the time for writers who understood code, and better yet could write solid sample code. And C/C++ documentation and sample code was still in high demand. Perfect! So I was able to start my second career at Microsoft, this time as a Programming Writer, which was a special career track at the time for technical writers who were also good with code. In 18 months I was getting a level promotion to Senior Programming Writer and getting very high ratings. I’d once again found my niche where every day was a perfect work day.
But, as with all good things, this also came to an end. Slowly, like my software engineering career, but over the years it decayed into less and less “close to the hardware” work, as that end of the business went more and more out of style and thus, demand. And the culture at Microsoft was also changing, particularly when Bill Gates left and not long after, Steve Ballmer. It was the end of an era.
The new leadership apparently wanted to revamp the company, and I was caught in the largest layoff in their entire history. Something like 14,000 people over 6 months were let go, and I can attest that it had nothing to do with performance reviews. I almost made it to my 15 year anniversary there. I’m still a bit melancholy about it, the place had come to feel like home and even family by that time. The longest I’d ever kept at a single company in my life prior to that was 3 years.
Then a 3 year stint as a Senior Programming Writer at Amazon Web Services (AWS is their cloud computing biz). I decided that wasn’t the place for me and moved on. I’ve been taking short term contracting gigs ever since, all with Microsoft so far, and have enjoyed every one of them regardless of the content subject matter. I’ve been trying to find a full time position lately, looking for the right fit, but I enjoy the freedom and downtime of contract work too (though my retirement plan hates it).
Reflecting on my next career move, I think I’d be happy writing about any subject, as long as the pay was decent and the work steady. I think I made the right choice moving from software engineer to writer, at least in terms of passion and what I’m best at. But I miss coding and working close to the hardware. I’m also considering teaching again, I loved it so much for those three years I was lucky enough to get to experience it. So far I’m finding that a difficult field to find the right fit for me though. I can’t teach high school or below, don’t have the patience even if I had the certifications, and I don’t have a PhD for a full time professor position at a university. The local trade school seems to pay poverty level wages, so I think I’m caught in a sort of no-man’s land of teaching qualifications.