Darshan Desai spoke with us ahead of this 2012 Better Software Conference East session titled "Experience an Iteration: The Joys of Agile Done Right." Darshan shared with us some of the ways to maximize agile's benefits while avoiding pitfalls and hindrances along the way.
A senior program manager on the Visual Studio® product team at Microsoft India Development Center, Hyderabad, Darshan Desai contributes towards designing tools that improve the collaboration and efficiency of testers and developers. Joining Microsoft in 2005, Darshan spent his first two years as a software design engineer in testing on the Windows Live team. He has spoken at testing and development conferences across the globe including STAREAST, Tech-Ed USA & China, and EuroSTAR.
Noel: How has agile development benefitted your team at Microsoft over the last 5 years that you've been practicing it?
Darshan : We have been practicing agile development in our team for over 5 years now and we are extremely happy with it. In fact, we have been evangelizing the best practices with other teams in our company and outside as well. If I have to call out the top three benefits, those would be:
1. Productivity: Given the same amount of time, agile development helps teams deliver more results and more importantly, the right results, compared to traditional methods. This is mainly due to the clear focus and goals for each sprint and being able to work on the prioritized set of requirements, given these keep changing.
2. Agility: Teams can respond to issues a lot more quickly now. Earlier, when we planned for 3 months or 6 months at a stretch, introducing a high priority customer requirement or reacting to feedback was difficult. As a result, we felt we weren’t quick enough to respond to customer requests. Agile development process allows you to react really fast and get continuous feedback early and often.
3. Team morale: Having a clear focus and goals for every sprint actually does a great deal of good to the team morale. There is a sense of accomplishment and progress. Also, at end of each sprint, we seek feedback (both good and bad) from the team and make sure we act upon it and improve ourselves.
Noel : Are there any pitfalls that can arise when introducing agile development strategies, and how might companies avoid them?
Darshan : We made some mistakes at the beginning and learnt from them. The biggest of all was trying to do a mini-waterfall model within agile development. Let me give you an example. We started with five-week sprints. Some feature teams would just divide it into one week for planning and design, followed by two weeks of development, and two weeks of testing. Whenever I hear such a statement now, I know you are bound for disaster.
We have to realize the transformation to agile starts from change in mindset first, and the tools and processes are there only to support it. We need to understand and embrace the soul of this model, and not necessarily the terminology and tools without understanding it. We’ll talk about our story and learnings to avoid such mistakes, in our tutorial.
Noel : What kinds of tools have you helped design that have improved the collaboration and efficiency of testers and developers?
Darshan : When we talk about tools in agile development process, it is absolutely important to ensure two things: (a) transparent and effective communication with the entire team about the current status and progress, and (b) everyone in the team uses an integrated toolset in order to have traceability, reduce friction, and eliminate miscommunication.
In our team, we use the Team Foundation Server and Visual Studio as our toolset. Program managers use the product backlog web view to manage requirements and backlog, developers use Visual Studio to write code and track defects, testers use Microsoft Test Manager to track test cases and file defects, Scrum masters use the web view to manage the online task board and burn-down, and management uses the web view to look at status and trends. The key point is all these tools talk to a common Team Foundation Server, so the artifacts are linked throughout.
Each team/organization is free to choose the tools they want to use, however they need to keep in mind that using no tools or disparate set of tools (by discipline or job function) breaks down communication and introduces friction. Using the right set of tools enhances team productivity and streamlines the agile development process.
Noel : What are some of the best practices that you can see working well for many other companies looking to implement, or enhance their agile development?
Darshan : Firstly, the team and the management need to clearly understand the agile development process and buy into this. The different roles need to realize their responsibilities – product owners should groom the product backlog regularly, the Scrum master should bind the team together, and managers should internalize the difference between push vs. pull models in order to really empower the team.
There are more challenges and best practices such as: how to be effective if your team is geographically distributed, how to deal with engineering tasks (that is not directly adding customer value) in the product backlog, how does the role of testers change in the agile process, etc. We’ve overcome some these challenges and will share these experiences in our tutorial.
Noel : Are there any individual stages of an iteration that those new to agile will be able to see the greatest potential gains for their own companies or projects?
Darshan : Actually, it is hard for me to pick one stage over the other. If you practice agile the right way, you’ll immediately start seeing gains across the board.