Education is not the learning of facts, but the training of the mind to think - Albert Einstein
So if we're going to learn how to think about managing the spending of other peoples money in the presence of uncertainty, we need some basis of education.
Uncertainty is a fundamental and unavoidable feature of daily life. Personal life and the life of projects. To deal with this uncertainty intelligently we represent and reason about these uncertainties. There are formal ways of reasoning (logical systems for reasoning found in the Formal Logic and Artificial Intelligence domain) and informal ways of reasons (based on probability and statistics of cost, schedule, and technical performance in the Systems Engineering domain).
If Twitter, LinkedIn, and other forum conversations have taught me anything, it's that many participants base their discussion on personal experience and opinion. Experience informs opinion. That experience may be based on gut feel learned from the school of hard knocks. But there are other ways to learn as well. Ways to guide your experience and inform your option. Ways based on education and frameworks for thinking about solutions to complex problems.
Samuel Johnson has served me well with his quote...
There are two ways to knowledge, We know a subject ourselves, or we know where we can find information upon it.
Hopefully the knowledge we know ourselves has some basis in fact, theory, and practice, vetted by someone outside ourselves, someone beyond our personal anecdotal experience
Here's my list of essential readings that form the basis of my understanding, opinion, principles, practices, and processes as they are applied in the domains I work - Enterprise IT, defense and space and their software intensive systems.
- Making Hard Decisions: An Introduction to Decision Analysis, Robert T. Clemen
- Making decisions in the presence of uncertainty is part of all business and technical endeavors.
- This book and several other should be the start when making decisions about how much, when, and what.
- Apollo Root Cause Analysis: Effective Solutions to Everyday Problems, Every Time, Dean L. Gano.
- There is a powerful quote from Chapter 1 of this book
- STEP UP TO FAIL
- Ignorance is a most wonderful thing.
- It facilitates magic.
- It allows the masses to be led.
- It provides answers when there are none.
- It allows happenings in the presence of danger.
- All this, while the pursuit of knowledge can only destroy the illusion. It is any wonder mankind chooses ignorance?
- This book is the starting point for all that follows. I usually only come to an engagement when there is trouble.
- No need for improvement if there's no trouble.
- Without a Root Cause Analysis process and corrective actions all problems are just symptoms. And treating the symptoms does little to make improvements to any situation.
- So this is the seminal book, but any RCA process is better than none.
- The Phoenix Handbook, William R. Cocoran, PhD, P.E., Nuclear Safety Review Concepts, 19 October 1997 version.
- This was a book and process used at Rocky Flats for Root Cause Analysis
- Effective Complex Project Management: An Adaptive Agile Framework for Delivering Business Value, Robert K. Wysocki, J. Ross
- All project work is probabilistic.
- All project work is complex. Agile software development is not the same as project management.
- For agile software development beyond a handful of people in the same room as their customer, project management is needed.
- This book tells you where to start in performing the functions of Project Management in the Enterprise domain.
- The Art of System Architecting, 2nd Edition, Mark W. Maier and Eberhardt Recthin, CRC Press
- Systems have architecture. This architecture is purpose built.
- The notion the best architectures, requirements, and designs emerge from self-organizing teams needs to be tested in a specific domain.
- Many domain have reference architectures, DODAF and TOGAF are tow examples.
- Architectures developed by self-organizing teams may or may not be useful over the life of the system. It depends on the skills and experience of the architects. Brian Foote has a term for self-created architectures - ball of mud. So care is needed in failing to test the self-organizaing team's ability to produce a good architecture.
- The Recthin book can be your guide for that test.
- Systems Enigneering: Coping With Complexity, Richard Stevens, Peter Brook, Ken Jackson, Stuart Arnold
- All non-trivial projects are systems.
- Systems are complex, they contain complexity
- Defining complex, complexity, complicated needs to be done with care.
- Much mis-information is around in the agile community about these terms. Usually used to make so point about how hard it is to manage software development projects.
- In fact there is a strong case that much of the complexity and complex aspects in software development are simply bad management of the requirements
- Forecasting and Simulating Software Development Projects: Effective Modeling of Kanban & Scrum Projects using Monte Carlo Simulation, Troy Magennis
- When we hear Control in a non-determistic paradigm is an illusion at best, delusion at worst start with Troy's book to see that conjecture is actually not true.
- If the system you're working on is truely non-deterministic - that is chaotic - you've got yourself a long road because you're on a Death March project. Run away as fast as you can.
- Probability Methods for Cost Uncertainty Analysis: A Systems Engineering Perspective, Paul R. Garvey, CRC Press.
- All project variables are probabilistic. Managing in the presence of uncertainty created by the statistical processes the result in probability is part of all project management.
- This book speaks to the uncertainty in cost.
- Uncertainty in schedule and technical performance are the other two variables.
- Assuming deterministic variables or assuming you can't manage in the presence of uncertainty are both naive and ignore the basic mathematics of making decisions in the presence of uncertainty
- Estimating Software-Intensive Systems: Projects,Products and Processes, Richard D. Stutzke, Addison Wesley.
- Software Intensive Systems s any system where software contributes essential influences to the design, construction, deployment, and evolution of the system as a whole. [IEEE 42101:2011]
- Such systems are by their nature complex, but estimating the attributes of such systems is a critical success factor in all modern business and technology functions.
- For anyone conjecyturing estimates can't be made in complex system, this book an mandatory reading.
- Estimates are hard, but can be done, and are done.
- So when you hear that conjecture ask how you know that those estimates can't be made? Where's you evidence that counters the work found in this book. Not anecdotes, optioning, conjectures, but actual engineering assessment with the mathematics?
- Effective Risk Management: Some Keys to Success, 2nd Edition, Edmund H. Conrow.
- Project Risk Management: Processes, Techniques and Insight, Chris Chapman and Stephen Ward.
- These two book are the core of Tim Lister's quote
- Risk Management is How Adults Manage Projects
- Risk management involves estimating
- The Economics of Iterative Software Development" Steering Toward Business Results, Walker Royce, Kurt Bittner, and Mike Perrow.
- All software development is a MicroEconomics paradigm.
- Where the behavior of individuals and small impacting organizations in making decisions on the allocation of limited resources.
- When you hear about conjectures for improving software development processes that violate Microeconomics, ignore them.
- These limited resources are people, time, and money
- Assessment and Control of Software Risks, Capers Jones.
- Since all management is risk management, here's a book that clearing states how to manage in the presence of uncertainty.
- Software Cost Estimating with COCOMO II, Barry Boehm et. al.
- This is the original basis of estimating with parametric processes
- Numerous tools and processes are based on COCOMO
- Parametric estimating makes use of Reference Classes, same as Monte Carlo Simulation
- With a parametric model or a Reference Class model estimates of future outcomes can be made in every domain where we're not inventing new physics. This means there is no reason not to estimate for any software system found in any normal business environment.
- This is not to say everyone can estimate. Nor should they. The excuse of we've never done this below really means you should go find someone who has.
- Facts and Fallacies of Software Engineering, Robert L. Glass
- There are many fallacies in the development of software
- This book exposes most of them and provides corrective actions
- How to Measure Anything: Finding the Value of Intangibles in Business, Douglas Hubbard
- When we hear we can't measure read this book.
- This book has a great description of Monte Carlo Simulation (used everywhere in our domains).
- Monte Carlo started at Los Alamos during the bomb development process
- MCS samples a large number of value under in Probability Distribution Function that represents the statistical processes that are being modeled.
- MCS has some relatives, Boot Strapping is one. But it operates in a different manner though, using past performance as a sample population.
- Hard Fact, Dangerous Half-Truths & Total Nonsense, Jeffrey Pfeffer and Robert Sutton
- This book was handed out by Ken Schwaber's "The State of Agile"
- The key here is decisions are best made using facts. When facts aren't directly available, estimates of those facts are needed.
- Making those estimates are part of every business decision, based on Microeconomics of writing software for money.
So In The End
This list is the tip of the iceberg for access to the knowledge needed to manage in the presence of uncertainty while spending other peoples money.