In making the transformation to economic governance, one needs to make a counter-intuitive leap from deterministic decisions to non-deterministic reasoning. This is not easy for most of us. Especially project managers who are experienced and trained in traditional project management disciplines of detailed planning, critical path analysis, earned value management and the like, have a very rough transition. They must move from a world of managing certainty, details and precision to a world of resolving uncertainty based on probabilistic judgments and investments.
Consider the levels of uncertainty shown in the figure below. Most engineering disciplines have evolved into the lower three levels, where uncertainty is relatively manageable. Engineering endeavors can generally rely on the deterministic behaviors governed by well-understood laws of physics and properties of materials, as well as numerous precedent systems. High-uncertainty engineering efforts are still attempted, such as capping the Gulf of Mexico oil leak in 2010, but these are the exceptions. Software delivery, by comparison, is a discipline dominated by human creativity, market forecasting, value judgments, and uncertainty levels commensurate with other economic endeavors like movie production and venture capital management. Some of the software development life cycle can be managed like engineering endeavors, but most software projects include substantially high levels of uncertainty.Conventional engineering project management techniques assume little uncertainty in their requirements and exploit mature precedents for production and deployment.
Software projects managed with such engineering governance models typically uncover stifling, malignant changes late in the life cycle and spend 40% or more of their effort consumed in late scrap and rework. The iron law of software engineering is this: The later you are in the life cycle, the more expensive things are to fix. If you are experiencing this iron law, you are probably anchored in a conventional waterfall-model process. Your process may be mature, but it might be more accurately described as, geriatric.
Modern software delivery is a much more creative discipline, akin to making movies, producing a play, or writing a book. Consider these 3 observations:
- Most software professionals have no laws of physics, or properties of materials, to constrain their problems or solutions. They are bound only by human imagination, economic constraints, and platform performance.
- Quality metrics for software products have few accepted atomic units. With the possible exception of reliability, most aspects of quality are very subjective, such as responsiveness, maintainability and usability. Quality is best measured through the eyes of the audience.
- In a software project, you can seemingly change almost anything at any time: plans, people, funding, requirements, designs, and tests. Requirements—probably the most misused word in our industry—rarely describe anything that is truly required. Nearly everything is negotiable.
Software project managers and movie producers create a unique and complex web of intellectual property bounded only by a vision and human creativity. Both industries experience a lower success rate than mature engineering enterprises. Software engineering discipline has its place, but software governance techniques must steer through far greater levels of uncertainty to deliver better economic outcomes.
Successful software outcomes are highly dependent on continuous negotiations, accurate predictions, value judgments, innovations, team collaboration, architects, agility, market conditions and user demand. Success is much less dependent on quality of contracts, Gantt charts, critical path schedules, earned value, laws of physics, properties of materials, mature building codes and certified engineers.
Software delivery is much more a discipline of economics than it is of engineering because it is a complex endeavor that is inherently non-deterministic…there is much more uncertainty.