Dear subscribers,
This will be kind of a special issue where I share some important lessons from my 20 years of experience in the tech world. Actually, a bit more, as my father was a software developer his whole life, I know for myself that I was part of this world.
During the first part of my life, until I was 14, I lost everything I owned twice. Then I spent more than 20 years building software for a living. These two things are connected more than it looks like.
On my birthday, I sent a short email to my readers with the lessons I'd want my kids to read one day. Now, in this issue, I expand this to 20 lessons, focusing on areas that can give you the biggest leverage, such as career, life, and growth.
I hope you will enjoy and learn something useful.
1. Nothing you own owns you back
I lost everything twice before I was 14. When war hit us and we needed to move in rush, we left everything, but something stayed. Those were my skills and people I know.
Also what stayed was my ability to start over. Everything else was gone.
Try to build what can’t burn.
2. Your kids are watching you
It took me some time to get this, but I now know that my kid is watching me, not only when I’m best, but when I’m worst too. They watch how we lose, how we treat people when we are tierd.
My father coded for 40 years in incredible chaos around him. He had no stability, and no guarantees for anything living in countries in the Balkans. I watched him sit at that desk when we had nothing else left. It was not important how bad it got, but how we showed up every day.
That’s the lesson. Not what he said, but what things was not great.
3. Focus on what you can control
If your boss makes bad decisions, it’s not your problem to solve them. But the way you do things, your effort, and your learnings are yours.
What I saw was people wasting time arguing and complaining about things they cannot change. Don’t be that person.
4. Stop waiting for permission
I see this everywhere in all companies where I worked. Smart and capable people are just waiting for approval or a perfect moment. Sometimes they wait for someone to tell them it’s okay to do something.
Remember that nobody’s coming to save you. You want to do something? Do it.
High agency isn’t so complicated. I wrote about it a few times. It’s just you who refuses to wait for approval.
5. You’re not paid to write code
It took me a long time to understand this. We developers think that our job is to code all day. But the thing is that you’re not paid to write code, you’re paid to solve problems. Especially when you’re senior-level.
Of course, code is one way to do solve problems, and often the most expensive one. You may wonder why? Think about it: more code means more bugs, more maintenance, paying for the infra to be run, and more to explain to the next person.
The best engineers I’ve worked with delete more than they write, and some of their best solutions didn’t have any code included. I once worked with a Principal Engineer who wrote one line of code per year, but he was very valuable to the company.
When you have a problem to solve, try to understand it first, then figure out how to solve it. Code only if there is no other way to do it.
6. If you stop learning, you stop living
I usually start my day by reading for 1-2 hours, and I also read for 1 hour in the evening, with 5,000 books in my library. This is not something I need to do, but during the years I developed, it happened as I wanted to grow. There are two ways to learn from best people in the world: 1. reading their books, and 2. working directly with them. The 1. is much easier thing to do for most of us.
Remember that your brain is a muscle. If you don’t use it you will stop progressing. The world keeps moving. You’d better keep up.
7. Comfort is expensive
If you think that things are going great, you have a good and steady job, it is probably costing you growth. Every time I felt that I had a predictable life, I stalled in growth. I’ve seen this in other people too, how they rot inside and not fullfill what they could. They had potential, but they decided to choose the happy path.
Stay a little hungry, a little uncomfortable.
8. Simple is better than clever
When I was a junior, I thought how great and sophisticated complicated code was. I liked it and tried to write similar code. It took me a long time to understand that this was wrong. Simple code is actually sophisticated. Overengineering is just a technical debt we need to resolve later.
This doesn’t stand just for code. A simple plan is better than a great and complex plan we need to abandon during the line.
9. Your body keeps the receipt
I worked many 80h+ weeks to achieve something, but my body remebered that well. Later I had many health issues around my back and other things.
We cannot overcome this by working only, but by trying to be more focused and effective. Anyway you can code only 4h per day.
10. People first, always
I was always impressed with technology, as probably most of us. Then I focused on shipping entire systems and hitting the metrics that mattered to us. However I left out the most important part, and that were people. Everyhing we do and with whom we do are people, and they are center of the (tech) universe too.
Also, one secret here: Be easy to work with. That will take you to the levels where your knowledge never will.
11. A good boss matters more than a good company
I tend to say to my mentees not to choose only company but a mentor, especially when you’re younger. Good mentor will open you doors and protect you. If you work for a great company with a bad boss, you will not get anywhere.
So, always pick a boss when you pick a job, not the company.
12. Most “emergencies” aren’t real ones
During my 20 years in the industry, I saw many emergencies that took us many long hours to solve. Yet, later when I reflected I noticed that most of them were not real emergenices. They were just bad boundaries and saying yes to thing I should decline earlier.
We should let something fail that deserves it. The faster we do this the better.
13. Nobody counts your hours
I saw many busy people who worked many long hours (including me), but many of them were not rewared for that. Why, because being busy and having an impact are two different things.
First, try to focus your effort on something the business can measure and is important to it, then document your wins. Without this, your quite hours will be invisible.

14. You get what you negotiate, not what you deserve
I remember thiking that is enough that I just be good in my work, and people will notice that and I will advance in my career. I was so wrong. Everying is looking at themselfs, including your boss. What I found out after many years in the industry is that pay raises and roles come to people who ask for it.
If you don’t ask, you will not get it, no matter how good you are.
15. You’re not behind
Maybe you think that everyone is better and achived more than you already, but note that maybe you haven’t start from the same position. They maybe had money, connections, better opportunities, but you and me didn’t.
So, stop comparing your lap 3 to someone else’s lap 20. We are in different races, starting in different lines.
16. Say less and ask more
I learned one thing through coaching and that is that the first problem someone brings to you is rarely the real one. Ask the question I learn from a great book “The Coaching Habit”: what’s the real challenge here for you? Then try to be silent. Silence is not awkward; this is the space for people to think. And when you listen, listen not only to words, but to what is not said (emotions and nonverbal signals).
Note that most of us has advice monster sitting inside. We urge you to advise. Try to push it back. People grow the most when they figure out their own answers, not when you give them yours.
17. Teach people. It makes you better
I decided to coach people and write because it help me think better. When I need to explain something, I realize what I actually know vs what I thought I knew about the subject.
When you help others improve, this improves you too.
18. Challenge everything
I worked in a company where I noticed some not-so-logical things, but my boss told me back then it was like that because “that’s how it’s always been done.” When you’re young you just accept as it is, but this is wrong.
We should always start from first principles and question assumptions and beliefs. Six years I spent in research taught me that many accepted truths are just untested assumptions, no one tried to challenge.
Try to think for yourself. Always!
19. Consistency beats talent
I always tend to admire talented people, and what they achieved. When I tried to research what is behind their success I found something else, and that was not talent. They were just consistent and failed so many times. But every time they failed, they learned a lesson and improved a bit. Then, I started to do the same.
Note that consistency without feedback doesn’t mean much, because you may have one year of experience repeated twenty times instead of a twenty-year-long career where you grow each day.
20. Some things don’t resolve. Just walk anyway
I remember times when I jumped to solve every problem. Then, once my back then boss said, “Don’t jump to problems, just observe first; 50% of problems resolve by themselves.” And he was right.
A final thought
I had a simple career goal, to work with people I like, on things I want, as much as I want from wherever I want. All of these lessons are about how I got there.
And if you need to remember just one thing from this, let it be this one: build what can’t be burned.
No, I wonder which lesson hit you hardest? Feel free to hit reply to this email. I will read every reply.
📣 Tell me what to improve (and win my book)
I mostly guess what works for you based on opens and replies, but now I want to ask you directly.
I put together a short survey: 9 questions, about 3 minutes of your time. What you value, what you don’t like, and what’s missing.
The 3 most useful responses each win a free e-book copy of Laws of Software Engineering. The more specific your feedback, the better your chances.
Leave your email at the end if you want in.
Closes August 31. I’ll contact winners directly.
🎙️ I was a guest on the Tech Lead Journal podcast
I returned to Henry Suryawirawan's podcast to talk about Laws of Software Engineering in the AI era: Gall's Law, Conway's Law running on both humans and agents, Goodhart's Law and tokenmaxxing, the 90-90 rule, and Dunning-Kruger among vibe coders.
Want to advertise in Tech World With Milan? 📰
If your company is interested in reaching founders, executives, and decision-makers, you may want to consider advertising with us.
Love Tech World With Milan Newsletter? Tell your friends and get rewards.
Share it with your friends by using the button below to get benefits (my books and resources).








