Fifteen years ago today I made my first commit on a project someone was actually paying for. 🤓
And no, it wasn't a git push. It was good old TortoiseSVN, right-click, "SVN Commit", the little green checkmarks and all. An anniversary seems like a decent excuse to stop and take stock.
The headline conclusion is a paradox: the more I learn, the more convinced I am that I know very little about "correct" programming. I don't think I'm alone in that. Finding someone who holds the definitive truth about correct code is a hard problem — outside of academic textbooks, anyway. And when somebody states confidently that they have it, there's a fair chance they're fooling both you and themselves.
So instead of answers, what I'm carrying into professional adulthood is a set of working theses. Maybe some of them will land for you too.
💡 On people and machines
I still like computers more than people. Their logic is predictable, and they're easier to negotiate with. 😉 People are the most complex and least deterministic component in any system you'll ever ship.
💡 On careers
Programming and management are two different professions that barely overlap. The classic "engineer → manager" track is often a trap rather than a promotion. It's a career change, not a level-up. Choose it deliberately, not by default because it's the only ladder your company put in front of you.
💡 On knowledge
Technologies go stale while you're still learning them. Chasing all of them is a road to nowhere. Fundamentals matter far more — algorithms, data structures, design principles, patterns — along with the ability to pick things up quickly. Your most durable skill is learning, not any particular stack.
💡 On what the job actually is
The programming language doesn't matter. It's a tool. Nobody pays you for beautiful code or a clever algorithm on their own merits. They pay you for solving business problems and delivering outcomes.
💡 On personal brand
Writing code and talking about code are two separate skills. Explaining your thinking clearly, speaking at events, writing things down — sometimes that matters more for your career than clean code does. You know the joke: "let's hire a mid-level engineer this time, the last senior only did conference talks and never shipped anything." There's an uncomfortable amount of truth in it, in both directions.
💡 On product companies vs. consultancies
For an engineer, the difference is smaller than the discourse suggests. You can spend years at a product company building a feature nobody asked for, and you can be at an agency or on a staff-augmentation contract building something that changes millions of lives. And the reverse. It comes down to the specific problem, the team, and whatever mission you manage to find in it.
💡 On titles
Junior, Mid, Senior are deeply subjective labels. They describe one organisation's internal grading at one point in time, not your absolute value on the market. Don't optimise for the title. Optimise for expertise.
💡 On status
Working at Microsoft or Yandex — the Russian search-and-everything-else giant — does not automatically make you a genius. You can sit at Google doing nothing of consequence, and you can do genuinely groundbreaking work at a studio nobody has heard of. Environment matters, but it doesn't determine your personal ability or your expertise.
💡 On the profession
Programming isn't "writing code". It's design, implementation, debugging, testing and — unavoidably — communication. Every competent engineer is part business analyst, part tester, part designer, part architect.
So what's the conclusion?
The industry doesn't sit still. The only constant in it is change.
And yes. I'm still here. I still love it.