Today, I’ll give a framework I used in the last couple of years to make objectively better decisions as an Engineer, Engineering Manager and in my personal life. I found it crucial to make informed decisions and avoid over-complicated solutions.
A word on rebranding for the older readers. Code.Lead.Succeed expresses better what you will find in this newsletter. You’ll learn about Software Engineering. At the same time, I want to teach you how to become a great leader and achieve success in your career. Let me know what you think about the new name and colours.
Enough of admin, let’s get back to picking our problems. 👇
Roses have thorns
I’ve long believed in romanticised Software Engineering for a long time. I was reading Uncle Bob and Kent Beck and learning about the design patterns that create the perfect code. They weren’t wrong. I was. Excellent software is possible, but I later understood it comes at a price.
Every solution you design and every decision you make will have its downsides. There are no questions about it. The sooner you accept it, the sooner you won’t make the mistakes I made, thinking that perfect architecture and code is the solution to all engineering problems.
My favourite - Monoliths vs. Microservices. The first leads to super expensive maintenance, as keeping clean modularisation across multiple teams isn’t easy. The second has high operational costs as you need automated CI/CD pipelines and introduces network latency to all the calls. Microservices became so popular because their problems are easier to solve.
When you accept the problems are always there, you can flip the script when looking for practical solutions. Instead of focusing on what’s the best solution, you can start by identifying problems first. Then, you can decide the most manageable problem for you to solve. That will lead you to the most pragmatic decisions.
The Triangle of Problems
It sounds apocalyptic, but it will help you solve problems effectively. It’s how I make decisions at work and in my personal life. It’s focused on the issue, my or my company’s constraints and what solutions should be used.
The three sides of it:
Time
Money
Expertise
Each expresses a problem. Time is a problem if I need a fast solution. Money is when I need something cheap. Expertise is a problem when I don’t know how to solve the problem myself.
Each expresses a solution. Time and money available or expertise I have.
How I use it
First, I pick what’s the biggest problem I face. I lead a significant technical initiative at work while the product delivery must not be affected. My constraint is money. I need teams to work on the initiative. We pay them their money for their work. Easy. We have great people so I won’t have a problem with expertise. This tells me that time is my solution. The initiative will take a couple of months to complete, and I must accept it.
The second example is this newsletter. My constraint is expertise. It’s a 6th issue. I’m still learning. I don’t have an infinite pot of money. Time is again my solution. I can spend some money on books to learn how to write better, but the main factor of success is the time I invest.
Now it’s your turn
Learning by doing is always the best way to gain new skills. You can use The Triangle of Problems to find out what solutions are the best in your situation.
Define what’s the problem.
Decide what’s your primary constraint - Time, Money or Expertise
Find a solution optimised on the use of the other two.
The last example is that you want a promotion but have no time to learn and no money for training. You’re forced to take it long, just like my work initiative. Learn at work, and it’s OK.
Knowing your limits is the realisation that changes your life.
One, you don’t need to stress about others doing more. You’re maximising your limits. That’s great.
Two, clarity of your limits keeps you grounded. You know where your ability ends and can choose to change it.
Knowledge is power.
P.S.
The last note on admin - Code.Lead.Succeed will be now released on Wednesday. Keep an eye on your inbox!
Thank you for sharing this, Dariusz. I'm actually going to try this the next time I have a difficult decision to make
Great way to evaluate a problem. I’ve used a similar triangle on product trade offs where Expertise is replaced with Quality. Your triangle works better for decisions!
Excellent rebranding - it matches your writing!