Career Profile

I’m a software engineer with 9+ years of working resume. I learned to program when I was 15, and it became my greatest passion ever since.

I’m always learning the state of the art technologies and ideas because I believe the more one knows the more one can think outside the box. I have profound knowledge of the web and its distributed nature and on the other hand I’m knowledgeable when it comes to low level stuff such as kernel programming, writing compilers (around 20 compilers/interpreters/transpilers), memory management, critical data-sharing, code optimizations.

I believe in a well-structured, easy-to-understand code and a user-friendly business logic, so I taught myself to write clean, testable, reusable, and understandable code and I really follow programming principles and well-known patterns to make it easier for others to read my code.

Experiences

Team Lead

May 2022 – Dec 2023 (1 yr 8 mos)
MateMachine, Vancouver

MateMachine is an online dating platform with the goal of putting different models of match making together. When I joined the team, they’ve been working on a monolithic MVP for two years which had crippling bugs and performance issues, after analyzing, I persuade them to gradually transition the software to a microservices architecture without the need for a big bang rewrite, this way we could add tests to the new parts which would assure lesser bugs throughout the development.

  • Built an identity server to delegate all the work related to identity to an unified service and enabled OAuth features in the app.
  • Led the team to extract simpler modules in the monolith to stand-alone services while keeping the same interfaces in the monolith.
  • Mentored the team on testing practices.
  • Built a sensible versioning for our packages (i.e. Docker, NuGet, Dart) to avoid dependency-hells.
  • Designed a tool for our pipelines to expose markdowns located at the /docs in all projects on the Confluence and a dedicated documentation website which provided the related swagger endpoint for the APIs which helped the team a lot.

Back End Developer

May 2021 – Sep 2022 (1 yr 5 mos)
Mores software, Tehran

I worked as team lead on a complete & powerful SCM software to handle every aspect of industry-level supply chains. The stack consisted of ASP.net, Vue.js, PostgreSQL, DynamoDB, SQS, Kinesis, CloudWatch with distributed microservices and microfrontends architectures.

  • Taught the team, how to achieve segregation and more generally to follow principles such as SOLID, while maintaining performance.
  • Implemented an integration testing framework to utilize Testcontainers and Respawn to allow for transient dependencies while remaining blazing fast.
  • Designed a framework to allow task control mechanisms like cancellation or retrying on front-end and back-end and enable tracking them in the UI (like JetBrains IDEs).

Back End Developer

Nov 2020 – May 2021 (7 mos)
Daroopin, Tehran

When I got into Daroopin everything was at the MVP stage, so we’ve done a lot of re-designs and re-implementations to achieve a stable, maintainable codebase that our developers could easily work with.

  • The first thing I did in the company, was to implement an application for pharmacy owners called “Shamim Pharmacy”. In the end, the application came out very well-designed so we wanted to have the same architecture for the main website.
  • After that, I introduced the idea of having a unified identity server so we could both identify and track our users more easily.
  • The most important thing was to re-implement the main website. We went for “Microservice application” and “Event-Sourced data” architectures.

Back End Developer

Sep 2019 – May 2021 (1 yr 9 mos)
AratelVC, Tehran

I worked as a back-end developer on a game in Aratel, it was my first experience with games and in-game match-making but I really enjoyed it, I used some less-used technologies such as actors and distributed locks.

Other experiences in this project were:

  • An in-house advertising system to advertise our other projects such as Daroopin.
  • A multi-source payment system to buy multiple currencies such as Gems, Coins, Avatars.
  • Graceful handling of user disconnection and failures in TCP keep-alive handshakes.
  • User match-making by multiple criteria, such as user’s level, tier, win/lose rate.
  • Multiple granularity locking. It wasn’t the first time I’ve implemented it, but the usage is so rare that I would be excited whenever I get a chance to use it.

C#/Java Developer

Sep 2016 – Sep 2017 (1 yr 1 mo)
AratelVC, Tehran

The company was a subsidiary of TCI (Telecommunication Company of Iran). This experience showed me that I can be as productive in an obsolete and stale environment as in modern environments. Everything was done the old-fashioned way, but I tried my best to at least maintain a modern look for the API layer (which I was in charge of).

I worked on multiple projects in this company, which were:

  • An API layer for Stored-Procedure-based functions in SqlServer. which exposed both HTTP and SOAP endpoints for each public Stored-Procedure determined in an admin panel. It took care of the authentication/authorization (both multi-level auth and role-based auth), caching (if requested by the admin panel), aggregation, and so on.
  • An android application for buying internet packages, bill payment, and many more features.
  • A dynamic reporting system for other applications in the company.

Full Stack Developer

Jun 2014 – Feb 2016 (1 yr 9 mos)
Sibe Sabz Pishro Salamat, Tehran

My second attempt to start a startup!

We designed a lot of applications in the company, and I had enough time to play with many libraries and different architectures. I developed a lot in means of technical knowledge and maintainable application.

Software Developer

May 2014 – Jan 2015 (9 mos)
Arsin Index Computer, Tehran

When I was in college (bachelors), My colleagues and I worked on an AI automation system for employees and their cars in college. after a while, we decided to start our own company to sell our software. This was my first attempt to start a startup. Despite the fact that we were financially unsuccessful (and even eventually led to failure), the software was great.

  • It was done in C# on windows.
  • It was in Kiosk mode, so when you turned the PC on, our company’s logo would appear before loading directly into our software, so we even had the on/off (and more) buttons in the software.
  • Because if the software should crash, nothing was there to help the user, I implemented a watchdog to handle the crashes (with multiple fallback options to make sure the bad configuration wouldn’t crash the software over and over again).
  • The software was highly modular and everything came as a plugin, so the main application was just a window with basics, a canvas in the middle for plugins to render their content, and a great API layer for plugins to use.
  • The message-bus (we were calling it the Signal Hub, taken from Qt) was amazing.
  • The software would detect any type of license plate just by adding the right add-on for that kind of plaque.
  • I implemented a structure for video input to support both analog input (using VLC) and IP/RTSP input (using EmguCV).
  • We had a lot of physical components (which our hardware designer-made) that the software could communicate with.

I loved this software a lot, but it failed in the end.

Web Developer

2008 – 2011 (3 yrs)
Lifecup

The first company that I started to work as an intern. I did and learned a lot in this company.

  • I was in charge of the network configurations (the company had a network guy, but I did all the stuff with his help)
  • I also did a lot of photoshop retouching in the company which was the first thing I got paid for.
  • I started to do front-end (I was around 15), first I only did HTML and CSS, but after about a year forward I started to learn JS as well. I designed a lot of websites and made a lot of themes for various CMSes.

One day I borrowed a book (it was about C++) from the company’s bookshelf, and it was my first step into the programming world.

Skills & Proficiency

.NET & ASP.NET

Entity Framework

JavaScript (TypeScript, NodeJs, ExpressJs, NestJs, React, React Native)

MSSQL Server

Postgresql

Redis

MongoDB

RabbitMQ

Kafka

Azure Service Bus