The iron cross
The iron cross, as described by Robert C. Martin, is a simple model of constraints in project management. Consider four knobs:
- Good: relating to quality of work
- Cheap: relating to cost of employees
- Fast: relating to date of completion
- Done: relating to scope of work
“Pick 3, but you can’t have the 4th”. In practice, it’s not an all-or-nothing choice for each knob but instead a range of values adjusted by “turning the knobs” whilst obeying the constraints of the model. For example, we can keep adding more work into a project, i.e. increasing the scope and changing what it means to be “done”, but if the “good” and “cheap” knobs are kept constant, “fast” is affected as the project deadline must be pushed further back.
Who turns the knobs? Management control “cheap”, “fast”, and “done”. We programmers should be in control of “good”, but beware of quality being forced down due to constraints. Currently, I’m seeing “cheap” turned up as companies increase offshoring. Time will tell how much this affects quality in my own company. I believe sufficiently high-quality code enables maintainable software, reduces technical debt, and is therefore cost-effective long-term.