Agile at Microsoft
Disclaimer: The following material is not advised for those who clicked on this link thinking it was something else. Do not operate heavy machinery or drink hot coffee while reading. Remain seated please; Permanecer sentados por favor.
I wasn’t always a proponent of Agile development practices. To tell you the truth, I didn’t even know what they were. Before I came to Microsoft I used to just do what I was told and simply worked the way everyone else worked. I put in my time, punched the clock so-to-speak and wrote just the bits and pieces of code they asked me to. If someone started spouting off about development methodologies I would likely have stared at them like they were from Mars.
Simply put, I was a drone. I had no control over whether the project succeeded or failed miserably. My input didn’t matter one whit. It was always the success or failure of some higher-up management type, not mine. I was the artisan cog in the great corporate machine, a pawn in someone else’s chess game. That is, until I came to Microsoft and everything about everything changed.
My new team lead Dean had the persona of a wild-eyed ex-hippie straight out of Berkley, and if I wasn’t the techno-geek myself I probably would have assumed the worst. Fortunately, I knew better. A lot of the legendary programmers of the time were just the same. It was a lot like how all the ladder climbing manager types wore Spielberg beards and baseball caps. It made me a little self-conscious, though, being in the presence of obvious greatness. I worried that I wasn’t worthy. But in the end I realized they had hired me, so they must have thought otherwise.
The first thing that happened that shocked me was when he showed me my office. There was someone else already in it. I had been cautioned by the recruiter that space was tight and having low seniority I might be ‘doubled,’ yet I was not expecting this. There was one desktop, one computer, one monitor, one keyboard and two chairs.
“We use XP here, man.” Dean said with a scratchy voice. I guess I looked a little confused. He tried to clarify. “You know, like, extreme programming.” I almost dropped my NEO packet. He shook his head and smiled through his yellow teeth. “You guys are going to be doing some heavy shit together.”
I didn’t really get it at the time. Luckily, I was about to have a crash course. Sanj, my new office mate had long ratty hair, a scraggly beard and a torn T-Shirt that read “Suck.” He looked like a biker who was coming off a hangover and a long ride on his Harley. A metal chain dangled from his back pocket and I was never quite sure what for. He tried giving me a ‘quick’ overview of what this all meant, yet he spoke so fast I wasn’t sure he was using English. The gist of it was that we were supposed to share everything, doing everything together. He would write some code and I would look over his shoulder, spotting bugs and offering suggestions as he typed. After a while, we would switch positions and he would do the same for me.
At first I was not comfortable with it at all. When it was my turn typing, I could literally feel Sanj’s stare penetrating right through me. He would shift in his seat or cough whenever I started to type. He seemed to have some eerie ability to guess exactly what I was thinking. Even after only a single variable declaration and nothing else, he often figured out my plan of attack and shook his head. He would give me suggestions about a better way, but eventually I couldn’t even type. I would sit frozen at the keyboard fearing the worst. It felt like my Dad teaching me to drive all over again.
Fortunately, it didn’t actually get that bad for a few days. That first morning was cut short in the middle of Sanj’s ‘quick’ overview of the code. He had been walking me through ten thousand lines of C as fast as the editor would scroll. Dean had called us all into his office for a short meeting.
There were about eight of us crammed into the ribbon of space in front of Dean’s desk. He relaxed back in his chair with his feet up while a few of us squatted on the floor and I found a nook somewhat behind the door. I’ll never forget what happened next. It was the most confusing and thrilling thing I had ever witnessed. Dean held a stopwatch in his left hand and pointed quickly at one of the developers I hadn’t met yet; he pressed his thumb on the watch and said “go.” The dev, Pete, hurriedly rattled off something that I could not make heads or tails of. Apparently, it was about something he was trying to do with some nested loop algorithm. Yet, only a few moments after he got started Dean held up his palm, stopped the watch, pointed at the next guy and started all over again. Rapidly, this repeated through everyone, each spouting something quickly about a function or a line of code and then being cut off so the next could speak. I was almost about to laugh when Dean’s finger pointed at me.
Let’s just say nothing coherent actually sprang from my lips. I mostly just muttered a few um’s and sank further back behind the door. Everyone seemed to be having a good laugh at my expense; that new guy what a dork. Patiently, I waited for Dean to let me in on to the joke but he never did. He just reminded everyone to meet back in his office at the top of the next hour. Thinking back on it now, I really was a dork. I had no idea they did this thing over and over again all day. Imagine my surprise an hour later when they repeated the same charade. This time I played along and when it was my turn said something completely ridiculous but threw in a few buzz words and said ‘refactor’ a few times. I grinned big, but no one else laughed. I know, I know. What a dork.
This went on for a few weeks. Eventually, I got the hang of the programming part. There weren’t any specs or anything to follow, just a few loose diagrams on the whiteboard and one word “dynamic” positioned in the center. Originally, this made me nervous, yet Sanj seemed to know exactly what to do. Eventually, I started to figure out what Sanj had in mind so it got easier to make good choices. Once I even wrote a whole function without Sanj making a peep. I got to the point where I thought we were really making good progress. I had overcome the strangeness of my new environment and was starting to flourish. I was even feeling a little pride in our work and was geeking-out at the cleverness of some of our code.
I was in for another surprise.
It happened the Wednesday of the third week just after Sanj and I got back from our restroom break. We walked into our office and everything changed. Pete was in my chair and his stuff was littered over our desk. “Hey, what’s going on?” I asked.
“Timebox,” he said distantly as he stepped through a debug session. I looked at Sanj. He just said “Come on” and dragged me down to Dean’s office. We were being reassigned.
I gulped a few times and held in my anger as Dean explained. He spouted off a few seemingly indigestible phrases and pointed at a bunch of acronyms splayed across his whiteboard with arrows pointing between them. Apparently, there had been a mini-deadline that I didn’t know about. Fortunately, the project had not been canceled. The time box had expired and so the project’s goals were being reassessed. Dean was taking the opportunity to make a few course corrections and mixing everyone up in the process. We were given a new task to solve and sent on our way. It was my first ‘office move’ at Microsoft.
I was still a bit flummoxed and expressed my distress to Sanj as we found our new digs just a few doors down. All our stuff was there, but packed away in brown moving boxes.
“I don’t get it, what about all that code we wrote?” I said as I unpacked.
“Don’t let it get to you”, Sanj said, as consoling as a strung-out punk-rock biker can sound. “Happens all the time. Never put your ego in the code. It’s just code.”
Of course, those words of wisdom make a lot more sense to me now than they did back then. Over time I was able to learn to let go and roll with it. I still fretted a lot when it happened again though. Barely a few weeks later and we were off in another direction. I was never sure why, but Sanj kept assuring me it had to do with the customer. Steve wanted us to delight the customer.
And then one day a few months later after four or five strategic course corrections, we were all called in for a product meeting where this guy named Rich who was dressed in a plaid shirt, Spielberg beard and baseball cap told us about the re-org. The product was being re-aligned with a market shift the guys in building eight had spotted in some charts on the back page of the Economist. The old customers were not the new customers. Everything was changing. The leads all had new goals and everyone was getting a day off because we were moving across campus.
Looking back on those days can still bring a tear to my eye, realizing how new I was and how strange everything at Microsoft seemed. Eventually all the strangeness wore off and I became a streamlined member of a well oiled machine. What was a mystery to me those first few days has now become a natural part of my everyday life. Before Microsoft, I was rigid and inflexible. Now I find myself capable and eager to meet chaos head on.
That first product I worked on never actually did ship. It made ‘beta’ for a few years while we rolled out disc after disc to a small group under NDA. We got a lot of feedback and made a lot of improvements, but before it really took off Bill and Co decided to take the company in a different direction, buying a start-up that made something similar but had been out for a while and had actually gotten some traction in the market.
No worries here. I was off to my next challenge; something called ‘Bob.’ It was going to be big.