Architecture that survives reality
Clean boundaries, explicit domain models, and pragmatic trade-offs for systems that must remain understandable after the launch.
Tech Lead · Software Architect · Senior .NET Engineer
For more than nineteen years, I have turned complex financial and enterprise requirements into dependable software—then helped engineering teams make that quality repeatable.
Profile
Technology becomes valuable when complexity feels simple, reliability feels ordinary, and a team understands why the system is shaped the way it is.
I am a software architect and technical leader specializing in Microsoft technologies, enterprise platforms, and banking automation. My career spans transaction systems, ATM operations, web products, back-office tools, and the modernization of long-lived business software.
My approach combines domain knowledge with engineering rigor. I use Domain-Driven Design to clarify the problem, Clean Architecture to protect the core, and test-driven practices to make change safer. Just as importantly, I create the conversations and feedback loops that let developers grow into owners.
I work from business capability to production behavior: shaping boundaries, delivery standards, and the operational qualities a platform needs to earn trust.
Clean boundaries, explicit domain models, and pragmatic trade-offs for systems that must remain understandable after the launch.
Deep experience with ISO 8583, ATM estates, transaction switching, device integration, and the operational discipline behind secure financial software.
Architecture ownership paired with mentoring, design reviews, TDD, and stakeholder alignment—so quality becomes a team capability.
From banking automation to current product architecture, each role has deepened the same craft: making critical software clearer, safer, and easier to evolve.
Leading architecture decisions, delivery practices, and engineering alignment for business-critical software.
My portfolio sits where software meets consequential real-world behavior: financial messages, distributed devices, enterprise workflows, and teams responsible for keeping them dependable.
A configurable engine and web control panel for simulating transaction hosts, testing ISO messaging scenarios, and shortening integration feedback loops.
Terminal and device software delivered across major Iranian banking and payment organizations, with careful attention to protocol compliance and operational continuity.
A group of modern business applications shaped through shared engineering standards, clean service boundaries, and a consistent delivery culture.
Reusable patterns without forcing unrelated domains into one model.A domain-focused healthcare platform developed with attention to sensitive workflows, dependable data handling, and maintainable service design.
Clearer healthcare workflows supported by reliable application services.Operational tooling spanning IRMA, ATM Eye, and OTA capabilities to observe, protect, and update distributed banking-device estates.
Improved visibility and control across field-deployed systems.Back-end engineering and team leadership across ERP, CampSoft, PLM, and petty-cash applications in a multi-product environment.
Stronger workflow consistency and scalable application foundations.I remain hands-on because architecture should stay connected to code, data, tests, deployment, and operational behavior. Technology choices are tools for managing change—not identity badges.
C# · .NET Framework · .NET Core · ASP.NET Core · REST APIs · SQL · SQL Server · Python · Django · Javascript · React · Blazor
Domain-Driven Design · Clean Architecture · Onion Architecture · Microservices · Integration Design
TDD · NUnit · Unit Testing · Integration Testing · Agile · Code Reviews
ISO 8583 · NDC · ATM Operations · Cashless Terminals · Device Integration · OTA
React · JavaScript · HTML5 · WinForms · Web Forms · C++ · Delphi
“My job is to make difficult decisions clear—and help the team make the next ones without me.”
Mahmoud Ali Sadeghi · Tech Lead & Software Architect
Connect design choices to measurable reliability, delivery, and business outcomes.
Use reviews, tests, and examples to transfer judgment—not to create approval queues.
Create seams, protect behavior, and improve the organization’s ability to change safely.
Include observability, failure recovery, security, and production learning in the architecture.
I write about the distance between an architecture diagram and a production system: the language, trade-offs, tests, operations, and leadership practices that close that distance.
01
The value of DDD is not in drawing more boxes. It is in creating a language precise enough for software and business experts to discover the same problem.
02
In transaction software, reliability is not a hidden engineering concern. It is the experience customers, operators, and partner systems feel at every boundary.
03
Legacy software is often the evidence of business value, not the absence of engineering skill. Modernization should preserve what the organization has learned while changing how safely it can move.
04
Technical leadership is the practice of improving the decisions a team can make without waiting for the technical leader to make all of them.
Top-performing student. Research focused on link prediction using Learning Automata—exploring how adaptive models can identify relationships in evolving networks.
Built the computer science and software foundations that led into banking automation, enterprise development, and a career of continuous technical learning.
I bring the same habit to architecture that I brought to research: define the problem precisely, test assumptions, observe evidence, and improve the model when reality disagrees.
I am open to technical leadership, software architecture, and senior .NET engineering opportunities with teams that value robust systems, thoughtful modernization, and engineering growth.
Tehran, Iran
Open to relocation and international opportunities