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.
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 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
this
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
task duration.
Next, I tried 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, this brilliant fellow wrote a program that lets me make a passable Gantt chart from the command line. Using Python, and the PyX library that pulled in half a gigabyte of TeX files when I installed it. Sheesh.
What do I conclude from my weekend of misery?
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 unnatural acts.
Do you have a tool that you actually like for generating Gantt charts? If so, please let me know.