How Big Things Get Done

This book is one of my favourites regarding project planning and management, because it offers many interesting and valuable takeaways on how to handle project planning and how to think about large projects—construction, software, or otherwise.
Haste makes waste
The biggest costs in a project occur during execution rather than during planning. Therefore, good planning is a prerequisite for mitigating risks. This is not a bias against action, but rather a bias in favour of thinking.
Planning and constraints enable true creativity. In software engineering, these enabling constraints could be choosing a well-established and opinionated framework. The two factors that hinder productivity are:
- Feeling that we are not in control
- Thinking that others are judging us
Planning prevents the feeling of being out of control and therefore enhances creativity.
Principles of project thinking
Starting from the goal and thinking backwards (the right-to-left thinking principle) helps us focus on what is important. It helps us discover alternatives, question assumptions, and reminds us that there is always more to learn.
There is a cognitive bias known as WYSIATI — What You See Is All There Is. This is a psychological pitfall related to availability bias. When facing a decision about a project, the mind tends to loop through familiar events instead of considering alternatives. We literally forget to account for what we don’t know. To avoid this bias, we must avoid assumptions, keep an open mind, actively discover alternatives, and engage with different viewpoints.
Project strategies
Modularity and simplicity foster repetition-based learning, which enhances speed of delivery. Simple things are good, and small modular things are simple. Just like in evolution, the most fit and easily reproducible modules survive.
By having small modules, we can experiment and identify the ones that are easily reproducible. Reproduction leads to repetition, which results in learning and accelerated development cycles. This is important because tacit knowledge is created through repetition. Repetition leads to experience, which creates tacit knowledge—and repetition itself is enabled by modularity.