Developing Programmers .com

Local Search:



This site is optimized for standards so you can use any standards compliant browser:

Valid XHTML 1.0 Transitional
Valid CSS!
(RSS) RSS Feed

Web Search:
Google


Thursday, 18 May, 2006

Managing Managers  

In my dream job, I would have a manager that takes care of how code is turned into money for me and is able to manage projects in a way that never results in “crunch time” or having to compromise.

In practice, people who can manage programmers well are rare. You’re most likely either to find career managers, who did a management course and don’t know an awful lot about programming, or to find programmers managing. These programmers-managing would love to be in there coding with you but instead have to manage a group of people, which sounded like a promotion at some point but is really quite a different role.

My boss is the second type, although a researcher managing rather than a programmer managing.

Sometimes our managers need a helping hand. For example, I recently changed the direction of our current project, possibly steering it from a deadline overrun, just by writing up a Gantt Chart.

A Gantt Chart

If you’re not familiar with Gantt charts, they’re basically a to-do list that shows on a graph the time it’ll take for each task and which tasks can be done in parallel. You could get much the same effect for a small project by writing out tasks in a spreadsheet with the estimated time beside each task. A good Gantt chart breaks the task down into small enough tasks that a time estimate for them is reasonable. For example, you might estimate a week to write a module but if you break it down into UI (2 days), database connections (2 days), logic (2 days), debugging (3 days) then you’ve just shown it’ll take almost two work-weeks. The latter estimate is more likely to be accurate because we have a tendancy to “forget” trivial tasks but they still take up our time.

Time estimates are difficult but if even your estimates run past the deadline at least there’s time to change something! This is roughly what happened at work: I collaborated in estimating the time for each component with the person I’m doing the project with, and we ended up agreeing on a time-line/Gantt chart for the task we’d been set that ran well past our deadline. We took this to our boss early enough that we could make a new plan. We still don’t know if the new plan will result in another difficult “crunch time” or not, as estimates are notoriously unreliable, but at least we changed things early enough and the estimates predict that an on-time project is plausible.

Looking around on the web I found another amusing anecdote about programmers helping their boss out with time management: At a company called BigBook a deadline was slipping so the manager wanted to hire more help. The programmers failed to convince him that the tasks required were sequential and more help really wouldn’t speed up the project. They tried to persuade their manager to read Brook’s book, “The Mythical Man Month”. The book is often boiled down to Brooks’ Law: “Adding manpower to a late software project makes it later”, but it does offer a lot more insight than that. According to O’Reilly Radar:

After failing to win several arguments on this point, the engineers became exasperated and decided to hold an intervention with the CEO. They each bought a copy of Brooks’ book, brought the CEO into a conference room, and stacked up the copies of the book, telling him, It is extremely urgent that you read this book. We’ve bought you many copies so that you might read it faster. They made their point.

Posted by sarah at 6:59 pm in: Planning , Risk Management (6162 views)

3 Comments

  1. If your current schedule is “plausible”, does that make your previous schedule “busted”? :-)

    Comment by jiri — On 18-5-2006 at 8:55:06 PM

  2. Do you have any recommendations for Gantt chart software?

    I’d like to tease out and emphasise a few of your points: programmers need to be able to estimate how long their work will take; they need to be able to provide feedback (”pushback” or “manage upwards”); ultimately they need to be able to say “no” confidently when managers (or other programmers) say that crunch time is a fact of life (40-hour Week is one of the 12 practices of eXtreme Programming).

    Comment by David Golding — On 21-5-2006 at 10:08:48 PM

  3. Gantt Chart Software

    I currently use Imendio Planner (formerly known as MrProject), from http://developer.imendio.com/wiki/Planner

    Basically it’s available for automagic installation as an Ubuntu Linux Package, so when I went hunting that’s the first option that came up. It does what it does well, but really provides “just the basics”, the feature set isn’t impressive.

    I gather Microsoft Project is a popular “default” option for Windows users, and in much the same way Imendigo Planner was a “default” option for me when I went looking for a Linux alternative.

    Managing Upwards

    Indeed, this was one of the themes in the background of this article. It’s an important skill and hard to do well. I really need to discuss this with others before writing about it since it’s different in every workplace. I’ll start a forum thread about it so I can get a few ideas together. I’ll also start another on why we need time estimates and how to estimate time effectively.

    Comment by sarah — On 21-5-2006 at 10:42:06 PM

Please use the DP Forums for further discussion of this topic.