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.