Software development projects have an alarming tendency to get software project managers fired.
Imagine you are a software project manager…I’m not, but I can kind of imagine how it must feel. You probably wrote software a long, long time ago, but since then you’ve been managing projects. You know a few things: you definitely don’t want to get fired, which means that you want the project to succeed. You’re not allowed to push the project ahead by actually coding, so all you’ve got is project management and people skills to rely on.
People skills we’ll save for another day. Free sushi seems to work pretty well, but again, we can’t get into that now.
Now there is a whole pseudo-science of project management out there for you to use, with wonderful (software!) tools like MS Project that can be used to manage your software projects. Unfortunately you’ve observed that the MS Project masters still get fired with alarming regularity. And rumor has it that the project manager for MS Project uses it for her home remodeling projects, but not the MS Project development team schedule.
Hmmm. What’s the problem?
Well, there are a lot of problems. If there was just one problem, then we might find a silver bullet to really solve the problem. But, hey, I don’t need to outrun the bear, just outperform the guy down the hall so that the bear fires him. Since I can’t really write code, I’ll focus on some of the things that are relevant to the project management side of the business:
- The estimates I get from my engineers suck.
- The requirements keep changing, faster than I can cascade the corresponding staircase into MS Project.
- My team depends on other teams delivering successfully. They don’t, therefore I’m screwed. Or my team screws someone else’s team…you see where this is going, I imagine.
- The cost of fixing bugs is very very high.
Now, I’ve lasted at this project management game for a while, and the dependency problem is a big one, but usually I can get the other guy fired for that.
We’ll circle back to the quality problem later. For now, let’s just assume that I’ll encourage the team not to do stupid things like pretend to bring in the schedule by skipping testing. That hasn’t turned out very well the last three times we tried it, anyhow.
So let’s see, we’ve got terrible estimates and the requirements change all the time. My mom used to have the same problem chasing after three kids, each of whom thought their homework was almost done and kept forgetting to tell mom that they needed a ride after school to something or other.
How did mom solve this problem?
Time to take a break from surfing the web…er, I mean “working”, and give mom a call.
“Son,” she said, “you have to take it one day at a time.”
Come again?
“You realize that a bunch of things aren’t that important. If the garage doesn’t get cleaned today it’s not the end of the world.”
So you always work on the most important thing?
“You always work on the most important thing.”
And what if that isn’t working?
“Then you try something else.”
Hmmm. That almost sounds crazy enough to work.
This in a nutshell is Agile Project Management. You always work on the most important thing, and you make sure that every month or so you’ve made some progress. Real progress, that is, as in working code. And then you hope the dependency problem doesn’t get you fired.
I should mention that there is another way to attack the problem. You work very hard to get better at estimating, and you lock down the requirements. Locking down the requirements is very hard, but if you are say the military and you can shoot anyone who tries to change the requirements, you can freeze the requirements. Unfortunately even shooting engineers won’t get them to estimate better, since they really don’t know how to do it.
Well, if you let them solve the same problem over and over they would get good at estimating that problem, but it doesn’t help those of us who have to solve new problems. Since all of the money in software development is in solving new problems, again you are out of luck.
But this approach, in a nutshell, is TSP/PSP Project Management. If you don’t know what that is, consider yourself lucky…but don’t fear, we’ll come back to kick that cow in triplicate later. For now I’ll just say that at least the MS Project team knows how to write software that works.
Mom (who by the way could sling some mean IBM OS/360 assembler code back in the day, and tells me that Fred Brooks is a very nice man) told me to always work on the most important thing, which right now means writing a rather boring proposal on the best way to do a very boring code port, so I can keep my job. Sigh. We see that Dilbert and the pointy headed boss really do have a lot in common after all.
So it’s time to go, next time we’ll dive more deeply into the quality problem, and what it means to you as an Agile Project Manager. And maybe even get into the John Wooden problem with Agile Project Management.