Member-only story
When Creating Software, Focus on What Can Go Wrong
Avoid being stupid as much as being brilliant

“It is remarkable how much long-term advantage people like us have gotten by trying to be consistently not stupid, instead of trying to be very intelligent.” Charlie Munger
The common approach to gathering requirements and creating software is to focus on what it needs to do, how it should work. Stopping users being stupid is as important as the software helping them do their job.
Software doesn’t just have to work, it has to not allow the user to get into a mess or get stuck.
Focusing on the happy path and meeting the requirements will mean you understand one side of the software. It leaves you open to allowing things to go wrong because you didn’t ask or think about what the software should do in your design.
A common weakness in requirements is they don’t think about what the software shouldn’t let the user do.
Like technical debt, the best time to stop problems is before they happen. If you think ahead, you can avoid problems or stop them from happening.
It’s hard to see the risk in your solutions or missing requirements if you don’t look for them.
Invert the problem
“Invert, always invert: Turn a situation or problem upside down. Look at it backward. What happens if all our plans go wrong? Where don’t we want to go, and how do you get there? Instead of looking for success, make a list of how to fail instead — through sloth, envy, resentment, self-pity, entitlement, all the mental habits of self-defeat. Avoid these qualities and you will succeed. Tell me where I’m going to die, that is, so I don’t go there.” Charlie Munger
The idea of inverting the problem is a tool to view the software you are creating…