Thursday, December 30, 2010

For those wondering when the Beta version is going to be released, I'm happy to announce it is, of today, feature complete. It's also filled to the gills with bugs, so I'm not releasing it just yet.

In way of showing off some of the new features in the beta, here's a high-level snapshot of my Gigantt work-plan.

Keen observes can see that there are three types of views, and the one activated in the image above is the "resource view". It shows how the plan looks when projected onto the calendar.

Another nice feature is the green progress bar that indicates how much of a complex task is already completed. Here's a zoomed in version:

about 80% done

This gives you a quick visual indication of how far along your project is and you can zoom in to see which tasks are yet to be done.

Here's how the new search window looks:

You can filter out done items and see a clear separation between an item and its location in the plan.

I also implemented auto-save today, which means you don't have to obsessively click Ctrl+S every minute. So that's nice.

Bottom line, it looks like I've got about two weeks of debugging before I can release this version. It shall be called "beta 1" and it's still invitation-only. There are probably going to be one or two more beta versions after it before the public version is launched.

Thursday, December 9, 2010

I'm happy to announce v2 of the Alpha is live. If you're already registered you can see what's new in the tutorial. Here are the highlights.

Connections between remote items

Often your plan needs to show that a task from project A is blocking an otherwise unrelated project B. Instead of stretching long and winding lines between them, Gigantt visualizes such connections with mini-arrows that let you jump back and forth.

Collapsing sub-graphsWhen a part of the plan gets out of hand and becomes too complex you can collapse a selection of items into a single new item. This simplifies the appearance of the plan.

Crude time estimateIf all you're interested in is counting how many days are left for each part of the plan, then you got it. Gigantt lets you estimate each task and sums up complex items for you.

If you estimate an item and then add sub-items inside it, the initial (parent's) estimate is ignored. This nudges you to spend a few more seconds thinking about the actual sub-items instead of giving a rough buffered estimate to it all.

Estimates are intentionally discrete and range from 15 minutes to 1 week. Higher resolution is unimportant for effort estimates. It's more important to be able to flush out the different parts of the plan quickly than to be able to estimate any particular part at 18 rather than 19 minutes.

More complex time estimates (and deadlines, start/finish-times, etc.) will come in later versions.

Planning backwards

This may be my favorite feature of this whole application. Sometimes it's easier to think of an end goal and then work your way back. Gigantt now lets you do this by making it just as easy to create a "predecessor" item (Ctrl+Enter) as it is to create a "successor" item (Insert).

The mouse strikes back

Lots more shiny new buttons and other features that you're going to have to discover for yourself. In particular, the last release was all about the keyboard. This release focuses on the mouse and lets you achieve with it anything you could do with a keyboard shortcut. The keyboard is still the fastest way to edit a plan (can use more fingers..), but sometimes you just need to get by with the mouse, and now you can.

p.s.If you're not seeing the new UI when you log in, then try to clear the browser cache. I might have used the wrong caching configuration in the previous release. Please let me know if this happens to you.

Saturday, December 4, 2010

No single invention deserves more credit for making project planning as unpopular as it is today than Tracking Gantts. Tracking Gantts should not only be considered harmful - they should be considered evil. Here's why.

Reason #1: Their motivation

Tracking Gantts let you see, for each step of your plan, how long you thought it's going to take and how long it's actually taking. You get to know, every day and in status meeting, that phase X was supposed to start by March, but it's clearly not going to get started until May.Awesome.You already knew, when you did initial planning, that the plan is going to have to change as the project progresses. New information comes to light. People and resources are unpredictable, etc. So why is it important to constantly be reminded, in every status meeting, how poorly your early predictions are fairing in real life?

Reason #2: They force you to stick to the original plan

The very idea of tracking a project's Gantt chart means that instead of focusing on constantly adapting your work plan based on new information, you choose to stick to an outdated plan, just because it lets you point fingers and highlight the mis-predictions that were the inevitable result of the huge amount of uncertainty that the early planning phase of the project entailed. After all, you can't track the Gantt if you allow the plan to change radically, right? It has to have the same general shape and be comprised of the same steps, otherwise there's nothing to track...Boneheaded sticking to plans is the number-one reason why "Waterfall" is actually considered a pejorative term these days. Planning ahead is confused with sticking to the original plan.

Reason #3: They teach you nothing

It's not like the delay in this project is actually going to change the way you plan the next project, unless the projects you're planning are predictably similar and repetitive. After all, that's what Gantts were initially used for - planning work in factory production lines, where tasks are very well defined and their duration is extremely predictable.

The value that tracking adds to a software development Gantt chart is zero. Arguably even less than zero. Not only are past estimations irrelevant for new projects, the illusion that you can actually improve your estimation ability over time by retrospection is dangerous. Sure, a CS student might really not know that integration takes lots of time in real life. But anyone that's been involved in more than two projects in their lifetime is already well aware of the usual suspects for delayed projects. The real reason projects are delayed is not some mathematical error factor that must be applied to estimations in general - it is the inherent uncertainty that comes with doing something for the first time and not knowing exactly how it's going to pan out.

There are actually project management systems out there that try to attack the problem from this misguided angle. They measure your predictions vs. actual performance and try to correct your overall estimation using statistical analysis. As if "Danny always underestimates everything by 14.3%" is ever the case. Danny isn't stupid, and to assume that the error of his predictions is predictable is indeed idiotic. It confuses the primitive "cure" - adding factors to your estimation - with the cause of the problem. Your estimation isn't inaccurate because it wasn't multiplied by the "correct" factor. Your plan is simply incomplete; and every plan is incomplete in its own way.

Reason #4: They focus your attention on the wrong things

Instead of being focused on what needs to get done to deliver on time, you're now focused on justifying your inaccurate predictions. Instead of focusing on planning in more detail and adapting your plan to new information, you're rehashing an outdated plan. Projects are seldom delayed because the work-plan's parts were incorrectly estimated. They're delayed because a crap-load of things were simply left out of the original plan. Tracking Gantts make this even worse, because what sort of motivation do you have to insert more detail into your plan if it's all just going to wind up highlighted as a poor estimations in every status meeting? They make you stick to large, track-able chunks of work in your Gantt chart. Instead of letting you focus on adaptation and getting on the right track, they make you reexamine irrelevant decisions that were made when less information was available.

There's also the problem of not having good enough tools to manage sufficiently elaborate plans. You have a much better chance at constructing a good initial plan (and estimation) if your tools allow you to expose all those frequently neglected steps along the way. Traditional Gantts are low-resolution beasts that are rightfully seen by developers as caricatures of the reality of project management. What's needed is a tool that makes it easy to add as much information as possible to the work plan at the earliest stage, and then make it just as easy to adapt your plan as the fog of uncertainty slowly fades away from over your project. The last thing you need is incessant low-resolution reminders of your inaccurate past predictions. Tracking Gantts are good for pointing fingers and covering asses, not for getting things done.