CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Jeffrey Palermo (.com)

Blog moved to www.jeffreypalermo.com

MSF for Agile update released - still doesn't hit the mark - level 200

A new beta of MSF for Agile is available from Microsoft.  I read through it (more reading that I normally like to do about process-oriented stuff), and it’s better than classic MSF.  

Classic MSF was very waterfall even though it called the waterfall a cycle.  There were very rigid phases of envisioning, planning, build, stabilize, deploy, and maintain.  The new MSF does a lot to emphasize Agile concepts that keep us more focused on the software than the process, but it keeps a death grip on all the documents that classic MSF had.

Documents

Some documents have been renamed and shuffled around, but here are _some_ of the documents required by the MSF Agile process:

  • Vision statement
  • Persona
  • Scenario List
  • Quality of Service Requirement List
  • Project Checklist
  • Threat Model
  • Scenario Description
  • Iteration Plan
  • Storyboard
  • Application Diagram
  • System Diagram
  • Test Approach
  • Release Plan

I have no doubt that there are full-time folks at Microsoft who maintain these documents all the time, but the average software company isn’t the mammoth that Microsoft is.  Most of the points of all these documents can be summed up by some bullet points on a whiteboard.  My team uses a wiki to keep current information since we have stakeholders in another city, so anything that concerns them is jotted on the wiki so anyone can view or change it.  Most stuff goes on a whiteboard until it’s no longer useful.

Documents are only useful for a time, so I believe there is too much document overhead still in the MSF process.

Builds

MSF for Agile describes a daily build and an accepted build.  There isn’t mention of continuous integration, and it allows many checks before a daily integration build is done.  I believe that more feedback is desirable.  Even with dependencies from other teams, you always have a good build of those, so a build on every check-in would give more instant feedback.  This point also stresses the need for fast builds.  If your build takes hours to complete, you have no choice but to run it daily.  I build measured in minutes (10 or less) will be run very often and build confidence that the software is still working.

Work Items

The MSF for Agile process uses Visual Studio team system terms, naturally.  They have different levels of work items:

  • Scenario Overview
  • Quality of Service Requirement Overview
  • Task Overview
  • Bug Overview
  • Risk Overview

All work items must be tracked permanently according to the process.  The one that jumps out as overkill is the task work item.  Tasks are very small, and merely recording them in a tool might lengthen the duration of the task 20% for small ones.  My team tracks at the story level and tasks out on a whiteboard when necessary.  If there is a very large story with large task within, the product manager might record the large tasks (that might need to be called separate stories anyway), but we as developers concentrate on creating working software.

Conclusion

MSF for Agile misses one major point:

Software teams should be self-organizing.

Each software team is different and has different goals.  The process should be customized for each team.  MSF for Agile, even if used, can be used out of the box.  I believe the process should stress that inappropriate items be omitted.  MSF for Agile still seems pretty heavy for me, and there is a lot of tracking that doesn’t directly validate that the software works as intended.  Tracking every work item and having every document doesn’t matter if the customer isn’t happy.  The key metric should be customer acceptance at every level, not just the end of the release.  Automated testing wasn’t stressed either, and that is a key way to get build feedback quickly and ensure that something a customer liked yesterday isn’t broken today by an unrelated change.

Overall, it appears that MSF for Agile is trying to embrace real Agile, but it won’t let go of waterfall.  Right now, it’s sitting on the fence looking at both sides.

 

 



Comments

Fregas said:

I'm confused.

Where are these companies that have builds mesured in hours? Am I misunderstanding the meaning of the word "Build"? Does "Build" mean "Compile?" I've worked on some fairly sizable software applications with anywhere between 3 and 20 developers, but it never takes that long for all the projects to compile, even if they are in seperate (but related) solutions.

We have a rule here at work that if you can't compile, you can't check in your changes. You must be able to build the solution/projects.

Am I just on too small of projects to see these huge applications? Do software companies have THAT MANY projects and solutions that reference each other?

I'm not criticizing, just curious.

Good article Jeffrey.
# January 11, 2006 6:09 PM

Jeffrey Palermo said:

Fregas,
Build is much more than just compile. Build means:
update from source control.
compile solution
copy application files to test location
run unit tests.
run integration tests.
run regression tests (if you have them)
tag source control with build number if successful

At Microsft, this process takes all night because projects have dependencies of other bits that must be built first.

Our slowest build is 20 minutes, and we are clamoring to speed it up. If the build is slow, it won't be run often.

We have another build thats less than 1 minute. We keep our tests fast so that it stays that way. We run that build very often.
# January 12, 2006 9:22 AM

vorpal.cc » Link Dump said:

# April 16, 2006 4:13 PM

Bruce Chapman said:

@Fregas

As Jeffrey said, build is the _entire_ process which happens from a check-in to a working system in an environment.  For simple executable apps or single class libraries, this isn't much.  For a large system comprising of several websites, web services, 30+ components and hundreds of graphics files, by the time you extract from source control, compile, deploy to various webservers a build can easily run to 20-30 minutes.  This is the case even when a developer doing a local compile only has to wait 30 seconds for a full build to complete.

Not understanding the difference between build and compile can be associated to the 20% gap when something is '80% complete'.   Many developers declare a project 'finished' when the project compiles and runs on their local machine.  The reality for an integrated team project is somewhat different

# May 8, 2007 9:12 PM

About Jeffrey Palermo

Jeffrey Palermo is a software management consultant and the CTO of Headspring Systems in Austin, TX. Jeffrey specializes in Agile coaching and helps companies double the productivity of software teams. Jeffrey is an MCSD.Net , Microsoft MVP, Certified Scrummaster, Austin .Net User Group leader, AgileAustin board member, INETA speaker, INETA Membership Mentor, Christian, husband, father, motorcyclist, Eagle Scout, U.S. Army Veteran, and Texas A&M University graduate. Check out Devlicio.us!

This Blog

Syndication

News

Headspring Systems

View Jeffrey Palermo's profile on LinkedIn

See my new blog at .jeffreypalermo.com