I'm trying to plan the next 9-12 months of development using a Gantt chart. I've input all the tasks, their durations, and their dependencies, and all is well. However, as I assign developers to tasks, I've noticed that some developers have big gaps where they aren't assigned to any tasks, while other developers are overloaded with too many tasks at times. Since each task has a varying start date and duration, it is not easy to come up with the optimal scheduling of developers.

In my example, I have:

  • 10 developers (let's assume equal skill sets)
  • ~40 well-defined tasks, each with a different start date and duration. Some tasks must wait for other tasks to be completed before they can begin. (These are not simple tasks that last only a few hours; but more long-term tasks that last anywhere from a few weeks to a few months.)

Is there a known algorithm/solution/tool for coming up with an assignment of developers to tasks, so as to simultaneously:

  • Minimize the amount of time each developer is not assigned any tasks
  • Create the shortest possible scheduling, so all the tasks are done as fast as possible?

Note that the algorithm/solution/tool is allowed to assign multiple developers to a single task (so that that task would take half as long) and it may also have some overlap of tasks, i.e., a developer may be assigned to more than one task at a time, as long as his total effort sums to 100% at any given time.

  • 1
    If you think that nine women can have a baby in one month, you're in for a rude awakening. Doubling the number of developers does not (in general) cut in half the time to complete the task. – Deer Hunter Jul 15 '13 at 20:34
  • @DeerHunter: I understand and agree completely. I was just relaxing the sophistication requirements of the algorithm/solution/tool, in hopes of increasing my chances of finding an answer. – stepthom Jul 15 '13 at 21:02
  • 1
    What you are trying to do is called resource leveling. However, you cannot minimize two objective functions at once. Either one or the other should become a constraint; or, alternatively, you can mix them into one objective function with two (possibly, nonlinear) components. – Deer Hunter Jul 15 '13 at 21:27

When people sit down to schedule, they schedule tasks. In fact, you are scheduling resources-human and otherwise. So if you ended up with a severely un-leveled schedule, do it again with the principle of scheduling resources.

Some tools level for you, but the results are mostly unusable.

Another piece of advice: don't look to level with perfect results. Getting close is good enough since the second you load actual, your leveling goes out the window.

  • Thanks for this info. It seems you agree with @DeerHunter that this task is called resource leveling. Two follow up questions. 1. When you say "do it again with the principal of scheduling resources", what exactly should I be doing? differently? 2. Do you know of any algorithms/tools/techniques to perform resource leveling? Or are you saying that tools are no good, and this must be performed manually? – stepthom Jul 16 '13 at 11:44
  • You need to schedule the tasks when the resources are available, not when you want the task to start and end. It is mostly a manual effort, in my view. Maybe for simple projects, the tool's leveling may work; however, for more complex projects, you need to do this manually so you can control it. – David Espina Jul 16 '13 at 13:00
  • You said "the tool". What tool? – stepthom Jul 16 '13 at 13:21
  • 1
    MS Project, for example. It has an auto leveling function that will reschedule your packages based on resources and predecessor and successor logic. It does not work that well, in my opinion. – David Espina Jul 16 '13 at 13:45
  • Thanks for your advice, David. It may be worth looking into, but it sounds like some good, old-fashioned planning is what will work best. – stepthom Jul 16 '13 at 23:24

As others have pointed out it sounds like you are looking for information on resource levelling. If you did want to look into using a formula/algorithm for calculating optimum resource allocation and delivery time then you might want to start with this brief article on available algorithms for the task. Though in my opinion the cost of developing a system of your own would be far greater than the cost of simply purchasing software that does this job for you.

What's really important to remember though (and I think is one of the main reasons auto levelling doesn't work) is that you need to take into account all of the interdependencies between tasks way ahead of their actual delivery date. The risk is that your early projections will give an overly-optimistic view of what's possible over a 9-12 month period. As your 'cone of uncertainty' reduces over the lifetime of the project you may realise that the interdependencies are more complex than originally anticipated or that (surprise, surprise) the scope has changed to the point where your interdependencies are no longer relevant.

  • Thanks for this advice. Makes sense. I'd up-vote your answer, but don't have enough reputation points yet. – stepthom Jul 18 '13 at 11:43

Check it out MS project has auto levelling function that will help you to achieve your objective more or less.


Don't even try to level or balance resources out so far in advance. There is too much uncertainty that could totally change the picture.

People get ill, resign and working situations change and business constraints impact. Only look at assignments in the very short term and the further you go out the more rough the allocation is. i.e. Work for the next day can be allocated but work for 6 months out should be in the form of "We need 10 developers for another 6 months".

Trying to plan so far in advance with so much uncertainty, will just mean you are going to have to do a lot of constant rework to keep the plan up to date. I am sure you have better things to do that constantly rework the plan.

  • Thanks for this advice. It makes sense, and jives with the "lean startup" mentality that we're going for: gettingreal.37signals.com – stepthom Jul 18 '13 at 11:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.