About
From writing code to setting direction
I started as a software developer in 2004, building whatever a project genuinely needed — desktop finance tools, real-time 3D visualizations, adaptive video streaming, instant messaging. That range early on taught me that the technology is always in service of a business problem, never the point in itself.
Over time, that hands-on foundation turned into technical leadership. I moved from writing the backend of a gaming platform to directing the engineering, support, and operations teams behind Open Banking platforms serving banks and FinTech companies across Iran — and later into architecture roles shaping public-sector fleet management and airport operations systems in the UAE.
My approach to architecture is deliberately unglamorous: understand what the business is actually trying to do, design service boundaries and data flows that a team can maintain without me in the room, and make the reasoning behind those decisions explicit enough that someone else can pick them up later. I care about systems holding up in production far more than how they look in a design document.
On the team side, I’ve hired, mentored, and reviewed the work of engineers across every one of these roles. The teams I’ve led have ranged from a handful of developers standing up a new platform to established groups modernizing legacy systems — in both cases, the job is the same: give people clear ownership, raise the bar on code quality through review rather than mandate, and remove the ambiguity that slows delivery down.
Today I work independently, advising founders and engineering leaders on architecture, technical due diligence, AI-enabled software delivery, and delivery leadership — the same problems, applied to a wider set of teams.

How I Work
Principles that guide the decisions
Understand the business problem before selecting technology
Technology choices follow from what the business actually needs to happen — not the other way around.
Design systems for maintainability and evolution
Architecture decisions are made assuming requirements will change, teams will rotate, and the system will outlive its first version.
Balance delivery speed with engineering quality
Shipping matters, but not at the cost of a codebase the next engineer can't safely change.
Make architecture decisions explicit
Trade-offs get written down and discussed, not buried in a pull request — so the reasoning survives the person who made it.
Build autonomous, accountable engineering teams
Teams work best when they understand the why behind their work and are trusted to own the how.
Use measurement and feedback to guide improvement
Decisions get revisited against real signals from production and users, not just intuition.
Education
Academic background
M.Sc., Artificial Intelligence
Islamic Azad University · Tehran, Iran
2005
B.Sc., Computer Hardware Engineering
Islamic Azad University · Tehran, Iran
2003