I listened to a great lecture given by Maurice Perks - a Fellow at IBM - on the sins of IT projects. One of his points got me thinking. He was talking about the difficulty of simply knowing where you are with an IT project. That is, knowing how much is done, what is done and how much is left to do. With software projects this is typically very hard and he cited examples of when projects suddenly fall behind schedule, when in fact they have in all likelihood been behind schedule for a long time.
He drew comparison with civil engineering, making the point that it’s much easier to see the progress when you’re, say, building a bridge because you can see it (or the absence of it). You can generalise this notion and say that it’s far easier to judge the progress and state of something when you can rely on your senses.
So the suggestion here is that software projects are in part hard because we’re engineering something that for the most part is intangible.
My thinking was: how can we transform software projects into tangible domains so that we can use our senses to gauge their progress and state. Here are some ideas (some are silly):
- User Interface components that are red when their functionality is not implemented.
- A live class diagram of the project’s code set that grows as it’s added to. The size of each shape representing a class could relate to the amount of code.
- A static analysis and code style tool that releases a horrid smell into the office depending on how many problems it finds. (code smells!)
- Live diagrams that show how much testing each piece of code has received - perhaps overlaid with the number of bugs found in that code.
- Some kind of diagram showing the age of the code to show you which bits are stable or haven’t been touched.
On the whole I’m interested in this idea of live diagrams. So many projects have such complicated object graphs that they need to be printed on large plotters. This means that these diagrams are rarely printed. Surely now LCD screens are cheaper and bigger we could use some of these.