Hi everyone. I apologize for dropping off the face of the planet these past few months. I had to take a break from everything in order to recover my mental health after the extraordinarily stressful experience of working for Microsoft in the year after they acquired Danger, my former employer. I've been working on a couple of pretty interesting projects, including the imminent completion of a hobby project that I've been working on for the past 10 years, which I will write about as soon as I finish this post. But first, I want to post a few thoughts about my experiences and lessons learned from my unexpected and unplanned year of working for the Borg.
I can sum up the experience of working for Microsoft in 2009 in one word: embarrassment. For such a large company, with so much money and so many smart people working there, the lack of any high-level organization, coherent technological vision, or any semblance of "best practices" in software engineering was quite disturbing, and I was unprepared for the chaos that beset Danger almost immediately after we were acquired, hoping that the Microsoft corporate brain damage would not infect our organization as completely and as rapidly as it did.
The disorganization, the frequent delays due to broken tools and broken servers (for SharePoint, email, source code control, etc.), and the extreme and constant pressure from management to try to force the team into meeting completely unrealistic schedules (particularly considering the poor quality of the Microsoft tools we were forced to use), were the cause of a great deal of misery suffered by our team, but the primary reason for my resignation was the completely miserable and unproductive experience of being forced to develop for Windows CE, the OS foundation for Windows Mobile.
In my professional opinion, Windows CE is easily the worst embedded OS that I know of. I used to think that Symbian OS was weird and clunky (I did some Series 60 development for a startup before coming to Danger), but now I would happily write code for Symbian or any other mobile OS, knowing just how much worse the Microsoft alternative is.
I would therefore not recommend for anyone to buy a "Windows phone". After working extensively with Windows CE and the Windows Mobile telephony stack, I don't trust the quality of the code for anything as mission critical as a mobile phone must be, and therefore I can not in good faith recommend Windows Mobile to anyone, especially when there are so many other great choices these days.
All of the code that I worked with gave me the impression that it was written entirely by 23 year olds who came to MSFT straight out of college. After all, many MS employees did go there straight from college and have no other work experience to compare it to, which I believe has stunted their growth as engineers and prevented the majority of them from picking up the seasoning and design experience normally picked up by junior engineers through working with more experienced senior engineers. I think that also explains why so many are willing to put up with the psychological stress of working there, because if more of them had the experience of working at a "normal" software company to compare Microsoft to, more of them would certainly quit!
Because Microsoft has not built up a corporate culture for software engineering, they seem to be perpetually stuck in the "hacker" mindset of throwing stuff together and then having to deal with the aftermath of their poorly thought through designs. It's a real shame, especially considering that The Mythical Man-Month was written back in 1975, and yet our team routinely had to deal with gross violations of the very sensible recommendations made in that book and others.
At any rate, it took me a few months to recover, but fortunately I seem to have made it through the experience with no permanent psychological damage, and without all the bitterness and hard feelings that I would otherwise have had if I hadn't taken the time out to think through the experience in order to put it all behind me. The previous link is to a blog written by an anonymous Microsoft manager which is noteworthy not for its posts but for the thousands of comments posted by other anonymous Microsoft employees about their misery, frustration, and anger. Just click the comments link on the most recent post and start reading (the comments tend to have no relation to the posts anyway) and you'll get a better idea of just how messed up things are throughout the entire organization than I could hope to convey based only on my own experience.
I did not want to become one of those angry, bitter, ex-Microsofties, so I quit while there was still time for me to avoid that fate!