
Hi there! AI is shrinking the amount of code many of us write. The real leverage of a software engineer, more than knowing a specific programming language or framework, comes from making the right decisions. Not only in software engineering, but also in life: as information is more readily available than ever before, the barrier to making good decisions isn’t about having access to data, but about knowing how to process it. However, every day we make dozens of calls with bias-prone brains. How can we make better decisions, not only as software engineers, but in our lives?
In this blog post, I give 10 tips that work for me when I have to make a difficult decision.
1. Start by slowing down
The first response to a situation is usually discomfort masquerading as urgency, but a rushed decision is usually just a reaction to discomfort. Sleeping on it, or taking days or even months (if the decision is important enough) to really think it through, it’s usually a good idea. The right decision often surfaces naturally when the brain is not worried about the urgency of it.
2. The role of inertia
Many times after a few days of thinking through the problem, you may realize that the best decision is actually not to do anything. The problem may as well be created only in your own head, amplified by overthinking or influenced by someone else’s opinion. However, doing nothing is still a decision with consequences. Inertia can be wise, but it can also be a trap if it keeps you from moving forward when movement is needed. As the Zen of Python beautifully puts it: “Now is better than never. Although never is often better than right now”. Patience is powerful, but passivity isn’t.
3. Ask what changed
If you feel compelled to undo a past choice, remind yourself that the previous decision was made with different knowledge, risk tolerance and priorities. Revisiting those decisions without judgment lets you spot when the context has shifted. Re-deciding is a sign of learning, not failure. Naming what changed helps you avoid the sunk cost fallacy.
4. Focus on the long-term - The regret minimization framework
Oftentimes, we create a story in our heads to justify the decision we want. However, it’s also important to frame it from all angles, so that we understand all possible consequences. We will often find conflicting stories that make sense. How to make a decision then? Jeff Bezos was also confronted with a similar situation and created the Regret Minimization Framework, which is quite simple: Imagine yourself at 80 years old. Will you regret taking (or not taking) the decision?
5. Listen to advice but make your own decision
There are always people that have faced similar problems, or that have more experience than you. You can leverage them: their input is valuable. Don’t be afraid to ask for help. Engineers often want to do things alone, in a DIY way, and tend to think they are smarter than everyone else. However, it’s by listening to others that we can understand the consequences of our decisions. Don’t forget that the decision can only be made by yourself. It’s okay to make a decision that goes against others’ advice, as long as you are aware of the risks and the consequences. You are the one who will have to deal with the consequences.
6. Make the decision reversible
Any decision can be wrong, and it’s important to be aware that any decision done today may be the wrong decision with tomorrow’s knowledge. When that happens, it’s important to pivot - to reverse the decision. However, we can only do that if the decision is reversible. Thinking in terms of reversibility frees yourself from perfectionism. Jeff Bezos’s concept of one-way door versus versus two-way door decisions is a useful way to frame it: if a decision is reversible (two-way door), it can be taken much more easily than a one-way door decision.
7. You can’t control everything
Even perfectly reasoned decisions cannot control every variable. Systems surprise us. Markets shift. Governments and policy change. Companies go bankrupt. Doing the homework reduces risk, but it does not eliminate it. That mindset will keep you curious instead of paralyzed.
8. Trust your intuition
When you have everything mapped out, you know the pros and cons of every option, listened to advice, reflected deeply and still can’t make a final decision, what to do? Trust your gut. Intuition is not magic, it’s learning from experience. If everything still feels uncertain, pay attention to how your body reacts when imagining each outcome. Maybe that can give you the final hint to take your decision.
9. Document your decision
Once you’ve made your decision, write down why you did it: the context, assumptions, risks, options and final decision (for example, in an Architectural Decision Record format). Whenever you have doubts about why you have made that decision, you can revisit the document that explains the context and the reasoning behind your choice. If any of the assumptions or context change, it may be time to review your decision. If not, why would you?
10. Move forward with kindness and treat outcomes as learning material
If your decision goes south, don’t beat yourself up. Practicing compassion with yourself keeps you curious instead of defensive. Don’t forget that bad decisions are part of your journey too, and are what help us learn and make better decisions in the future. Take something positive out of the experience, maybe write a blog post about it. Extracting the lesson turns a painful outcome into future wins.
Thanks for reading!