In a recent JOS post, an anonymous poster asked:
Where the heck are all of the good software engineering jobs? With good software companies? I'm not talking about a Crytsal Reports writer or business applications programmer/analyst or a stupid Access database programmer! I'm talking about C/C++ development of hardcore stuff like content creation, games, operating systems, utilities etc etc. I want to be on the team who makes Crystal Reports, Access, .NET, MS Windows, Adobe Photoshop, QuarkXPress, DreamWeaver, Norton Utilities etc etc..
Does anyone here work at these places? What does it take to get in? Can anyone else here identify with the "I hate business development stuff." It seems like all the fun stuff is gone or the positions are filled or some other such nonsense.
As someone who was fortunate enough to work on a couple of mainstream commercial applications, I can only respond, "it takes a career plan... persistence... luck... and skill."
So how did some midwestern hick debugging firmware at a process control company end up architecting a mass-market database package? It didn't happen overnight, that's for certain. I did it in stages. While at the process control company ("the O Corporation"), I started writing more and more code. I loved it. I wrote code all the time. Firmware. UI code for the color ISC terminal. I even wrote a VisiCalc-like spreadsheet for the PDP-11 (RSTS/E) for engineering calculations since DEC didn't offer one on that platform. Because I typed about 100 words-per-minute, I could crank out more code than most of the other guys. So I experimented constantly.
Interestingly, one of the reasons I left my first company was how I was treated. Even though my pay was abysmal, I didn't really mind because I made enough to live comfortably. I had amorphous goals for making more money, but nothing set in stone like, "I want to make $X my age 25 and $Y by age 30". I had been there several years when the pivotal event occurred.
My boss, Mike, at the time was generally a decent person but a tad reactionary and insecure. He was pissed about something and called me into his office. I walked in and he spat at me, "Sit down!" - everyone in that area of the engineering floor could hear it. I felt pretty low, almost like he was talking to a dog. But after a moment's hesitation, I obeyed and sat. In my mind, I was saying, "that's it - I don't need to be treated like a dog". I resigned in my head that day. And I had a real job offer a few weeks later and resigned for real... giving two weeks' notice. Of course, I never really told the president of the company why I was leaving. It was just very hard to describe that feeling of degradation.
That also taught me something about how I wanted to treat people if I ever got a software management job. For sure, I thought, life is too damn short to be treating anyone with disrespect. That goes for the president of the company down to the person who empties the trashcans. I've tried to abide by that philosophy. Anyhow...
I moved to PMC, the division of the Fortune 500 company. Rich Alden ran the Engineering group and was a very good leader. He was organized but not a micro-manager. He trusted his engineers because he had hired a talented group of guys. And they were fun people to be around.
Almost immediately after I was hired, our parent division ("Systems Division") received a huge contract from IBM for a large portion of a printer assembly plant. The factory control software fell on me, since I was the only Intel specialist in the place. It was a fantastic opportunity. I designed the real-time, multi-tasking OS, the scheduler, the controller, the user-interface (RS-232 to a terminal)... everything. It was a fantastic leanring experience and with my background, it was cake.
Systems Division in Cleveland and IBM in Charlotte seemed pretty impressed with the system. I met a wonderful project engineer in Cleveland: Topper Hill. A unique, funny character, Topper always wore a solid, bright red tie. Topper and I got along famously as we worked on integrating his mechanical pieces with the software. Topper took me to my first Armenian restaurant in east Cleveland and that was quite an experience. Ethnic cuisine at its best and the liquor wasn't bad either.
Unbeknownst to me, Topper was working on several projects, including one with folks from GMF Robotics in Detroit. A couple of the senior GMF folks were Jim Pelusi, a very bright Harvard MBA, and Hans Bukow, a Purdue master's grad. Both were confident, eloquent guys. Somehow, Jim and Hans mentioned to Topper that they were thinking about starting a software company. And they were looking for talent.
I don't know what Topper told them but the next thing I knew, Hans and Jim were sitting in my office at PMC in Cincinnati. They described their vision of a user-friendly system that would allow automated factories to be assembled quickly and easily. And they indicated that they had the connections to get the company funded. They wanted me to participate as a co-founder and help get the software off the ground. I would be the third employee.
I knew I wanted to work on more mainstream software than the "hidden glory" of process and discrete control equipment. I had a gut feel that this was one step closer. I told them I was "in". And within a period of a month, September 1987, I got married, started a new job and moved to Boston. No stress!
Even better, FASTech hadn't closed its first round of funding when the Stock Market Crash of '87 occurred. Talk about high blood pressure! To Jim's credit, his connections were solid and came through with a $970,000-or-so check just weeks later. They started hiring and selling; and I started coding.
Ever since Hans had expressed his vision to me... a user-interface that would make multi-tasking and real-time processing a breeze, I had a picture in my head of how it could be done. I mean I had it designed, completely. We had a few engineers there who either didn't believe that I could do it or that it could be done at all. One, Charlie, was a decent enough guy, but believed that I should "mathematically prove" that the system would work before I coded it up.
We would sit in meetings and I would listen to various suggestions, thoughts, criticisms mostly directed at me. I would listen patiently, nod, then grin. And then I would conclude the meeting with, "No". I was partially kidding, but basically I knew I could do it. Just get out of the way and let me work. It was innate. My meeting behavior was so negative that John and Charlie collaborated on the purchase of some "Doug-Bats". At the inevitable, meeting-concluding "No", they would beat me mercilessly with the foam bats. It was pretty funny.
I drank nine cups of coffee a day and typed 100 words a minute of raw C. There were days where I pounded out 1,000 lines of code -- all original -- in a day. I had to ramp down on the caffeine when my heart started racing at 100 bpm while lying in bed.
But within a year, we had shipped the first version of CellWorks (the product's name) to GM and Honeywell. It could be done, and we had done it. I must admit, though, that I was a bit let down after we shipped the product. I had created the flagship parts: the graphical UI, the logic engine, major pieces of the windowing system, and so on. I expected something. A promotion. A title change. A raise. A bonus. Whatever. Nada.
I started getting paranoid about the cost of living. I was making a not-so-great wage in Boston and housing seemed unattainable. My first child was on the way. Day-care would be unbelievably expensive. And I had heard nothing from Jim and Hans about a salary commensurate with my level and what I'd achieved. And other people were buying houses and seemingly getting ahead while I felt trapped.
I started looking around, working with Sophia Navickas (who now owns Lynx). I would heartily recommend her for anyone who needs a high-quality recruiter. I described what I was looking for in a new employer. She got me three interviews right off the bat:
1) with a minicomputer spreadsheet maker (I can't remember the company name, but the product was called 20-20). It was very popular at the time with DEC systems.
2) with Rational (not the CASE company), a very small development firm whose primary product was a C interpreter (seriously) for faster development. Compilers at the time weren't very quick.
3) with Alpha Software, a very small consumer database company with perhaps 18 employees.
#1 just felt wrong strategically. I hated DEC systems, loved PCs and felt DEC would be out of business soon. Shoulda shorted them when I had the chance. #2 had a great, friendly group of guys, but the product seemed too techie, too low-level. #3 had it all. A chance to work on consumer software. Small company, so a lot of hats could be worn by the right person. Richard and Selwyn Rabins, two very smart brothers -- both MIT grads -- were the principals. I got along very well with them. In my first interview, Richard had me cracking up with various filthy jokes. I think he was testing to see what kind of personality I had. No problem, I love filthy jokes.
So, Alpha it was. Consumer software. Finally. The company, through massive marketing expenditures, ended up selling a million-plus seats worth of database licenses. Pete and I got to architect a mass-market Windows database product. And it still kicks Access' butt in a lot of head-to-head computer mag reviews. Cian Chambliss is the head software guy now and he is a very talented developer. I'm still pretty proud, though, that we had a tiny development team compared to the hundreds of people and the reported $60 million that Microsoft spent getting Access 1.0 out the door. And we got it done.
So how'd I get there? Like I said. Career plan. Persistence. Luck. Skill. Damn, sorry... that's a long answer to a short question!