The Ultimate Sprint Retro: My 10 Years of Software Engineering
I started my first software engineering job as a student in my last college year, in August 2010. Years passed by, and since the 7th year of my work, I have always wanted to write this article.
Today is August 2025, which marks 10 years of my professional journey.
As George Carlin says:
10 sounds official, 10 sounds important! 10 is the basis of a decimal system. It's a decade, it's a psychologically satisfying number!
With all this being said, 10 is a nice round number to take a look back at all these years and write down what my biggest achievement was, what I spent most energy and time on, and what my level of growth was back then.
I'm writing this also because many engineers always ask the same question: "What should my career look like?"
There's no clear roadmap out there.
So here's mine, not as a template to follow, but as one example among many. I've boiled down each year to its core, the thing that mattered most for my growth.
Your path will be different, and that's exactly how it should be.
Year 1 - Basics
College prepared me for everything except actual programming.
Sure, I knew the basics, but coding the real features was an entirely different thing. The difference between academic code and production code was huge.
My college friend was the first to be hired at the local company, and this guy was legitimately genius. When I walked in, they basically said, "Prove you're just as good".
No babysitting. After a short onboarding period, it was like this: "Here's a major feature we need built into our existing product. Go."
No AI to ask, just me, myself, and I. Nothing with a similar problem on Stack Overflow.
For a fresh graduate, it was scary, but I managed to create something solid.
Most of the codebase has been refactored since then, but the heart of what I designed back then is still beating in their product.
I spent year one in the trenches, coding constantly. The code quality was not great, but stuff worked. I pushed myself to be better.
๐ Biggest achievement: I delivered working features
๐ฅ Most energy and time spent on: Coding, learning the basics
๐ Growth this year: Minor
Year 2 - Team member
I stopped being "the new guy" and started contributing to the team in 2nd year.
As time passed by, I became aware of the company's rhythm, the decision-making process, who to discuss what with, and when to raise my hand during meetings.
The majority of the day still consisted of coding, but now I had context. I wasn't merely implementing tickets mindlessly. An important change was shifting from "get it done" to "get it done right."
I stopped rushing through tasks and started treating each one as a chance to learn, to practice good habits. Writing cleaner functions, better naming, and documentation helped. At last, the basics made sense.
Apart from technical skills, I also improved my ability to read the room.
I'll never forget the look on my team lead's face when I knocked on his door for the 3rd time that morning. Pure exhaustion mixed with "Seriously, again?"
I learned a lot from his especially dejected expression.
I committed myself that I would only seek assistance after I had actually attempted to solve the problem on my own for 2 hours without success.
๐ Biggest achievement: growing in self-awareness and awareness of the workplace
๐ฅ Most energy and time spent on: Still coding, but with focus on learning and best practices
๐ Growth this year: Medium
Year 3 - Big Boy Stuff
They stopped giving me the easy stuff in year three.
All of a sudden, I was in charge of the entire system components, designing rather than merely using them, and wondering if the current architecture was good enough.
I began refactoring my own old code for the first time at that point.
One big lesson I learned this year was speaking with salespeople and real users. It turns out that engineers and customers may as well speak different languages. We refer to what they call "simple" as "impossible," and vice versa.
After that mess, I promised myself that I would never again make assumptions.
If there's even a 1% chance we're not aligned, I'm asking questions until we are. Better to over-communicate than ship the wrong feature.
Another sign of my development was my ability to openly discuss problems and challenges. I raised uncomfortable topics that everyone was aware of but no one wanted to discuss, such as out-of-date architecture, growing technical debt, and the fact that we considered code quality to be a luxury rather than a requirement.
๐ Biggest achievement: Designed and shipped complex end-to-end features
๐ฅ Most energy and time spent on: System design and complex features
๐ Growth this year: Medium
Year 4 - Reality
In year four, reality set in. I changed my job and believed I would soon be promoted to senior engineer. I realized then that I am not a senior and am likely only high on the Dunning-Kruger confidence peak.
I had no idea how to improve a codebase or why that same codebase felt wrong. I finally decided to invest in actual learning because I was frustrated by having instincts but lacking the knowledge and framework to act upon them.
Technical books, online courses, local conferences, and meetups - I was all in on those. Yet, I learned the most over coffee breaks with experienced senior engineers. To learn to think like a senior engineer from those spontaneous problem-solving discussions was probably the thing I benefited the most from.
I also gained a lot of knowledge about design patterns this year.
All of a sudden, everything appeared to be a nail as those patterns turned into my hammer. I began "patternizing" every block of code, adding extra complexity and abstractions just because I could.
My experienced colleagues would politely ask "but why?" during code reviews. These code reviews helped me realize I was solving imaginary problems.
I discovered the most crucial pattern of all at that point: keep things simple. Focus on making life easier for everyone who comes after you.
๐ Biggest achievement: Learning advanced technical stuff
๐ฅ Most energy and time spent on: Coding, but focus on advanced stuff
๐ Growth this year: Medium
Year 5 - Leadership
I got a job at a software agency in my 5th year, which was the ideal setting to put everything I had learned so far to the test. Agencies quickly throw you into the deep end, which is precisely what I needed.
With 2 other engineers, I got started on a decent sized project.
I didn't actively seek leadership, but it just developed naturally. I was doing what felt right, and I wasn't attempting to win over clients or move up the corporate ladder.
It turns out that genuine leadership frequently manifests in this way.
At first, the change was subtle. Although I was still doing a lot of coding, I discovered that I was acting as a connection between the client and our team. I began keeping track of dependencies, preserving more context, and ensuring that nothing was lost in conversations.
I had no idea that I was quickly becoming the go-to person for coordination. Now, when I look back, I realize that I was gradually moving into the senior engineer territory.
The technical skills were still crucial for my work, but human skills like keeping people aligned, projects moving, and communication flowing were becoming just as important.
๐ Biggest achievement: Discovered my natural leadership style
๐ฅ Most energy and time spent on: Hands-on coding balanced with client relations and team coordination
๐ Growth this year: Large
Year 6 - Discipline
With the increased volume, larger project, larger team, and more coordination challenges, this year felt like the previous year.
Still, there were some differences.
Managing two people is not the same as managing six or eight.
I had to deal with personality conflicts, different working styles, and the intricate dynamics that arise when people with different perspectives are in the same space. While some team members functioned best with total autonomy, others required specific instructions. And because of all of these factors, I had to quickly master people management.
I also learned that modifying my communication style for each individual became just as crucial as mastering any technical ability.
In terms of technology, I was keeping up, learning new frameworks, keeping up with hot stuff on the market, and contributing code when the team needed it.
Finally, I started to take personal discipline seriously. I established routines that allowed me to perform well at work and still have energy for other aspects of my life.
๐ Biggest achievement: Discovered my capabilities to match team personalities
๐ฅ Most energy and time spent on: People management with continued technical development
๐ Growth this year: Medium
Year 7 - Mental resilience
Year seven felt like survival mode because of the pandemic.
Working remotely made me realize how much I genuinely appreciated office culture and hybrid work. Not the meetings or business-related activities, but the interpersonal interactions that take place at work.
I found some peace in philosophy, particularly Stoicism. There's something powerful about reading 2,000-year-old advice that still applies to modern problems. It gave me tools for staying centered when everything felt chaotic.
Everything was different when we eventually made it back to the office. "Stable employment" felt like an oxymoron at a time when the tech sector was losing jobs.
Although I was mentally checked out, my output was good, my leadership was strong, and the quality of my code hadn't decreased. Still, I was doing things on autopilot.
I decided to put stability ahead of quick growth, and the uncertainty forced me to take action. I needed a reset, and I accepted an offer from a company in a different field (clinical trials).
๐ Biggest achievement: Career transition during uncertainty
๐ฅ Most energy and time spent on: Mental resilience
๐ Growth this year: Minor
Year 8 - Thinking In Numbers
Year eight was validation time.
After the initial period of adjustment, I had to prove I could flourish in an entirely different setting. The client we worked for had a massive product with numerous submodules and specific tech architecture.
My priority was to fully comprehend and understand the product ecosystem, which included not only the code but also the complex business logic. Although the technical work was not hard, it needed the kind of methodical, sustainable approach.
Everybody in the development vertical benefited from the scripts and patterns my small team introduced. We delivered consistently.
However, industry chaos struck again with client layoffs, leading to team reshuffles.
I landed in a more frontend-focused team and got right into the work. It enabled me to explore some of the issues that had been impeding the development experience and product constraints.
Gaining the trust of my clients is what I am most proud of.
I established myself as their go-to problem solver, and when they needed it, my solutions helped them land new contracts.
This period was when I finally connected the dots between engineering work and business reality. I began thinking in terms of revenue impact, company sustainability, and how my technical decisions could support business goals.
It changed how I looked at my work.
Projects I used to criticize as technically bad made perfect sense when I saw their business impact. I realized that "good engineering" sometimes means "profitable engineering".
๐ Biggest achievement: Built client relationships
๐ฅ Most energy and time spent on: Product mastery and architectural problem-solving
๐ Growth this year: Medium
Year 9 - Management
Year nine felt like dรฉjร vu, industry chaos, AI hype, geopolitical tensions, economic uncertainty, layoffs everywhere, that familiar sense of instability creeping back.
My company wasn't immune, and I watched friends and teammates get let go while I was left alone trying to mentor and onboard new people who needed guidance. The work became exhausting rather than energizing.
With no new technical challenges and the constant threat of more cuts, I realized I needed a change.
After carefully weighing my options, I decided to step into engineering management. I knew it was a huge step, but I also knew that this would force me to grow in completely new ways.
The transition was challenging, and it took me a solid month or two to settle into my new role.
I needed that fresh start desperately.
๐ Biggest achievement: Transition to EM role
๐ฅ Most energy and time spent on: Learning the role and new environment
๐ Growth this year: Minor
Year 10 - XP Boost Potion
Year ten was like switching from a single-player game to a multiplayer strategy game with a 100% XP boost magic potion.
Once I found my footing as an engineering manager, the scope exploded:
- hiring and building my team,
- learning to give honest feedback,
- setting project foundations,
- learning existing systems,
- writing code,
- establishing processes,
- networking across the organization,
- collaborating with partners,
- making technical decisions,
- presenting at conferences,
- helping with company branding,
- etc
I was determined to be the kind of manager who doesn't just sit in meetings and conduct 1:1s. I wanted to be in the trenches with my team, helping solve actual technical problems, not hesitating to jump into a pull request when needed.
Some days I don't code at all, but when I do, it's because I genuinely enjoy it and it helps the team.
With all these new responsibilities, I was lucky that a colleague and friend who had been in my shoes before became my unofficial mentor.
The learning curve was considerably easier to handle when I had someone who was well-versed in the business, had handled the difficulties of engineering management, and with whom I could be totally open about my uncertainties and difficulties.
One of many lessons I learned this year is to stop asking "can we do this?" and start presenting "here's what we are gonna do and why".
I learned that you should not ask others but rather just argument everything with valid points and present that idea to the people. Ask them if they would change something or have any improvements on your points. This speeds things up dramatically.
This is the first chapter of a much longer story, as far as I can tell. Although I have a long journey ahead of me, I don't fear it.
๐ Biggest achievement: Built and led a technical team while maintaining hands-on engineering involvement
๐ฅ Most energy and time spent on: building the team, technical leadership, and organizational collaboration
๐ Growth this year: Massive
Universal Lessons
After a decade in software engineering, here are the timeless lessons I've learned in my journey:
- Everything is accelerated by mentoring. Seeing firsthand how seasoned engineers think and work is literally a career shortcut. Find yourself a mentor!
- "Good enough" is the best option in 90% of situations. Reliable solutions that add value to the company are preferable to overly complex solutions.
- Learning never stops. It takes daily work beyond the 8-hour workday to remain relevant in our IT field.
- When someone takes initiative and wants to contribute more, no employer has ever looked down on them. They're usually thrilled to find people who don't just complete their assigned tasks but actively look for ways to improve things.
- Your easiest opportunity to advance in your career is to solve the issues that irritate everyone around you. Listen to what is causing your coworkers' misery: that broken process that wastes everyone's time, that buggy script that crashes every morning, or that tool that causes more trouble than it is worth. By fixing these problems, you become invaluable.
- Character is more important than code. Be a good person and a good teammate.
- Your career is your responsibility. Be proactive about your goals, seek out the experiences you need to grow, and be willing to have honest conversations with yourself about your development.
Comments ()