mountains are actually 100 little hills
There have been a lot of metaphors used to describe software project management. Waterfalls and Spirals are both pretty common metaphors. In more recent history we’ve started thinking of teams as being agile and their work as being sprints. I haven’t heard any great metaphors for the act of project planning though. I’ve come to think of it as slicing a mountain up into a million little hills.
When engineers are thinking of how to solve problems (which is most of the time) they tend to think about “everything” it will take to bring something to reality. This is a great trait, and it is present in all great software developers. They are the ones that will respond to “can we add feature X to widget Y” with 200 reasons why it won’t work, and 2 great alternatives that would work better instead.
The unfortunate side effect of this skill is that sometimes engineers will look at a big problem like “create an operating system designed to run in the palm of my hand” and their internal todo list creator will overheat. They’ll start at step 1, see something attainable, move on to step 2, 3, 4, 5, and somewhere around step 75 their brain will overload and the problem will go from something that is possible but difficult to impossible.
The key for a project leader is to take that mountain of a project and turn it into a sequence of little hills that are all individually attainable and when finished will lead to the top of the mountain.
Sometimes this takes the form of compartmentalizing. “Let’s ignore the wireless syncing feature for now, presume we have a connection, how can we synchronize the data once the connection is established”
Sometimes it means creating a path that the developers can walk down with you. “Yes eventually we’ll have to rewrite this entire module, but what if we just rewrite this small part now and wire the old one and the new one together in the meantime?”
Sometimes it’s about talking about the view from the top of the mountain. “Imagine how great it’ll be when we do finally rewrite this old Basic code in Java?”
Sometimes it’s about obscuring the mountain top. “We don’t have to rewrite everything, just these two modules for now, and then we can get this version shipped.”
The key in project management is to know the developers and know the project well enough to choose the right strategy at the right time.
Step one is always taking a good long look at the mountain…