Program Management - Problems to Solve
After many hundreds of millions spent over nearly a decade, Boeing has given us another reminder of our inability to complete large programs successfully. While Boeing has been one poster child for program management in 2019, they have good company. The major auto companies of the world are struggling for their future, trying to answer the challenge laid down by the small upstart Tesla. Close to home for me, the three aircraft engine manufacturers have all had troubles bringing new products with demanding efficiency requirements to markets. Surely not all of the problems these companies can be attributed to problems in program management as it is performed today - but I believe that many can.
I posit that program management for large scale engineering programs has reached the point that military staffs reached in World War One and the beginning days of World War Two. The industrial revolution had created machinery capable of killing people with far greater efficiency then every before. When that was mixed with modern Nation-States that were capable of great expenditures and supplying a great many men to the trenches, the results were the worst senseless killing in human history.
If program management is facing a similar point in it’s history (with much less grave, but nonetheless serious implications), what about it’s circumstances have fundamentally changed? Here are my thoughts.
The Movement from Complicated to Complex
Blaming the move from complicated to complex is a popular excuse, so one needs to be particularly cautious in attributing problems to this. My personal experience (sample size 1) tells me that this is an issue. Companies and governments continue to insist on creating very detailed plans for a program’s execution, but before the ink can even dry on the plans, managers are asked to change objectives and create new plans. No matter how detailed and well intentioned plans are, they often miss what in retrospect were the true time consuming factors.
At least two challenges need to be addressed in regards to complexity. First, it should be proven that programs have become more complex over time with quantitative data and analysis rather than anecdotal stories. This is not easy to do. In today’s world programs throw off lot’s of data that might be used to measure complexity. But to capture the levels of complexity over time will require finding quantitative measurements for programs in the past when data was not generated so easily.
Assuming that growing complexity is a problem, another challenge is how to develop plans that are more accommodating to the surprises and randomness inherent in complexity. I believe these plans need to focus on making sure that they are working on the most important tasks at a given time. And what are the most important tasks. Traditionally the critical tasks would be the task that is on the critical path. The critical path is the path through a Gantt chart that has zero slack - it sets the total calendar time of a program. But in a more complex world, it might make sense to more heavily prioritize tasks that could reduce complexity or uncertainty to a program and eliminate them if possible.
Living with Uncertainty
Program timelines and results are not deterministic - there are many random variables involved. We need to figure out better ways to use probability and statistics to both manage our projects and communicate their status. People have tried to use tools like three point estimates to capture uncertainty, but they typically lack good data upon which to make good assessments of the probability of different scenarios. What are the best ways to collect data that can later be used to calculate variability.