Grief with Gantt charts
Occasionally, I have to put together a project schedule with a Gantt chart.
In my software engineering class, I figured I should use something
cross-platform and open-source, and not Microsoft Project, which I vaguely
remember as a muddleheaded mess.
Making a Gantt chart for a small project should not be rocket science,
right? Put in each task, estimate the duration, assign a person, and specify
which tasks depend on each other.
width="170" height="134" /> Unfortunately, it isn't so simple. I started with
GanttProject, a visually appealing Java
application. I can enter tasks, assign resources, and link dependent tasks.
Then I get a useless chart that has each developer working 120 hours per week.
To “solve” that, I need to add bogus dependencies. By hand. If I
change my mind and erase a dependency, the task href="http://sourceforge.net/forum/forum.php?thread_id=2355037&forum_id=248036">doesn't
flow back to its prior location. It has now remembered its delayed start
time, and I need to manually move it if I want it elsewhere. That's not
scheduling. It's painting.
/>I moved on to OpenProj, another
visually appealing Java application. First off, why does an open source project
block PDF file generation, suggesting I use the commercial version instead?
Don't they know I can just print to PDF? Or do they rely on me being stumped by
nasty Java bug? OpenProj remembers when I specify a task without locking in
a specific start date, which is good, but it simply has no provision for
resource leveling. I wanted to like it, so I tried manual leveling by adding
bogus dependencies. But it was just too painful. Particularly since the mouse
clicks for linking tasks had to be just so, or you'd accidentally increase a
Next, I tried
href="http://www.taskjuggler.org/index.php">TaskJuggler. TaskJuggler has a
brilliant concept: No GUI. No mouse clicks. You just enter the tasks in a text
file. Mercifully not XML. I had mine entered in a jiffy. It produced a
schedule. With automatic resource leveling—nobody worked more than 100%.
But the schedule was just a table, without a Gantt chart. To make a Gantt
chart, you launch an ugly GUI application, written in Qt. The tool didn't do
anything but generate the graphs, which you must then print to PDF. You can't
just do that from the command line. Launch the tool, click, click, click,
click, click, click, get your Gantt chart. What a way of snatching defeat from
the jaws of victory!
Judging from the comments on the mailing list, this is some Qt3 limitation,
and they are ever so slowly moving to Qt4. Sheesh. Fortunately, href="http://blog.gustavobarbieri.com.br/2007/04/19/generating-gantt-graphs-from-taskjuggler-projects-without-using-its-ui/">this
brilliant fellow wrote a program that lets me make a passable Gantt chart
from the command line. Using Python, and the href="http://pyx.sourceforge.net/">PyX library that pulled in half a
gigabyte of TeX files when I installed it. Sheesh.
What do I conclude from my journey?
Lesson #1. The keyboard is more powerful than the mouse. It was not just a
little bit faster to enter my schedule into the simple markup language of
TaskJuggler. It was faster by an unbelievable amount. Sure, I'll suffer a bit
when I need to edit the schedule, and I have to locate the items in the text
file instead of dragging bars. But I am so far ahead that I don't care.
Lesson #2. If you want cross-platform, just use Java. There has been all
this bellyaching in the open source world about how Java is too slow or too
proprietary or whatever, but the alternatives are pathetic. Had TaskJuggler
been a Java app, it would have been a jiffy to produce charts in headless mode.
And Windows and Mac users would be able to use it without going through href="http://wintaskjuggler.googlepages.com/">unnatural acts.
Do you have a tool that you actually like for generating Gantt charts? If
so, please let me know.