I’m currently on the lookout for a new project management software (PMS). I can’t bear Microsoft Project anymore. For maybe ten years now Microsoft Project has consistently refused to support more than one level of undo. Suppose you have a nice project which is all balanced and tidy and cool. You make a little edit that breaks something, but you don’t notice yet. You make another edit. Duh, that’s when you notice your first mistake. You’re stuck, pal. Undoing will undo your last edit, and undoing again will redo your last edit. Sigh… So basically when I’m building a project schedule, I’m wasting a lot of time saving & commiting my work to a Subversion repository, so that I can roll back to a good state if I’ve broke something in the project. This, along with the fact that it’s very easy to break anything, due to the disastrous tendency of Project to letting default computation overwrite carefully hand-filled data, is too much. We’re in 2005, aren’t we ?
And I won’t write about the curious arithmetics and rouding behaviour that MS Project features. You know, the kind where 0.25 days + 0.75 days = 0.997754 days. How fun it is when you present your schedules to your boss or customer.
It seems like the limitation on undo levels is an industry standard, though. I imagine PMS designers, with totally uncool 80′s wool sweaters, checking features on a piece of punched paper : « Stubborn one-level undo, check ! ». The whole scene would take place in a neon-lit, windowless basement room. Indeed, Open Workbench, the free, open-sourced version of Computer Associate Clarity, is almost as good as Microsoft Project in this domain. I mean, they have the same one-level undo feature. How cool.
I don’t know how PS8.5 behaves in the undo departement, but I’m surely highly doubtful that PSNext, the new, web-based version has more than one level of undo. I wonder if it even has one level of undo. Heck, managing database consistency when multiple users are working simultaneously is difficult enough, with a set of pessimistic or optimistic locking strategy, but I can’t imagine what the problem becomes if you try to enter undoable actions in the process.
One of the funniest thing to do when you use a PMS is changing the project structure. For various reasons, on one of my biggest projects, I had to present three differents cost structure to my customer, all based on the same project. The first time, I structured the project phases and tasks the way I was used to do. Then my client requested that I divided the work another way to suit its comparison grids (that was during presales). Then once we won the project, my client requested another structure for the project, to suit its buying departement needs. Believe me, there isn’t any PMS out there that will be actually helpful while doing those various restructurations. Quite the contrary.
The end result was that I quit using MS Project and reverted to Excel, which has more than one level of undo, making sure that the project budget was the same berfore and after the restructuration. This was then that I discovered the weird rounding mistakes Project does. Unfortunately (or not), Excel does not do the same mistakes, so you have to manually alter some computations so that the final budget matches the previous one to the cent. Otherwise, it would not look serious enough, I mean, if you cannot rebalance your budget without changing the net result, you might as well drop the whole thing.
Using Excel for project management is not a bad choice, as Joel Spolsky demonstrated. But you know, PMS could provide an added value over doing everything manually with Excel, like computing critical paths, trying to schedule resources, and actually provide help when tens of tasks are changed, when new deadlines are introduced, when additional works appears and you have to justify elapsed & remaining time to your customer so that you may eventually charge him for the new features.
I’m writing all that because, you know, the project with three major budget restructurations ? I have to rebuild it a fourth time, taking into account elapsed time, new features, new deadlines and so on. It was difficult enough when the project wasn’t started and everything was pristine, but now, well, it’s quite overwhelming. Anyway, onward !
That’s why I find faces very cool : the editing interface is a text editor with a clever code completion engine (need I say that it supports multiple undo levels ?), and what you edit is Python code ! The code looks like that :
class Bob(Resource): pass class Alice(Resource): pass def My_Project(): resource = Alice | Bob def Task1(): start = "2005-1-16" def Foobar(): effort = "5d" def Buffer(): resource = Alice & Bob effort = "4d" def Task2(): start = up.Task1.end effort = "1w" def Task3(): start = up.Task1.Foobar.end effort = "5d" project = BalancedProject(My_Project)
From this project description, faces computes a scheduling (there are multiple scheduling algorithms), and can show you various diagrams and reports, including of course Gantt charts. It can even generate HTML pages so that you boss/customer doesn’t have to learn Python to understand the project structure . Since the file format is Python, you can use a whole bunch of already existing tools, including Subversion which should be handy to compare two different version of a same project. And of course, you’ve got a built-in scripting language to edit your project structure (or is it a built-in mini-language to describe the structure ???) so you can easily work around missing things like recurrent tasks (just build them in a loop).
Of course, this is totally a tool for programmers or the kind of people that rather write code than enter data in Excel… Which is why I can’t use it professionnaly, not being the only one to have to edit the project. That’s too bad ! But I’d like to send Michael Reithinger a big thumbs up for his work on faces. It’s very cool, extremely well designed, and professionally packaged (including a standalone installer for Windows) !