October 2, 2004

Microsoft Mistakes

I made a lot of mistakes when I was at Microsoft. I'm going to tell you about one that turned into two, which also became a CLM.

CLM: Acronym. Short for "Career Limiting Move." Refers to a total bonehead move that ensures that you will never advance beyond where you are.

I was assigned to be the test lead on Microsoft Golf 2001 Edition. This was literally the smallest team that Microsoft Game Studios had ever assigned to a single product. We had a program manager, one developer, one artist and me.

The product was supposed to be a repackaging of Links LS 2000 without Arnold Palmer, with some golfers from Links Extreme, a different collection of courses, and it was supposed to be crippled so that no extra courses could be played with it. We were also to add an easy play mode and lessons. This was part of a "cover-the-price-point" strategy against Electronic Arts and their onslaught of Tiger Woods. We were going to be the low-end, Links LS Classic would be the mid-end, and Links 2001 would be the high-end.

So, we were short staffed. We had a really short development cycle (seven months). We ended up borrowing an artist for sixty days to help out with the artwork for the lessons. We didn't get a manual guy until the last sixty days. We were rushed...completely rushed.

I ended up doing some work on the lessons in order to get them done in time for usability, and I was making constant tweaks during the usability sessions. That earned me my second credit on the game...for lessons.

Finally, we were getting down to the last three months. There was a lot of work to be done still. There were still several features that absolutely had to be done. They were simple changes for the most part, but Bruce Ward (the developer) told me that if I wanted them done, "the code was in SourceSafe." Here is where I made my mistake: I coded the features.

Yes, that's right. I was the test lead. My job was to ensure the quality of the product, not to complete it. It was bad enough that I was working on content. I was actually writing code and checking it in. This was CLM #1. Due to my changes, I had to split my time for the rest of the product between finding bugs and fixing bugs. Not a good idea.

Test Rule #1: Testers should not write anything for the production system. It is OK for a tester to create placeholder content, but no code or content from a tester should enter the final product. It makes the tester a party to the product he/she is testing, and makes it so the tester cannot be objective.

So, what did I do next? I went and spoke to my manager about the code I was working on. One of the features I was implementing was changes to the scoreboard code. I told him about the code that was there, how it was a spaghetti mess from Hell. I told him that I essentially gutted it and rewrote it. After I was done describing what I had done, he told me that he had written that code. CLM #2.

Test Rule #2: Never badmouth someone's code verbally. It will come back and haunt you in the end.

Finally, we got the product out the door. It even got out on our first release candidate. According to Product Support Services (PSS), customers only found a single crash bug that we missed, and it couldn't be consistently reproduced.

Now for more trivia. At that time, PSS charged the costs for support back to the games division at a flat rate per call of about $45. Given that profit margins were about $5 per unit, that meant that a single PSS call would wipe out the profits of nine sales.

Microsoft Golf 2001 Edition had an extremely low amount of support calls, due to our legacy codebase. Links LS Classic was in the same boat. Links 2001 was a brand new product from the ground up. PSS calls were inevitable.

As a result, Golf 2001 ended up making more money than the flagship product over the following 12 months. CLM #3. There was severe pressure over the next few years from the higher-ups in the group to terminate everyone who was on Golf 2001 fulltime.

Longevity Rule #1 (aka the WordStar rule): Don't show up your flagship product on the bottom line.

Neil Galloway, the artist, was the first to go. According to his review, the artist who was brought on for two months to help out with the lesson artwork did all of the work on the product. While I appreciate all of the work that Adam did, Neil busted his butt on that product, and I was sad to see him go.

James Alger, the program manager, was next. He was given a choice of termination or medical leave. I think he made the right choice.

Bruce Ward was gone next. While his E-mail to the group made it seem like he was moving on to greener pastures, he told me privately that he had been terminated.

I held on for a long time thanks to some work I was doing for our Xbox products. I wrote a source code analysis program that helped out with some of our Xbox titles. I wrote some usability tools to help out with some of the Xbox TCR's. I basically made myself as useful as I could. I raised my visibility outside of Salt Lake. As a result, I outlasted several of the people who held the grudges.

I made one more major mistake in March 2003, but that's a story for another time.

So, in short, I set a MGS record by getting three credits on a single title: Test Lead, Developer and "Lessons." But by doing so, I really hurt my chances for future advancement, and unnecessarily put the product at risk.

No comments: