GANTT in agile environment

August 14, 2007

I am suggesting to look at the use of GANTT charts in context of an agile environment from quite an untraditional angle. A modified, fully-automated, dynamic, self-correcting version of GANTT chart can be very helpful in planning and monitoring your development iterations. As a matter of fact I personally prefer it over an iteration burndown chart because it gives me alot more visibility into the project details.

I ran into this article the other day Why Gannt Charts Are Useless For Agile Projects and then followed to the next one The demise of the Gantt Chart in Agile Software Project and then simply could not resist to post my opinion on this topic.

Those two articles are based one main assumption:

One of the most important things a Gantt chart is supposed to show is the task dependencies in a project plan

Well, that have been the case for the waterfall projects and Microsoft Project tool. I would agree with the point of “the demise” if I choose to use the assumption for my agile projects. But in the context of “agile” I see a quite different use, implementation, and application of GANTTs. Talking about MS Project and manual GANTTs creation in application to software development is like taking your audience to the stone age and saying that a rock is not an efficient instrument to build a hybrid car in 2007. I think most of software teams stopped using MS Project a long time ago.

Anyway, I am not trying to argue with the articles. Once again, given that assumption, I would agree with them. I just suggest you to look at GANTT charts one more time from a different perspective. In “agile” context, and actually in context of just one iteration.

But how much effort are you investing in creating a detailed, two-month Gannt chart?

Imagine ZERO!

When you have a granular, ever-changing list of software requirements (or features or enhancements or whatever) and the team prioritizes and commits to just a few of those each iteration AND the team then organizes their own way of delivering those requirements in the space of a few weeks or less, it is really, really hard to make a Gantt Chart.

Planning

So at the beginning of an iteration when you’re looking at a prioritized (by business value, or risk, or whatever) list of features or enhancements and your team has given all effort estimates per each task, and you know that you have one month (SCRUM) for the iteration GANTT chart can help you decide how many tasks you can handle and if there is a good resource allocation strategy:

  • Imagine you do not know your velocity yet.
  • Or even if you think you do, imagine your resources are quite specialized and you can not assume their balanced distribution, hence this iteration velocity may be not like the previous ones at all.
  • Or you want to control some resource allocation (I know many agile teams say they do not do that, but in the end of the day resources are assigned) and see its impact on predicted iteration end date
  • Or you actually ran into a few dependencies you’d like to account for. Lets not disregard these completely.
  • Or your software is such that in the middle of an iteration you need to freeze code development and switch into extensive systems testing and “back-and -forth” between R&D and QA. So may be you would like to model such a two-phase iteration pattern with QA’s effort estimations taken into account too?

So the benefit of GANTTs during a planning session is visualization of your prioritized plan with attached estimates to it and exploration of possibilities in terms of number of tasks to commit to, accounting for unbalanced resource assignment, and specific development+testing patterns. The trick here is really for a tool to make GANTT chart generation automatic. We use a tool where we change priorities of the tasks, enter estimates (and dependencies if desired), do resource assignment if desired and then click just one button to get GANTT chart which shows if we can meet our iteration deadline like that. Change one priority, click <GANTT>, change one resource assignment, click <GANTT>, and so on … explore the opportunities before you finalize your plan … Sure, if you had to do it all in MS Project manually that would be a big head ache. I would not want to do this either. But this tool is a release planner/tracker linked into your request/bug tracker and so you hardly have to input anything manually.

People say GANTT is bad because it is hard (using MS project) to create. But the point is, if it is created automatically to reflect your plan for an agile iteration it is quite useful. Even the effort estimates are entered collaboratively by individual developers (not by you, SCRUM master or PM). All you do is refine priorities, massage resource allocation and click button <GANTT> to see a quite realistic scenario for your iteration. I do not see how this is not useful. When the cost of generation a GANTT chart becomes ZERO suddenly you may start seeing benefits of using it.

Tracking

When you’re in the middle of your iteration, things change alot and often do not go as planned. A static GANTT chart (that was once created during your planning session) becomes obsolete and eventually useless, I agree. But again, we’re in “agile” age so why are we still thinking in terms of such static models? I suggest a dynamic GANTT chart that reflect the current situation of your iteration and in real-time adjusts predicted future portion of the iteration.

Yes, tasks get re-assigned, they change states in your request-tracker (some allow entering %completion), some tasks you decommit. A PM tool linked with your request-tracker that knows all these changes can automatically generate an adjusted GANTT chart that shows the current status of your iteration. The nice thing is that it still uses planned order and your estimates to chart the future portion for the unfinished tasks. So you can see how you’re doing against your deadline. May be it is time to stop development and switch to intensive testing in order to have something functional in time.

Well, if your Agile project goes like the ones I’ve seen, the team members will display the irritating behavior of constantly moving around to different tasks as seems most effective to them within the iteration – regardless of what you’ve written down.

Are you saying that in your projects the priorities of tasks are disregarded at the iteration level? Maybe it is fine for some teams but I would prefer for my team to start with the most important tasks first and stick to the iteration plan to minimize the risks. Otherwise my business value/risk based prioritization was sort of useless. There is no way you can track if the tasks are implemented in the desired order using burndown charts. Dynamic GANTTs will clearly show you what is happening.

Even if you are not disciplined enough to follow your planned order the dynamic GANTT is still better than a burndown chart. You can see which developer touched/started which task right away, and how much progress he has made. All this is done by a click of a button without you entering any status data manually.

GANTT and Agile

My point is quite simple. MS Project and manual chart is painful and you would not want to use it for your iterations – the cost is higher than the value. Agree!

But there is a next-generation of tools out there that automated GANTT generation process and made it very simple and useful for iteration planning and iteration tracking. One could call them dynamic GANTTs, or real-time, or automatically adjusted GANTTs, or synchronized GANTTs.

The main purpose of these GANTTs is not to track dependencies in a waterfall project but to help you more accurately estimate, explore, and track your iterations. So how is that “useless”?

7 Responses to “GANTT in agile environment”


  1. Some really excellent points Alexey!

    I suspect that maintenance of the constraints prevents Gannt chart effort from being “zero”, even if the tool required fewer clicks than MS Project. MS Project makes creation of Gannts relatively low effort, when you

    1) Assign resources
    2) Define dependencies
    3) Estimate task durations
    4) Define task priorities
    5) Establish a “value maximizing” heuristic

    MS Projects “auto-leveling” is something that either doesn’t work well, or is difficult to understand how to make it work well. At least for me, when trying to manage something with any complexity.

    There is a non-zero benefit to having an accurate Gannt chart. I suspect that the cost of maintaining the information (1-4 above) may exceed the benefit, even if you design a tool that minimizes the time required to convert the information into a plan.

    I might be wrong, but I believe the maintenance effort could easily exceed the benefits – or at least exceed the effort required to otherwise achieve the same benefits.

    Regardless, your article is outstanding, and your thoughts are good ones. I’ll think about this more – you may change my mind. 🙂


  2. […] 15th, 2007  Scott, thank you for your comment to my earlier post GANTT in agile environment. I wanted to respond to it but could not find a short way of doing that so here goes another […]

  3. dchris17 Says:

    “Demise” wasn’t really about the difficulty of Gantt charts inside an iteration so much as it was the value (or lack thereof) of Gantt charts within an iteration. Sure, you can probably make it easy at a theoretical level, but what about in real practice? Here are some common events that make it difficult to create a Gantt chart in the beginning and then never have to mess with it again:
    – Tasks you didn’t know about when you started the iteration (remember, you’re not doing extensive upfront planning if you do Agile, and even if you did you’d still miss plenty)
    – Creative ideas from an energized team that completely revamp the “dependencies” between tasks
    – Changes in direction based on an evolving understanding of the problem space

    None of these events are easily accounted for in a Gantt chart, but more importantly, in short iterations Gantt charts really don’t add much value. In my experience, the dependencies are so minor that I and my team have little difficulty keeping them straight without a Gantt chart.

    Try it and see. Maybe it won’t work for you, but it does for me.


  4. […] 27, 2007  In response to the comment on GANTT in agile environment “Demise” wasn’t really about the difficulty of Gantt charts inside an iteration so much as it […]

  5. Jurgen Beck Says:

    Here is another reason why Gantt charts, or for that matter scheduling applications such as MS Project may need to be used:

    If a team has a single focus in terms of project and Agile development, then yes, Gantts may not be that beneficial. However, if that same team is also working on projects that do not lend themselves to an Agile style, then things get a bit more tricky in terms of scheduling and resource allocation.

    I’m talking from the perspective of a small team that has several projects going at the same time, with a mixture of Agile and non-Agile development styles.

  6. Richard Says:

    I read: “I suggest a dynamic GANTT chart that reflect the current situation of your iteration and in real-time adjusts predicted future portion of the iteration.”
    Do you know one? I would “buy” it!

    Mashup idea: scrumninga with a gantt view. Does anyone know of anything like that?

    I’m a BDD rails nut and can’t live without SCRUM but I really would like GANTT as a personal crystal ball.

    • Alexey Says:

      Hi Richard,

      Can’t comment on the “mashup” but you can certainly check out our dynamic gantt chart capability in a demo account: http://yoxel.com/yoxel-release-manager.html . Click “Try It” button and play with the iterations there.

      The gantt chart capability could probably be extracted from our open source package (GWT generated javascript) if you wanted to use it in your own code. Let me know, I could help you with that.

      -Alexey


Leave a comment