Saturday, September 11, 2010

Project Management sucks

Why does every project management system suck?

Clearly, something is wrong. There are so many of these bug trackers and project management systems and such and they all suck. And people keep making more of them all the time, and they all suck, in more or less the same ways. Why? Because none of them are really that much different. So everybody thinks they can invent something better. Including me.

So here's my take on how it should work. Lets keep it as simple as possible. First of all, whats the main goal here? I'll tell you. The main goal is to Get Stuff Done. The main goal is not to spend all your time shuffling around tasks, doling them out to your underlings, revising estimates, making pretty diagrams, and getting all pissed off at everyone when a milestone is missed. No, the main goal, the only important goal, is to Get Stuff Done. And your client doesn't give a monkey's ass how you do it, he just wants you to Get Stuff Done.

So, the first and primary purpose of a good project management system is to help you Get Stuff Done. Its a Stuff That Needs To Get Done manager. So why the need to create artificial walls around the Stuff? You've got projects, tasks, bugs, task lists, milestones, etc. No! Its just Stuff. A project (and you probably have several) is your top level Stuff. Under that is more Stuff (tasks). You might let the client enter Stuff (bugs). You'll probably want to group Stuff with other Stuff its related to (tasks lists). And you'll want to Get Stuff Done in a timely manner so you might group Stuff and put a deadline on it (milestone).

Here's the important part of what I am getting at. You may want to move things around, and arrange them in different ways for different purposes. So, you may enter in all this general stuff you need to do, and then later break down each of those into more detailed lists of stuff. Or not. In every system I've seen you need to decide which Stuff needs to be a list of more items (a task list) and which are the lowest level tasks. And then you are stuck with that. Same for bugs. You can't say hey, this task here, its really 4 other things that need to be done. And this bug, its going to need to be turned into 3 tasks, one of which goes into milestone whatever, and 2 into this other task list.

You shouldn't have to add the whole task list to a milestone, you should be able to assign whatever sub tasks you want to whatever milestone you want. You should be able to group your Stuff by multiple other Stuff (milestone, similar tasks, section of website, etc).

Then there's the second fundamental purpose. Now here's a concept that may be alien to many people. It's a quantifiable unit known by most people by the common and usually pejorative term "work". A project management system needs to keep track of Stuff That's Been Done, IE "work", or more importantly, Stuff That's Going To Be Done. You know, that thing which causes angst and annoyance in every programmer.. the dreaded Time Estimate. The evil overlord Project Manager needs to have some idea how long its going to take to Get Stuff Done, and he needs to know When Stuff Is Done. You know, Estimates and Work Completed.

And that, really, is all the Project Management System needs to do. Keep track of Stuff, Stuff To Be Done, and Stuff That's Done. Stuff, Estimates, and Work.

I'm making it moronically simple because let me tell you, people dont use the project management systems because they suck. Or if they do, it gets in the way and slows them down and doesn't really help. I've tried a dozen different systems in the last year and they all suck, nobody uses them correctly, nobody *wants* to use them, and we all do most of our collaborative work through fucking email! All the really important Stuff about the projects I am working on is in my email! The client's expectations, the 'user stories' that develop when I have to ask the client what the fuck is this supposed to do, estimated times from other programmers that I then have to painstakingly transcribe into the project management system (which doesn't take less than a day for the estimated time... duh?).

So a project management system that doesn't suck has to be braindead simple to use, and completely unrestrictedly flexible. Because programmers don't have time to fuck around with it, and the project managers need to be thinking at a much higher level than dicking around with every little detail of every little task. It needs to somehow integrate with email and even messaging systems because realistically thats where we all do the most collaborative work. It should probably be open source, or at least have a completely robust and simple API that you can plug into so you can integrate it with whatever other systems you are using (source control, build systems, etc).

So that's my beef for today.

Now if I wasn't so busy bashing my head against our current project management system and trying to coordinate several projects and developers, I might try to develop this myself.

And that's probably the real reason for the suckage. Those of us that really need it and know how it ought to work are just too busy to do anything about it.

1 comment:

Wayne said...

Yep. And it sucks that you didn't fix it yet!! ;)

I'm on a continuous hunt for something that doesn't suck - if you haven't seen it yet, you may want to check out http://checkvist.com/ - It sucks less than most others, even though it's not really a full project management system.