"The old saying goes, 'To the man with a hammer, everything looks like a nail.' But anyone who has done any kind of project knows a hammer often isn't enough."
This book aims to give you the ability to change perspective by applying knowledge from different disciplines.
We need to remove our ego be aware of the limits of our perspective, and be close to the result of our decisions.
Maps as many parts of the software are just abstractions to the real world with some limitations, but at the same time it allows us to navigate easily regarding the purpose of the abstraction
- We need to learn at least the basics of the realm we are operating in
- talk to experts: follow them on Twitter, Open-Source Software
- Falsifiability: use TDD to validate your assumptions
- Origin of the ideas
- Challenging assumptions
- Looking for evidence Use the 5 Whys: To debug a software or organization problem
- Ask a question
- Conduct background research
- Construct hypothesis
- Test with THOUGHT experiments
- Analyze outcomes and draw conclusions
- Compare hypothesis and adjust accordingly
Sometimes the cost of replicating or changing something is just too high. we can replicate some engineering scenarios on our minds and let the magic happens
- Realize the long term interests
- Identify the effects of the effects
What are the consequences of bad quality software?
What happens if we add more testers?
We are hiring 100 new engineers... but the onboarding process is poor
- Bayesian thinking: using a base rate information (taking outside information)
- Fat-tailed curves: different from bell curves and normal distribution, something to be aware of
- Causation vs Correlation
In estimation: Do we have a previous model of how long it will take? Can we provide a worst, media, and best scenario?
- Approach situation from the opposite end of the natural starting point
- Set your assumptions
- Identify what are you trying to avoid
What if we need to be flexible to a customer request?
Training to increase retention?
- simpler solutions are more likely to be correct than complex ones. "When you hear hoofbeats, think horses, not zebras"
Don't over-engineer. Senior developers tend to create simpler solutions
- Passes the tests
- Reveals intention
- No duplication
- Fewest elements
- Don't attribute to malice that which is explained by stupidity. It's less likely for two things to be true than one (less)