An alternative title I considered for this post was “My favorite chart”. You'll know what I mean when you get to the end.
But yeah, it’s absolutely true, we did do offshore Agile before it was cool, as early as 2002. Sometimes, it was with a determined customer who was already sold on the value of Agile and was willing to take a chance with our aspiring team. Sometimes, it was out of desperation.
To give you the setting for this story: Imagine a very large software project that has been running for over 3 years, 80+ people on the team, classic waterfall process, over a million LOC, 700+ database tables, over 40MB of source code. Now add to that the approaching production deadline, several months spent trying to get quality and performance under control with very little to show for it, lots of patchwork code rendering the system exceedingly difficult to troubleshoot performance-wise, and the number of new bugs discovered by QA steadily exceeding the number of closed defects week after week. Now on top of all that, add a deluge of change requests, some of them contradictory, plus tired people, endless overtime, working weekends, and a general sense of despair. Got it? Good. There you have it, the classic death march.
We knew that something had to give before the whole thing blew up in everyone’s faces. The deadline was not going to be met, at least not without some drastic changes. So, as painful as it was, we told the customer that they needed to freeze the scope for a while: no more CRs until the quality and performance were fixed. The customer agreed.
What happened next was simple: the project was clearly not working, so we looked around the company to see what was working. And right away, we found it: Extreme Programming was working. In fact, it was working great (I talked about that earlier). So, driven to the wall by the imminent failure, we took the practices we knew worked and transplanted them onto this monster project.
We broke the unwieldy 80+ member team down into 7 cross-functional XP teams. We finally had testers and developers talking to each other, all the time. We implemented Planning Games and short iterations, and the developers were finally able to make their voices heard in planning sessions as they committed to iteration scopes. We ran each day as a project, with people reporting on the previous day’s activities in front of their teammates and committing to the new day’s plan during daily standups. We introduced merciless refactoring. We had people pair-programming.
It was a revolution, and it was beautiful.
After the initial resistance was overcome, the new XP-driven openness changed the mood quickly and dramatically, both on the team level and on the project level. Charts with quality and performance metrics were posted on the wall of the project room daily, for everyone to see. The morale on the team was now completely different: when you looked a developer in the eyes, instead of “You’re driving us like slaves but it’s all for nothing anyway, we’re all going to die here” you now saw, “If you know how to do things better, please tell us”.
So, are you ready for my favorite chart? Here it is:
Can you guess what date corresponds to the vertical line? That’s right, it was when we introduced XP. And almost 10 years later, I still haven’t seen a chart I would like as much.