Some thoughts about differences I noticed between traditional management and modern software project management.
In traditional management
a manager can define and be responsible for the deadline and the scope of a project
(i.e. fixed scope, fixed price, fixed deadline contracts). Often with the assumptions that :
- the customer knows all what he wants (before the project start)
- the developers know how to build it (before the requirements are known and understood and the used technology is proven and well known)
- nothing will change along the way, unforseen events will not occur
and the belief that team velocity and quality are variables
that can be controlled to meet the the deadline.
In modern management
the manager can define and be responsible for the goal of the project and the budget invested
(i.e. fixed budget, fixed price per function point or story point) and recognize that:
- the customer learn what he needs during the project and needs can change
- the developers discover how to build the required system with the chosen technology more and more during the project
- things change, new things are learned and discovered, priorities change
and with the understanding of the nature of the software projects processes that on some degree are inherently unrepeatable and unpredictable (empirical) use continuous and frequent inspect-adapt loops to constantly control
the scope (prioritize and reduce) and direct
the effort (choose the next most valuable increment of the product).