Search Contact information
University of Cambridge Home Department of Engineering
University of Cambridge >  Engineering Department >  computing help

Computer Project Management

Or see the newer, expanded version
[Staffing] [Requirements] [Time Estimates] [Procedural Issues] [Working Alone] [Bug detection] [Slippage] [The End] [References] [Jargon]

Computer Project Management

In a university environment, Computer Projects This document attempts to adapt some standard Project Management procedures to this situation (viewed mostly from the programmer's perspective). Contributions and suggestions welcomed! A "slides" version is available.

Staffing

If you're going to manage a project it's worth holding out for the best staff. Good programmers are at least 10 times more productive than bad (Survival Guide p.102) so staff will often give a busy programmer a job rather than temporarily employ a student. There's not always much choice though.

If you can employ several people your team might well comprise: Project Manager, Product Manager, Architect, User-interface designer, End-user liaison, Developer, QA/Testers, Toolsmith, Build Coordinator, Risk Officer, End-user documentation specialist (Survival Guide p.105). These don't always get on with each other. If they're all one person, beware!

It's likely that programmers will be seconded from other work. Sometimes this results in the programmer doing 2 jobs at once. Even if the project succeeds there may be failures elsewhere as a consequence. You need to decide how much of this task-balancing is your responsibility.

Requirements

Sometimes in business the managers want to introduce a new computing system so that they can radically change working practises - the program becomes the means to fulfill a non-computing end. The "success" of the system will depend on the quality of staff training and the nature of input the staff had into the design process.

In the academic world the true purpose of the program is usually clearer, but even so, as soon as the program needs to be used by someone other than the programmer, misunderstandings can arise.

Time Estimates

Hard. Many procedural decisions aim to improve the accuracy of these estimates. As usual, decomposing the task helps - if phase 1 takes 20% longer than estimated, and other phases are similar in nature to phase 1, then you have an early warning of a 20% over-run for the whole project. If tasks are small then they're more likely to be comparable to other tasks, making future estimation easier.

Procedural Issues

Modularisation and Plugs-in

Splitting the task into de-coupled sections has many benefits. Recently, Plug-in architectures have become popular. As well as allowing others to extend the program, there are development advantages too

Model

Note that in an Object-Orientated situation, things might not develop as outsiders (or older programmers) might expect - if data-structures are hidden away inside objects, detailed decisions about data-structures may be defered. Top-down design is complicated by the fact that there may be no "top".

Monitoring Progress

Some monitoring is needed, both for your own benefit and to keep others happy. If none is done, the unproductive time and 'admin' overhead increase rather than decrease as the project progresses. For small groups, the cost of computing metrics is 3-8% initially dropping to 1% (Pressman, p.100). Records are also a way to cover yourself if things go wrong. Note than some statistics (e.g. lines of code produced per day) might be more useful as propaganda than as progress indicators. Of course, that doesn't stop them being useful to you. Especially if you're using O-O techniques you can bamboozle the boss with impressive complexity metrics (members per class, depth of inheritance tree, number of children, number of operations overridden, percent of public and protected, etc).

Chain of Control

Unless you're careful you may find yourself being softened up by individuals from opposing power bases. Even if there's an agreed chain of control, sabbaticals and pressure of work lead to line-managers being nominal. If you can't work under a single boss arrange meetings whenever feature creep arises (or get those who want the changes to organise the meetings)

Coping with change

Standards

Though in principle one should adopt official standards, in practise there are many "official standards" to choose from, and the newest may not be well supported. People who want the project to fail may insist on an impractical standard.

Companies may have standard ways of formatting code (see for example A C Style Guide - a 38 page DVI file). Even if you're working alone it may be useful to have a convention for compound names (compound_interest or CompoundInterest?) and a way of determining from an array's name whether the 1st element used is at offset 0 or 1.

Some common standards include

Software

Several sites (e.g. www.project-management-software.org) offer project management software. Perhaps the best known is Microsoft Project.

Open Development

An alternative approach is that taken by Linux, with a more decentralised model of software development that might be able to accelerate development - "Given enough eyeballs, all bugs are shallow". Instead of "users" and "developers", everyone is a potential "co-developer"

Working Alone

For much of the time you're likely to be working alone and unsupervised. Supervisors often underestimate the psychological issues involved. Be aware of your strengths and weaknesses.

Bug detection

Testers get credits nowadays on computer projects.

Slippage

"Of the most expensive software projects, about half will eventually be canceled for being out of control. Many more are canceled in subtle ways" (Survival Guide p. vii). Once things start slipping it's hard to get them back on schedule - the situation tends to get worse rather than better. This may be because of the nature of the project or choice of procedures. Problems include Delaying the release may be the only sensible option - "People forget how fast you did a job - but they always remember how well you did it" - Howard Newton.

The End

Oh no it isn't!

References

Jargon

© Cambridge University Engineering Dept
Information provided by Tim Love (tpl)
Updated 9/6/08 with help from James Matheson