Reading “On Becoming a Leader” has been really interesting, mostly because it suggests that a key differentiator of leaders is the vision that leaders provide, while others are content to be driven. Interestingly I have been spending a lot of time at work trying to determine what I should be trying to do… I have been asking a lot of people to try and understand what my role should be, but instead I should have been defining my vision. Coincidentally enough I’ve been working on a vision document around developers as a core customer base…
Thinking about my career path is interesting. I started software development in grade school. I wrote a math quiz program that we used for about 1 day in class. I wrote some interesting stuff in middle school; Snake Bit, a Nibbles clone – although at the time I was cloning Snake Byte, an Apple II program, and a GUI environment… although I may have wrote that closer to high school… In high school I decided that I was going into architecture and took several classes. Eventually I determined that I spent more time configuring and learning AutoCAD than I was learning about architecture, so I decided to continue down the software course.
I have worked a bunch of fastfood/retail jobs, but the one of interest for this story is Waldensoftware. When I left they had just been bought out by Electronic Boutique (now EBX). It was interesting to watch a brick and mortar bookseller like Waldenbooks run a software store… anyway, more on that later – the interesting note is that it was at Waldensoftware that I began talking with lots of software people. At the time Waldensoftware was a fairly book oriented store, so we got lots of actual developers in. Here I met Jim Flippin. He was a regular customer.
Years later (literally) I got a call out of the blue from Jim. At the time I was managing a mail order role playing game selling company (RPGI, which has sense gone out of business). Jim offered me a chance to interview at Microsoft, which I jumped at. I bought a suit, and showed up for interviews as a contract tester in the IT department. I barely got the job… apparently I only got 1 hire out of 4 interviews.
I spent about 6 months working as a tester. I read books on how to test software, I wrote a new front end to our test case management software and learned about T-SQL (since we were testing a database system). During this time I got to know the development team pretty well, and eventually they approached me about going full time and becoming a developer. I interviewed and got hired.
About 2 months later a couple guys started talking to me about starting their own company, and wanted to know if I was interested. After some soul searching I decided that if I was ever going to do it, now would be the best time. I have the least to loose. So, I quit Microsoft and joined Versametrix – although we didn’t think of that name for another week or so. Oddly enough, that was a couple months before my wedding… needless to say, my wife-to-be’s family was a tad bit concerned about me striking off on my own.
We spent about 5 months doing some pretty hard core development. We were building a relational OLAP system and I was the primary coder. I wrote in IDL, C++, VB, and some Java – although Java was somewhat new, and we weren’t to sure where that would go. We still had a lot of contacts in at Microsoft and we started to hear about some new developments in the OLAP space that Microsoft was going to be doing. We got a bit scared, decided that we couldn’t really sell our software to people if we didn’t believe it would last for years, and in the end I decided to return to Microsoft. Of course, with hindsight, I can see that not much came of the MS OLAP solution, and we could have competed fairly well. However, I was happy to return to Microsoft, as I discovered that I really missed the company.
I came back to MSFT as a developer in developer division working on controls in the Visual Basic group. It was odd… when I left MS I was just starting as a developer, when I returned I was seen as a junior (but not green) developer. The people at MS really respected that I started my own company, and the experience of doing it gave me a lot of credibility that college hires didn’t have. (did I mention that during my first turn at MS was when I decided to drop out of college?)
Anyway, the controls team split, I worked on Ironwood – which then became WFC, Microsoft’s Windows Foundation Classes, a Win32 library for Java that shipped in Visual J++ 6.0. That was an amazing time. We had a great small team working under a huge deadline. The team had originally bet on AWT, but we were unable to produce reasonably performant code and the AWT stuff was just too limited. We spent some time investigating AFC (another Microsoft Java library). That was feature rich, but was amazingly slow and hard to build tools on. In the end we decided to create our own framework. I say “we”, but I had no part in the decision. I was just along for the ride at that point.
After we shipped VJ6 (and then had Sun sue us, get enjoined, recalled product, etc, etc) the bulk of the WFC team moved onto working on the.NET project. At that time it didn’t have much of a name or identity. There was a lot of interesting discussions going on about frameworks and runtime libraries (like a new virtual machine for VB, etc.). The WFC team was part of the VB team at the time, and we had a whole new branch added to the WFC team that was focused on server development.
After a reorg or two, we ended up merging a bunch of teams, and moving over into what would become the.NET Developer Platform (NDP) team. We had two main pieces, the Framework team (FX) and the Runtime team (CLR). The WFC/Server team became the web services, diagnostics, server process, etc, team… basically a collection of feature teams on the FX team, while the WFC team became the WinForms team. We added the ASP.NET team, Net classes library (NCL), and the Base class library (BCL) team eventually.
We shipped.NET Framework 1.0 with a bang… well, a really long bang. One that started in 2000 at the PDC when we shipped Beta 1, but went on for a long time as we shipped finally in February 2002. Near the end of the V1 schedule I moved from a development lead on the team to a development manager – mostly because I don’t think anyone else wanted the job . I was managing a team of 40 people through a massive security push during the final 4 months of the product. It was a really fun and challenging task. Once we finished, I decided to go back to being a technical contributor instead of a manager, and was offered an architect position on the newly formed.NET Client team.
A couple of interesting notes – Microsoft loves reorgs. We reorganize teams all the time. I think it is one of the strengths of the company. When we finished.NET 1.0 we knew that we needed to focus more on customers, and the growing size of the framework. So we created separate product units for the server portions of the framework (ASP.NET) and the client portions (.NET Client). In addition, we moved a large team that was working in incubation mode into the NDP group. This is the team that has since produced all the GXA specs, and is driving web services for Microsoft.
The second interesting note is more of a sidebar: the title of Architect. I’m not sure how other companies treat this, but at Microsoft it is a kind of religion. There are huge proponents of architects and people that think they are fluffy big sky thinkers that can’t ship anything to save their lives. Real product team architects are somewhat rare – probably less that 5% of any development organization. I had always wanted to be an architect as a career goal – but I always saw it as something far off in the ether. I looked at someone like Anders Heljsberg as what an architect really was. This is someone that could ship product, has created multiple languages in his career, and can captivate an audience of any size. I feel that although I finally got the architect title, I was very much an apprentice. I hope that in another 10 or 15 years I can measure up to someone like Anders, Dave Cutler, Ray Ozzie, or any of the other architects in the industry.
After some time working as an architect on the Client team, I decided to move over to the core Windows Client Platform team. This group was working on the next generation of client presentation technologies (I avoid the word “UI” because of internal bickering between the “Document” folks and “UI” folks…). Here I began to really get a feel for how little of Microsoft I really knew about.
Anyway, that is it, in a rather large nutshell. Here I sit as an architect in the Windows Client Platform team, still an apprentice. Trying to figure out what I should do. I’ve been with Microsoft for over 6 years now. I still feel like a newbi. My recent introduction to blogs and the rest of the industry has made be very aware of the “ivory tower” that people always accuse Microsoft of living in.
My first and biggest passion has been learning. When I first got the opportunity to interview at Microsoft I was told this was a job working with SQL. So I went out and bought a book on T-SQL and taught myself as much as I could over the weekend. I am continually confronted with new opportunities to learn about things and I love it!
http://www.simplegeek.com/permalink.aspx/13