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.

3 comments

  1. Fregas

    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.

  2. 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.

  3. @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

Comments are closed.