Styles

Monday, September 1, 2014

How to Manage Agile Software Projects

In my third post in my series about Leadership vs. Management relating to IT, I will talk about how to manage Agile software projects. Before I do that, though, I feel that I need to clarify the difference between true Agile and the pseudo-Agile used by most service organizations that I'll call "Iterative Waterfall".

As I discussed in my post about Agile a few months ago, the goals of any project leader who is truly taking an Agile mindset to their projects are to reduce wasted effort and to see value from the project as soon as possible. However, most service organizations' customers are focused primarily on two questions before the project gets started:
  1. How much will this cost me?
  2. How long will this take?
As we'll see in a moment, the methods that people have created to eliminate wasted effort and minimize the time before realizing value make it extremely difficult to answer these two questions. The result is that companies make a compromise by setting the scope of the project first, then creating a timeline for the effort, and then releasing the software in small batches on a regular basis. Iterative? Yes. Agile? No. Again, the point of a true Agile project is to reduce wasted effort, which means being able to easily adapt to changing priorities anytime during a project. People still call that type of effort "Agile", though, so I feel like I need to address it here.

Managing a Pseudo-Agile Project

Managing the actual effort during the progress of an Iterative Waterfall project isn't much different than managing the progress during a pure Waterfall project. Here's a rough overview:
  1. Define your scope.
  2. Organize your desired features into logical (and roughly equally-sized) groups, preferably groups that when completed represent usable software. This is like pure Waterfall in that you have milestones built in, but unlike pure Waterfall the milestones are equally spaced in the project plan.
  3. Decide in which order your groups of features must be developed, and organize your project plan.
  4. As the project continues, track effort and make adjustments to your timelines/scope/daily effort as necessary.
  5. When a change in scope is needed, have contentious discussions about whose fault it was that the needed feature was missed during the requirements gathering process.

Managing a True Agile Project

Since Agile is meant to be, well, agile, managing these types of projects is significantly easier. Essentially, you need someone to manage scope for each sprint, but otherwise Agile teams are usually managed by a technical lead. How does this work?
  1. The business leader determines what features are needed in the near term.
  2. The software team estimates the amount of effort needed to implement each feature.
  3. The business leader and software technical lead negotiate what features will go into the next release.
  4. The delivery team meets each day to inform the group of their progress. Slower members of the team are helped and trained, and perpetually slow members of the team are removed.
  5. Repeat steps 1-4 as needed until the features requested are not worth the effort of putting in.
Yes, removing most of the management for a project makes most middle managers uncomfortable. But the purpose of management is to ensure that teams and individuals have what they need to succeed, and this process does that wonderfully. The need for managers is greatly reduced, freeing up the business leader to focus on the value that the project brings without the overhead of the now unnecessary managers. This should free up managers to focus on adding more value to the organization or finding other portions of the organization to simplify and improve.

Other posts in this series

August: How do you manage an Agile software project?
October: Getting programmers to see the value in management
November: The Peter Principle and software architects
December: Creating a leadership team to make your software project a success

3 comments:

  1. I currently have a situation which doesn't feel quite right, we could be veering into pseudo-Agile territory.

    Product Owner wants a new component ASAP - so creates a 30 page spec, which is handed off to the Technical Architect who creates a 29 page spec. That is then handed to the developers who are given 1 sprint to code it. We don't finish it in time, all the cards are moved over to Test in the last few days. Testers use the original Product Owner spec to test from which causes some confusion. Because we didn't completely finish it, we don't demo it. Technical Architect fails to turn up to the demo anyway.

    ReplyDelete
    Replies
    1. Yikes! Fixed scope and fixed timelines is definitely not Agile! Here are my thoughts, in no particular order:

      1. 30 pages of specs is too large of a chunk to reasonably considered for a sprint. That probably should be broken up into smaller deliverables, which can then be given to the team for estimation, given to the Product Owner for prioritization, etc.
      2. Based on your description, it sounds like the developers don't have a say about timelines. You're practically guaranteed to miss dates if you do that. Most developers will bend over backwards to finish what they promised if given the chance. If they don't have buy-in, though, they won't be nearly as committed.
      3. Combining 1 & 2, the Product Owner should set priorities, but the developers should be setting scope for each sprint. If the team moves too slowly for the Product Owner, then maybe you need more developers. (I'm a big fan of sticking to the 40-hour workweek, but that's a story for a different post.)
      4. This is a bit out-of-scope for this post, but I'm not a big fan of large spec documents in general. My best experiences as a developer were when I could collaborate directly with the Product Owner, which allowed me to anticipate problems and suggest better solutions, which in turn increased product quality (as well as my own sense of personal satisfaction).
      5. Finally, it sounds like your Product Owner is pushing to hard for more development speed. That would make a transition to true Agile difficult. My experience has been that the only way to fix this is have a couple of successful (i.e. you deliver what you said you would) sprints right at the beginning to start building back trust.

      Good luck! That sounds like a difficult situation.

      Delete
  2. This is my first time i visit here. I found so many interesting stuff in your blog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the enjoyment here keep up the good work agile manifesto principles

    ReplyDelete