I Threw Away My Dev Coffee Cup This Morning
This morning, during my usual coffee routine, I finally decided to get rid of my old developer cup. I had been thinking about it for a while. It used to have that iconic meme: "My code works, I don't know why. My code doesn't work, I don't know why." I realized I no longer resonate with that quote. In fact, I felt weird even showing that cup during meetings. Why? Because it’s not true anymore. I always know why my code works. After 9 years of formal study, 4 as a Computer Technician and 5 as a Software Engineer in Cuba, followed by 13 years in the industry working in Germany, Latvia, and Finland, I’ve built software for companies of all sizes and developed a deep-rooted expertise in the craft. From creating games in C#, to building full-stack frameworks from scratch in PHP, developing real-time WebSocket demos for the community, building scalable SaaS applications and and tackling complex projects for both startups and big cap enterprises, I’ve simply outgrown that meme long time ago! The Early Years: Embracing Chaos In your first few years of software development, things often feel like magic. You write code, and sometimes it works—even when you don't understand how. Other times, it doesn't work, and no amount of Googling, Stack Overflow diving, or rubber ducking seems to help. This is normal. Every developer goes through it. When you're just starting, your mental model of how systems work is incomplete. Programming languages, frameworks, compilers, async behavior, state management, edge cases, and debugging tools are still new territory. You're learning to drive while also trying to build the car. Mid-Level Mastery: Patterns Start to Emerge Eventually, things begin to make more sense. You start to see recurring problems and recognize common solutions. Your bug reports get more precise. You rely less on hope and more on logic. You learn to read stack traces, track memory leaks, and use tools like debuggers and profilers effectively. You still hit unknowns, but now you know how to approach them. Senior Level and Beyond: Clarity Over Luck When you become truly experienced, the days of "I don’t know why" become rare. Instead of guessing, you investigate. You build systems with observability in mind. You write tests to cover edge cases before they bite you. You review logs and metrics before bugs become critical. You code defensively, architect with intention, and apply experience to avoid known pitfalls. You no longer celebrate when your code works – you expect it to, because you've built it deliberately. The Meme Still Resonates (And That’s Okay) Even the best developers hit walls. APIs change, infrastructure evolves, and no one is immune to edge cases or integration nightmares. But the key difference is: experts have the mindset, tools, and experience to figure out why. So next time your code works and you don’t know why, laugh it off—and then dig in to understand it. Every bug is a chance to learn. Every surprise is an opportunity to grow. A Personal Note from the Trenches Now, I’m riding the wave of the AI coding trend. People criticize it a lot, but it's an incredibly powerful tool. You can build full applications in just hours. This not only shifts the market but redefines the developer role. I believe that soon developers will evolve from writing code to reviewing it. No matter how deep your knowledge of syntax, data structures, algorithms, or architecture goes, AI will eventually surpass it all. There's no stopping it. Sometimes I build complete designs in Lovable.dev, download them locally, continue development in Cursor, and integrate prototypes with any backend framework I need. And the most important skill? Experience. The more you have, the better your reviews of AI-generated code will be. Sure, AI messes up sometimes. But that’s what the review process is for. I have AI make pull requests, and then I use tools like Coderabbit to review that AI-generated code—yes, AI reviewing AI. Add a strict code coverage policy on top of that, and I can rest easy knowing any change is well-tested and safe. Welcome to the new age of development. Review-driven. AI-accelerated. Experience-backed. Thank you for reading!

This morning, during my usual coffee routine, I finally decided to get rid of my old developer cup. I had been thinking about it for a while. It used to have that iconic meme:
"My code works, I don't know why. My code doesn't work, I don't know why."
![]()
I realized I no longer resonate with that quote. In fact, I felt weird even showing that cup during meetings. Why? Because it’s not true anymore.
I always know why my code works.
After 9 years of formal study, 4 as a Computer Technician and 5 as a Software Engineer in Cuba, followed by 13 years in the industry working in Germany, Latvia, and Finland, I’ve built software for companies of all sizes and developed a deep-rooted expertise in the craft. From creating games in C#, to building full-stack frameworks from scratch in PHP, developing real-time WebSocket demos for the community, building scalable SaaS applications and and tackling complex projects for both startups and big cap enterprises, I’ve simply outgrown that meme long time ago!
The Early Years: Embracing Chaos
In your first few years of software development, things often feel like magic. You write code, and sometimes it works—even when you don't understand how. Other times, it doesn't work, and no amount of Googling, Stack Overflow diving, or rubber ducking seems to help.
This is normal. Every developer goes through it.
When you're just starting, your mental model of how systems work is incomplete. Programming languages, frameworks, compilers, async behavior, state management, edge cases, and debugging tools are still new territory. You're learning to drive while also trying to build the car.
Mid-Level Mastery: Patterns Start to Emerge
Eventually, things begin to make more sense. You start to see recurring problems and recognize common solutions. Your bug reports get more precise. You rely less on hope and more on logic. You learn to read stack traces, track memory leaks, and use tools like debuggers and profilers effectively.
You still hit unknowns, but now you know how to approach them.
Senior Level and Beyond: Clarity Over Luck
When you become truly experienced, the days of "I don’t know why" become rare. Instead of guessing, you investigate. You build systems with observability in mind. You write tests to cover edge cases before they bite you. You review logs and metrics before bugs become critical. You code defensively, architect with intention, and apply experience to avoid known pitfalls.
You no longer celebrate when your code works – you expect it to, because you've built it deliberately.
The Meme Still Resonates (And That’s Okay)
Even the best developers hit walls. APIs change, infrastructure evolves, and no one is immune to edge cases or integration nightmares. But the key difference is: experts have the mindset, tools, and experience to figure out why.
So next time your code works and you don’t know why, laugh it off—and then dig in to understand it. Every bug is a chance to learn. Every surprise is an opportunity to grow.
A Personal Note from the Trenches
Now, I’m riding the wave of the AI coding trend. People criticize it a lot, but it's an incredibly powerful tool. You can build full applications in just hours. This not only shifts the market but redefines the developer role. I believe that soon developers will evolve from writing code to reviewing it. No matter how deep your knowledge of syntax, data structures, algorithms, or architecture goes, AI will eventually surpass it all. There's no stopping it.
Sometimes I build complete designs in Lovable.dev, download them locally, continue development in Cursor, and integrate prototypes with any backend framework I need. And the most important skill? Experience. The more you have, the better your reviews of AI-generated code will be.
Sure, AI messes up sometimes. But that’s what the review process is for. I have AI make pull requests, and then I use tools like Coderabbit to review that AI-generated code—yes, AI reviewing AI. Add a strict code coverage policy on top of that, and I can rest easy knowing any change is well-tested and safe.
Welcome to the new age of development. Review-driven. AI-accelerated. Experience-backed.
Thank you for reading!