About Helmi
I design software systems that have to hold up under real-world pressure — changing requirements, imperfect information and decisions that can’t be undone easily.
Most of my work sits around microservices, event-driven architecture, CQRS and DDD, primarily in the .NET ecosystem with Angular and Kafka. Over time, I’ve learned that technical design is only half the problem. The harder part is aligning people, decisions and trade-offs — and accepting that every choice comes with a cost.
There is no perfect architecture. There are only decisions you’re willing to pay for, now or later. The real work is in making those costs visible early and choosing consciously.
I spend much of my time clarifying direction, mentoring engineers and improving system quality through pragmatic testing and maintainable design. I care about systems that are understandable, evolvable and safe to change — because complexity grows fastest when intent is unclear.
Running plays the same role in my life that architecture plays in my work. Long-distance running teaches patience, restraint and respect for limits. You don’t win by going all out early — you win by pacing, absorbing discomfort and showing up consistently. Software systems fail for the same reasons people burn out: unmanaged debt, ignored signals and pretending trade-offs don’t exist.
This blog is where I write about architecture, engineering culture, decision-making and the hidden costs behind “simple” choices — in software, teams and occasionally in life.
My writing lives here.