Skip to content
Mahdi Khadishi

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.

Portrait of Mahdi Khadishi

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