15 lessons from 15 years in tech
15 hard lessons learned from a Software Engineering Director at Oracle!
Ship Software Faster with Experienced Engineers (Sponsored)
Finding skilled developers is hard → even for seasoned engineering leaders. Traditional hiring cycles can take months while critical features sit in the backlog.
Lemon.io removes the guesswork by rigorously vetting engineers and matching you with top talent in just 48 hours.
Need to scale your team quickly or find specialized talent that's hard to source locally? They match you with developers from Europe and Latin America who integrate seamlessly into your workflow → without the long hiring cycles or commitment of long-term contracts.
They don't just check résumés, but put developers through a rigorous multi-step vetting process that assesses technical skills, problem-solving abilities, and communication.
Let’s get back to this week’s thought!
Intro
I’ve made many mistakes throughout my 11+ career in the engineering industry and I learned a lot from them. But one thing I didn’t do so well is to learn from mistakes from others.
I didn’t actively look for mentorship and coaching and there weren’t a lot of books on pure Engineering Management back when I first became a manager to help me with this transition.
Even though I still progressed all the way to CTO, I believe that my progression would be a LOT easier with good mentorship support.
"It's said that a wise person learns from his mistakes. A wiser one learns from others' mistakes. But the wisest person of all learns from others's successes"
— John C. Maxwell
This is very important to keep in mind and that’s exactly the goal of today’s article.
Lucky for us, we have Owain Lewis with us today as a guest author. Owain has 15+ years of experience in the tech industry and in his career, he grew from an engineer all the way to being a Software Engineering Director at Oracle.
He’ll be sharing 15 lessons that he has learned the hard way. Let’s get straight into them.
Owain, over to you!
After 15+ years in tech as a principal engineer, tech lead, manager, and now Director, I’ve learned some hard lessons
Tech changes fast, but certain principles stay the same.
These lessons have helped me navigate challenges at work, grow as a professional, and deliver results. Maybe they’ll help you too.
Here are 15 lessons I’ve learned along the way:
1. Good Code Can't Fix a Bad Product
One common mistake I've observed repeatedly is projects being driven by technical enthusiasm rather than product necessity.
Engineers often dive into building features without fully understanding whether they address real user needs or business problems. Document assumptions and validate them before writing code.
Project cancellations are incredibly painful for everyone, and they’re often the result of brilliant tech solving the wrong problem.
Key Takeaway: Start with the problem, not the solution. Understand the "why" before focusing on the "how."
2. The Power of "What If We Do Nothing?"
Not every piece of technical debt needs fixing. Not every feature deserves building. Sometimes, doing nothing is the best move. Prioritisation means choosing from the endless things teams “should” do, and selecting the few things that really matter.
Key Takeaway: Ask "What happens if we do nothing?" to gain perspective on priorities. Often, the answer reveals that urgent-feeling work isn't actually important.
3. There's No "Best" Solution
Heated debates over the perfect language, architecture or framework often miss the point entirely. Every technical decision involves trade-offs: speed vs. maintainability, simplicity vs. flexibility, familiar tools vs. better technology.
Key Takeaway: The goal isn’t perfection, it’s finding the right balance of trade-offs for your specific context.
4. Simple Solutions Win
As engineers, we love sophisticated solutions. Microservices, event-driven architectures, the latest trends. But simpler approaches often prove more resilient and maintainable.
Remember: you build once, but maintain forever. You might be happy about that clever solution now but you won’t be when your pager goes off at 2am.
Key Takeaway: Start simple. Only add complexity when absolutely necessary. Simpler systems are easier to understand, debug, and extend.
5. Business Context is Everything
Understanding the business isn’t optional, it’s critical for making sound technical decisions. The more you know about the business, the more opportunities you’ll find to grow your career.
Key Takeaway: Invest time in learning your company’s business model, market constraints, and strategy.
6. Be Helpful First
Want to accelerate your career? Focus on helping others succeed. Thoughtfully review pull requests, ask your manager what they need help with, jump in when someone’s stuck, and freely share knowledge.
Helping others makes you more valuable, helps you learn faster, and also creates a better work environment.
Key Takeaway: People notice those that help others. Managers, engineers, and even executives. Build a reputation for being helpful.
7. Trust Changes Everything
When people fear mistakes, they stop taking initiative. When they fear questions, they waste time struggling alone.
Operational post mortems and retrospectives are great ways to help teams learn from mistakes. Make sure people aren’t afraid to ask for help, ask questions, or share their opinions.
Key Takeaway: Create an environment where people feel safe to take risks, admit errors, and challenge ideas.
8. Find Your Mentors, Be a Mentor
A lesson I keep learning is that the fastest way to learn is from others who are ahead of you. Equally important, mentoring others builds your own understanding. Teaching others is the best way to learn.
Key Takeaway: Learn from those ahead of you, then pay it forward by guiding those behind you.
9. Impact > Titles
Titles are lagging indicators of impact. Don’t be intimidated by titles or years of experience. Act like a senior before you are one. Focus on delivering meaningful contributions, solving problems, improving processes, and supporting your team.
The people who progress rapidly are the ones who start acting as leaders or seniors before they have the title.
Key Takeaway: Don’t let imposter syndrome or titles hold you back. Recognition and titles will follow naturally when you consistently deliver results.
10. You’re Rewarded for Getting Things Done
A harsh career reality is that you’re rewarded for the value you create, not the effort you put into it. Brilliant work means nothing if it’s unfinished.
Focus on completing tasks, no matter how small. Over time, these completed efforts compound into significant achievements.
Key Takeaway: Don’t just start things, finish them. Prioritise execution and delivery. The most successful people in tech are the ones who consistently get things done.
11. Write to Think
Writing forces you to clarify your thoughts and uncover gaps in your understanding. Whether it’s documentation, design docs, or blog posts, writing sharpens your thinking and communication skills.
Whenever I see people confused or struggling (managers, engineers), I’ll always suggest writing a one pager so everyone can understand the details clearly.
If you’re not sure … write it down. It’s the fastest way to create clarity in a team.
Key Takeaway: Writing is one of the most underrated skills for engineers to develop. Clear communication will help you think clearly and scale your impact.
12. Get Real About Estimates
Software estimates are educated guesses, not promises. Ensure stakeholders understand uncertainties and stay informed as a project progresses.
It’s better to underpromise and overdeliver than to do the opposite. As my coach told me, your job as a manager is: “no surprises”.
Key Takeaway: It will always take longer than you think. Interruptions, holidays, sickness, unexpected events - all these things play a role.
13. Everything’s a Negotiation
Perhaps the biggest thing I learned as a manager is to learn how to negotiate. This is essential because teams are always negotiating for more resources, more opportunities, or more time.
Don’t give up at the first “no”. Success depends on negotiating effectively to get what you need. This isn’t about winning arguments, it’s about finding compromises that work for everyone (a win-win).
Key Takeaway: Approach problems as negotiations. Understand different viewpoints, seek win-win solutions, but know when to walk away.
14. Own Your Expertise
You’re responsible for your own learning. Build breadth of knowledge in fundamental principles and depth of knowledge in specific areas. Building knowledge of your domain can often be hugely valuable for career progression.
Key Takeaway: Deep expertise in specific areas sets you apart. Build breadth of knowledge in fundamentals and depth in important areas.
15. Use Side Projects to Grow
Side projects let you experiment with new languages, frameworks, and ideas. No risk, no permission needed. Don’t wait for employer training - start a GitHub project and learn by building. I learned more from side projects than anything else.
Tips:
Start small. Build a weekend project or automate a personal task.
Dedicate 1-2 hours per week to learning something new.
Make side projects and experiments a habit
Key Takeaway: Treat side projects as a tool to grow your career quickly. They’re the best way to learn new things.
What’s Your Take?
These principles have helped me handle challenges at work. I hope they’ll do the same for you, whether you’re starting out or leading teams. Let me know what stands out to you and what you’d change.
Last words
Special thanks to Owain for sharing his lessons with us! As mentioned above, it’s really important that we try to learn from other people’s mistakes.
Make sure to follow Owain on LinkedIn, where he regularly shares tips and insights on AI and Software Engineering and also check out his newsletter Leverage AI for insights on AI topics.
We are not over yet!
Senior Engineer to Lead: Grow and thrive in the role
We start with the March cohort of the course Senior Engineer to Lead: Grow and thrive in the role in less than 1 month!
I am already excited to meet the next great group of people and talk about engineering/engineering leadership topics!
It’s going to be the 5th cohort and for every cohort, I try to create some improvements.
This time, we’ll have more time for students to network and get to know each other, so we’ll have more breakout rooms for specific topics.
I see cohorts as a great place to meet like-minded people who have similar goals and aspirations to help each other and build great connections that last even outside of the course!
Looking forward to seeing some of you there!
Liked this article? Make sure to 💙 click the like button.
Feedback or addition? Make sure to 💬 comment.
Know someone that would find this helpful? Make sure to 🔁 share this post.
Whenever you are ready, here is how I can help you further
Join the Cohort course Senior Engineer to Lead: Grow and thrive in the role here.
Interested in sponsoring this newsletter? Check the sponsorship options here.
Take a look at the cool swag in the Engineering Leadership Store here.
Want to work with me? You can see all the options here.
Get in touch
You can find me on LinkedIn, X, Bluesky, Instagram or Threads.
If you wish to make a request on particular topic you would like to read, you can send me an email to info@gregorojstersek.com.
This newsletter is funded by paid subscriptions from readers like yourself.
If you aren’t already, consider becoming a paid subscriber to receive the full experience!
You are more than welcome to find whatever interests you here and try it out in your particular case. Let me know how it went! Topics are normally about all things engineering related, leadership, management, developing scalable products, building teams etc.
I want to remark couple of important lessons you folks wrote here:
- Never stop learning
- Change is a constant
- Empathy improves collaboration
Thanks for this email Gregor and Owain!
I think acting as a leader before having the title served me well and it's something I recommend to any IC aspiring to become a leader. You don't need permission, really!