Can an organization using Visual Studio Team System be Agile? (Optimize the Whole)
This is the first of several posts about how a team can be Agile while using Visual Studio Team System to manage their project and process.
You have probably heard the quip that the last simple project was done in 1960. The complexity and breadth of software projects today is truly astounding. The size of teams working on a project seems to be getting larger. To deal with this complexity, teams must have higher bandwidth communication and various Agile methodologies like Scrum, XP, BDD, FDD, AUP, and Clear Case achieve this by emphasizing smaller local team sizes.
However, if only one small Agile team were to take on something the size of a modern DBMS, accounting system, large scale e-commerce site, or a medical records management system, they would not be able to deliver product of sufficient value for years. To achieve release goals, there have to be dozens or hundreds of small teams working on the project to deliver and maintain the product. And coordinating so many teams is, itself, a complex problem.
Does this sound like a Catch-22? In order to reduce complexity, organizations are embracing the need to manage software projects through Agile methods. In order to deliver significant product, Agile requires using many small Agile teams. Managing many small teams is, itself, complex.
Organizations need to manage the return on investment, changing requirements, changing technology and business needs simultaneously. What do you do?
The answer involves looking at the foundational principles for Agile practices. These principles come from Lean Software Development.
According to Jeff Sutherland, Mary and Tom Poppendieck, Alan Shalloway and others, Lean Software Development offers seven principles that help us look at the project from a business perspective in order to deliver the required business capabilities at a reasonable cost and within a timeframe that allows the product to actually deliver the business value desired. These seven principles are:
- Optimize the Whole
- Eliminate Waste
- Build Quality In
- Deliver Fast
- Defer Commitment
- Create Knowledge
- Respect People
The first set of posts in this blog describe how Implementing Agile Development with Microsoft Visual Studio Team System (tm) equips organizations to manage the complexity of Agile development by paying attention to these principles.
Lean Software Development Principle: Optimize The Whole
"Optimize the Whole" tells us to work on increasing throughput rather than reducing costs. It also tells us to identify and prioritize features or business capabilities at the enterprise level.
One of Team System’s main attractions is the ability to provide visibility to almost any aspect of the project. When a Team Project is created a SharePoint Site or “Project Portal” is created for the project. This site has the ability to host a vast array of web parts to focus information for the stakeholder community and the business. When working with organizations on Agile and Team System, I coach the organization to create a Project Portal front page that communicates the status of the current project or release as a whole. This front view is very top down. The project’s vision or goal statement is clear and easy to find on this front page. It might contain a report chart that displays the progress of business value delivery. It almost certainly contains a product backlog list for the current project or release showing the current status of all committed items in the backlog in priority sequence.
With this top-down view of the project, it is easier to the analysis breakdown of the work to be traced back to the higher level work items. In Visual Studio Team System, work items can be linked to create an easy to see relationship between the project or release commitments and the work items to implement them. A future release of Team Foundation Server will allow the creation of true parent-child relationships.
"Optimize the Whole" sets a goal to have the team work cooperatively to achieve team goals. Rather than developers, testers, and other teams running after local goals, the team goals should drive the activities of all teams and members. This takes communication. A project team should focus on the impediments relating to code dependencies, contention and integration interfaces. The easiest way to do this is by reporting out through an Integration Team ( more on Integration Teams in a future post). The Implementing Agile Development Process Template includes a work item for Impediments. I recommend that all teams using VSTS use an Impediment work item and display the top priority Impediments prominently on the Project Portal.
Continuous integration allows the project team to keep tabs on the progress of delivering on project or release goals. The ability to set up automated server builds that run all tests easily is a core reason to adopt VSTS/TFS. The upcoming SP1 of TFS 2008 will extend these features. Brian Harry’s blog contains more information about SP1 for TFS08 .
You can probably find more ways that VSTS/TFS helps optimize the whole. I would love to hear from you about your quest for Agile in a Visual Studio Team System envorinment!
I will post articles on the other six Lean Principles over the next few weeks. I hope you come back and participate!
Recommended Blogs
- Brian Harry, Microsoft VSTS Program Manager
- Ajoy Krishnamoorthy, Microsoft VSTS Program Manager
- Chuck Sterling, Microsoft Developer Evangelist
Recommended Training
- Rod Claar's blog
- Login or register to post comments


Technorati Tags:
tag with del.icio.us