The University of Aberdeen
The Computing Science Department


The software factory has firm ideas about what works for software development and the management of projects. The general ideas follow on from Tom Gilb, Eliyahu Goldratt and David Anderson. So, in other words, incremental iterative development that watches for bottlnecks, which need to be resolved in order to increase the throughput of delivered software applications. The key while doing this is to focus on delivering solutions that the client values and avoiding building artefacts which will not be needed.
A key part of this is ensuring that we have short feedback cycles and check-in with clients frequently to ensure that we're building what's needed at the right time, and that what was delivered in earlier versions was working expected, or has presented us with a learning opportunity because it's not really what the person thought they needed, and we need to make changes.

These general concepts are embodied in evolutionary project management, theories of constraint, and agile and lean software development. These all flow back to the work of W. Edwards Deming on systems work and process control. In other words, you need to work towards specific goals to help the client run a better business, and measure your attainment of those goals. In addition you need to monitor your own work to see where you can improve your own processes in order to do more with what you have to hand.

Background Reading

You can get a general perspective on agile projects and their management from the two books by Henrik Kniberg: 'scrum and XP' and 'scrum versus kanban', which you can download from InfoQ.

Rocks Into Gold

Before you read anything else though, you must take 30-40 minutes and read this:

Rocks Into Gold - Helping Programmers THRIVE through the Credit Crunch - by Clarke Ching
View more presentations from cching.

Rocks into Gold by Clarke Ching explains why we're doing incremental delivery on our projects. This little classic in the making explains more simply than any other 'why' all projects should use incremental delivery for their software. This is short and to the point, and understood by many as you can see if you flip through the comments.