Posted by Andres on July 2nd, 2008
Introducing change is always hard. That’s why I attacked changing organizations from the technical side – it’s where I feel secure. I’ve recently had the chance of introducing agile practices in a company from the top down.
The company has gone from having big problems delivering high quality software, to a highly focused team that outperforms it old self many times over. In this post, I’ll tell you what we’ve changed, and what they do that has helped them be successful in introducing agile thinking.
Difficult to take the leap
The company had been looking for a new and better way of working for some time, but felt that they lacked courage to do it on their own. Their lead developer/project manager had gone to a Certified Scrum Master course, but they didn’t know where to start implementing Scrum.
After some talk, we decided that we should do a three day diagnostic that we’ve used successfully with other clients. The idea is that we spend three days learning as much as we can about the company. We try to understand how things get done, and who decides what gets done. We take this information and present it back to the customer, and give advice on what the first steps might be to improve their current reality.
Intelligence gathering
We quickly found that their three biggest problems where:
1. Release management
2. Team communication
3. Long time to a working system
Their biggest problem was the release procedure. The first naive write of the code wasn’t hard – getting it reviewed and bug free was the challenge. This is roughly the life time of a ticket:
assign ticket -> code -> review -> test
There was no urgency to finish off tickets, so stuff piled up after the coding activity. Review and test was pushed of until the latest possible moment, which of course meant that fixing problems and misunderstandings was twice the effort.
The team used FogBugz to track, plan and assign work to each other. The lead developer and the CTO would assign tickets to the developers. Communication between the CTO and the developers was mostly through FogBugz – they would ping-pong-assign tickets between each other for clarification, review and test. Even between developers, tickets where assigned with little or no face to face communication.
- Long time to a working system
Developers ran the system on their own machines, but the code wasn’t was deployed to a common test server, so outsiders couldn’t try the system on their own. When the CTO did get a chance to try things out for himself he always found bugs and misunderstandings that were expensive to solve.
Presenting the good and the bad
After three days me and Chris reported our findings back to the group. We suggested that the CTO be their designated product owner, that they use week long iterations and a Scrum-master. The team would push very hard to finish functionality as much as possible inside the iterations, and they would start using a whiteboard to plan and communicate, instead of a bug tracking tool.
1. Designated Scrum Master and Product Owner
2. Use user stories
3. Week long iterations
4. Whiteboard and index cards as communication tool
5. Make reviews and testing highest priority
I think most things speak for themselves. For teams starting to do agile, I almost always recommend one week iterations. It speeds up the learning a lot. Once you feel a little more secure, you can start doing two or even three week iterations.
The company has done a marvellous job at adapting to this agile process. They have a great CTO acting as product owner, who has adapted to his new role very well. Releasing new functionality used to take between five and ten days. Now the team releases every month, and it takes two days. Still a long way from perfect, but much better.
Recipe for success
There are, of course, a number of reasons why it’s going so well for the company. These are things that I will make sure to repeat with our next customer.
1. The management team, consisting of the CEO, CTO, their business analyst and the lead developer, work together as a team. It’s so common that managers play the political game instead of working towards a common goal. Here, they’ve created a team responsible for the change work, and this is a big factor in their success.
2. Involving large parts of the company. For their first iteration demo, they invited the whole office, and had crisps and beer ready. This has created a positive buzz around Scrum. People outside the team are showed how the whiteboard works, and use it to keep track of how items they care about are progressing.
3. The CTO has been successful in shielding the developers from outside disturbances. This allows the team to focus on the work at hand, and on learning how to work in the new environment. Shielding the team is much harder that it sounds. The whole company used to work by harassing the developers into doing what they needed, and now they have to talk to the Product Owner instead. It requires the PO to actively step in and have some tough discussions.
It’s been a fun challenge to help this particular company on their effort to find a better way of cooperation. Changing the non-technical aspects of their process has made a huge difference for everyone, and it has made the team much more productive. In the long run, they have to introduce TDD, CI, pair programming and other technical habits to improve even more.
No Comments »