With all the discussion about estimating, controlling, and sometimes even managing project it may be useful to have a paradigm of managing anything. One paradigm is the Control System. In some places where agile software development is discussed, the term Control is seen as undesirable. Of course that's not very useful in practice.
Let's assume that everything we do around projects has some form of control. Some form of producing a value from an input in a predictable manner. Of course the term predictable is seen as undesirable in some places as well. Both Control and Predictable as essential to producing an outcome from an input. Without Control and Produceability the result is Chaos and while that term is overused and misunderstood as well. But that's another topic. For now, let's look at the process of managing the development of any product or service.
The diagram below shows an Open and a Closed loop control system. Any system, no matter what it is controlling can only be controlled with feedback in some way. This feedback comes from measuring the output of the system and feeding back that measurement to the process controlling the production of the output. Without this feedback we cannot control the process. But feedback then require we measure the performance of the system under control in this case the project.
In software development that feedback might come for testing the resulting of the work effort against a planned behaviour. Does the software do what we planned it to do? Yes, good keep going. No, then fix it.
In the cost and schedule side of projects - we are spending money, likely other peoples money and they are likely expecting us to get done at some pre-planned point in time - the feed back from how much progress have we made against the planned progress and how much money have we spent to make that progress? So we need to measure the passage of time and the production of outcomes.
In practice this feedback loop is not linear, nor is much linear in real projects. As well not much is deterministic in real projects. Statistical behaviour of the underlying process creates probabilistic outcomes. With the statistics and resulting probabilities applied to non-linear process creates the following control system. Each of the functions at the nodes are differential or integral equations that participate in the control loop process.
In the end though the inputs are not completely known and if known they change. This creates the need for adaptive control system. This is the basis of most modern control loops.
A critical understanding here is if we are to make decisions about the system under control - in this case a project - we need to make decisions in the presence of uncertainty, the project statistical and probabilistic behaviour and the feedback gained from the outcomes of the system.
In most feedback systems, deviations in parameters values from their design values will not cause any problem in the normal operations of the system, provided these parameters are inside the loop. If the process parameters vary widely because of environmental changes, then the control system will exhibit unsatisfactory behaviors. In some cases large variations in process parameters will cause instability in non–adaptive systems.
A simple definition of a adaptive control system is: a control system in which continuous and automatic measurements of the dynamic characteristics of the process are taken, comparisons are made with the desired dynamic characteristics, and differences uses to adjust the system parameters – usually the controller characteristics – or the generation of a control signal (management corrective action) to maintain optimal project performance, regardless of the environmental changes to the process.
This diagram above can now be used to ask questions about the work processes used to manage the project. Do we know:
- The target outcomes of the project. Cost, Schedule, and Technical Performance?
- The units of measures of each of these?
- The dynamics of the system under control?
- If this is a production system (developing software), what is our capacity for work and the demand for that work?
- How to answer the customer's question - how much longer will this take or how much more will this cost or what is your (the developers) estimate to complete or what is your estimate at complete?
This last bullet is part of every actual project that spends other peoples money. So our project control system needs to be able to address this question in some way.