Homayoun Behzadian
Senior Software Engineer
Summary
- About
- Enthusiastic, learner, searcher, abstract thinker, sharp, communicative, decision-maker, creative, get-things-done, self-motivated developer and T-shaped team-player software engineer with strong problem-solving abilities, and scalability, durability, security, monitorability, maintainability, usability, and extensibility mindset focused on analyzing, architecting, designing, developing, and delivering robust, optimized, and automated enterprise IT solutions on time and within budget by collaboration with all stakeholders including managers, clients, other teams and departments staffs, using Java, Kotlin, C#, .NET, and cutting-edge powerful tech stacks.
- Curious and interested in different aspects of computer science such as AI and ML in addition to the non-tech fields specifically about people, projects, and business management.
- More than 2 decades of experience in being involved in all SDLC phases.
- Mentor and Coach of junior developers.
- Passionate about creating a high-quality and clean codebase
- Professional Experiences
- Full-Stack Java Developer and Refreshing Knowledge. 2023→Present
- Senior Backend Engineer and Architect. AtiTech (Segam) • 2021→2022
- Backend Developer, Yalda, Tehran • 2018→2021
- Technical Product Manager, Mehan, Tehran • 2017→2018
- Software Engineer, Payvaran, Tehran • 2015→2017
- Developer and Test Manager, ASHS, Mashhad • 2011→2015
- Full-Stack Developer, Farayan, Mashhad • 2005→2011
- Skills and Qualifications
- Certificates
- Educations
- Spoken Languages
- Open Source Contributions
As a senior software engineer with extensive experience in Java, C#, and .NET, I have a proven track record of designing and developing scalable, secure, and maintainable applications and services. I'm also proficient in Typescript for front-end development.
My expertise ranges from monolithic apps to microservices and cloud-based architectures. I prioritize usability, scalability, resilience, and maintainability in my work, while also fostering a collaborative, team-oriented environment. I have experience collaborating with cross-functional teams in agile environments, including Scrum and Kanban methodologies and frameworks.
My commitment to staying up-to-date with the latest technologies and tools is demonstrated by my ongoing learning through courses, newsletters, conferences, and writing on Medium and my co-weblog, SmartLab (in Persian). I enjoy sharing my knowledge through teaching and have recently focused on TDD and CI/CD practices. I value diversity in the workplace and thrive on building innovative apps and services with a team.
Professional Experiences ↑
Full-Stack Developer and Refreshing Knowledge, Freelance, 2023→Present
Tech Stack and tools: Java, Kotlin, React, TS, Spring-boot, microservices, Figma, and AWS
“Behesht” is a famous well-known catering in Mashhad, serving thousands of customers daily, asked me to provide brand new web, android, and iOS apps with real-time backend services to receive orders online, process, and deliver them.
- Due to the required high availability, scalability, fail-over, and future growth plan, I decided to use the microservice pattern for backend architecture. I created several microservices for
USER
, MENU
, PAYMENT
and PROMOTION
as well as GATEWAY
, service-registry
and cloud-config
. All with spring boot
, Java
, and Kotlin
with very useful and common SAGA
and CQRS
patterns. Messaging has been done using Kafka
and gRPC
over Protobuf
.
- Created a responsive
PWA
with ReactJS
as the client application. For developing this app, I used NPM
and WebPack
as well as Jest
tests and other common frontend stuff.
- All parts of the system have been made with the automation mindset through GitHub CI/CD workflows integrated with
Docker
.
PostgreSQL
, Redis
, and MongoDB
databases have been used for storing and retrieving users' and apps' data.
- Achieved a 25% income increase for “Behesht” due to the specialized ordering application with special discount and referral promotion plans while also increasing customers' loyalty.
“GRTZC”, a web-based application (PWA) and related serverless lambda functions for time zone converter.
- Due to the nature of the application, I developed an
AWS Lambda
to fetch the latest zone data frequently and store them in a DynamoDB
instance, another AWS lambda for querying requested dates and zones.
- For the frontend side, I used
ReactJs
to develop the client app that communicates with backend lambdas to meet the user's requests.
- All parts of the application will be integrated and deployed continuously using AWS CI/CD pipelines.
Learned: Time Management, AWS, Upgrading Microservices, Java, and Kotlin knowledge
Senior Software Engineer, Segam, Tehran [Hybrid] • 2021→2022
Tech Stack: C#, “.NET5”, “.NET6”, EFCore, Mediator, Microservices, SQLServer, CI/CD
“Segam” is a high-volume, real-time transactional performant service for students that uses machine learning to advise them in choosing the best suitable university fields based on their exam results, plan for their study, propose resources, and book consultancy sessions with the best counselors. Segam serves services for millions of users daily which is available at https://3gaam.com/
Tasks and Achievements
- Huge increased service reliability, scalability, and maintainability by upgrading the large monolithic application into the microservice-based architecture using the strangler pattern.
- Improved performance, response time, development time, and cleanliness of code by applying
CQRS
and Mediator
design patterns as a base structure for new microservices.
- Secured applications & services by equipping them with
JWT
authentication, fine-grained RBAC
authorization and intelligent CORS
, HSTS
, and CSRF
configurations.
- Provided facilities and eased upgrading, updating and managing client applications and APIs by proposing, implementing and publishing a standard & efficient versioning system so clients are capable to be informed about new versions, upgrade mode (optional or mandatory), and how to upgrade.
- Increased user engagement by implementing
Notification
services including Google Firebase
and WebSocket
.
- Decreased bugs, eased and increased speed of bug-detection and releasing bugfixes, by providing a standard way to handle any backend and frontend errors and bugs including logging, persisting, reviewing, and deciding whether to resolve, postpone or ignore them.
- Accelerated frontend applications development and easing tests by employing
OpenAPI 3.0
and Swagger
which automatically integrate documentation and manuals, generate inputs, outputs, samples, client codes, security requirements, possible errors and status codes, HTTP verbs and methods, required validations, online tests, and mocks for every endpoint.
- Decreased deployment time and intervals from days to only a few seconds and increased confidence by changing the app-review phase from manual tests to
automated unit and integration tests
by sharing TDD, CI/CD and deployment experiences with the team.
- Increased code quality, safety, and test coverage from 0% to 85% by developing 1300+ tests.
- Increased system overall performance by employing client-side rendering (CSR) for parts that do not need to be accessible through search engines like Google which led to decreasing server response time and length while caching results whenever possible.
- Standardized, speeded up, and increased the clarity of SDLC by setting up the development methodology to
Agile
and Kanban
and the management system to Jira
in conjunction with Git
(migrated from TFS
).
- Decreased bugs in production by increasing bug detection in development, testing and staging environments.
-
“A huge decrease in bugs” by Mr. Khazaei, CTO
Learned: Teamwork, Agile, Kanban, Microservice, Mediator, SAGA, CQRS
Backend Developer, Yalda, Tehran [Remote] • 2018→2021
Tech Stack: Java, Spring-boot, Kotlin, Spring WebFlow, JUnit, Karate DSL
Yalda is a contractor/consultancy company, that works for national and international customers http://www.ysp24.ir/
Tasks + Achievements
Worked on Chapar, a mail client and server application that is widely used.
- Standardized, secured, and made code and system reliable by initiating automated tests, and developing 100+ unit and integration tests while developing new features.
- Implemented new features for
CAS
, the authentication backbone of the system including:
- Increased customers' and users’ security by adding support for
OTP
via standard authenticator applications (such as Google Authenticator).
- Verified basic required information in a step-by-step behavior without disturbing users’ daily work that allows customers to add new required information in two week period by alarming 5 times max before stopping the service.
- Increased system customers by adding support for
Open ID Connect
for centralized authentication and authorization.
- Consulted product owner on how to optimize documentation, speed up new developers on-boarding, resolve technical and
UX
problems and optimizations, etc.
- Started documentation in
Confluence
to be available for new colleagues.
- Increased test code coverage from zero to 10% by implementing new features using
TDD
.
- Increased code quality by rewriting some important parts and passing them through
SonarQube
.
- Find, report, and resolve some important bugs in the old code while developing new features.
Customized IdentityServer, an asp.net identity provider for the customer to offer centralized authentication and authorization.
- Created customized UI for the customer based on their requirements.
- Increased VIP users and system security by adding
SMS OTP
.
- Set up third-party authentication and authorization using
JWT
token.
Learned: Remote working, Teamwork, Spring boot Workflow, CAS, IdentityServer, Confluence, JIRA, OIDC, Auth0, OAuth, SAML
Technical Product Manager, Mehan, Tehran [Onsite] • 2017→2018
Tech Stack: Java, Spring-boot, Kotlin, JUnit, Karate DSL
Mehan is a startup located in Tehran and provides services for celebrities including video messages, stuff auctions, taking pictures with them, following, posting, and many more.
Tasks & Achievements
- Speeded up and organized software development life cycle by defining tasks, verifying codes, examining tests, accepting changes, and publishing the updated product.
- Speeded up onboarding new team members, homogenized and standardized code, and decreased code conflicts by declaring standards for naming conventions, documentation, error reporting, task definition & acceptance, predicting required time, and reporting the state of the project.
- Improved product quality by setting up CI/CD pipeline and tools for verifying codes for quality, syntax, vulnerabilities, and test coverage in addition to reviewing and verifying codes before merging and deploying.
- Increased code quality and product security, maintenance, reliability, performance, release frequency, and speed while also decreasing bugs and problems in production by initiating and mentoring team members to write, execute and inspect tests in the old code, using
JUnit
, Karate DSL
, Mockito
, etc.
- Increased performance of final social media services by using the
Neo4J
NoSQL graph database to increase denormalization of data and switched to eventually consistent principle.
- Increased product reliability, maintainability, and observability by employing
ELK
(Elasticsearch
, Logstash
, and Kibana
) for producing, storing, and processing logs of applications which helped find errors and support users more effectively.
- Increased performance and security of services by using
Redis
as an expirable Key-Value NoSQL database for storing and retrieving access and refresh tokens.
- Increased durability and resolve any failure more quickly by using
Spring actuator
, Prometheus
and Grafana
to monitor the health of services in real-time and defined alarms to be sent if something such as CPU usage, RAM usage, Response time, etc goes out of normal and accepted range.
- Improved system overall performance, reliability, development speed, and release frequency by preparing a migration plan, implementing and coaching team members to migrate the monolithic application into several microservices.
- Decreased the cost of hiring new members by effectively detecting talents and minimized onboarding time and efforts.
- Great savings by detecting and consulting direct managers to eliminate unnecessary and less-wanted features and pay more attention to the most desirable customer features.
- Increased clarity of the development process by setting up the project management system using GitLab.
- Speeded up the development process by automating publishing and versioning of the product into multiple environments for different states (dev, test, staging, and prod).
- Increased test coverage from 0% to 45% by adding End2End tests.
Learned: Team-working, Neo4J, ELK, Monitoring, Redis, Nginx
Software Engineer, Payvaran, Tehran [Onsite] • 2015→2017
Tech Stack: Java, Spring-boot, Kotlin, JUnit
Payvaran is a start-up that produced an e-wallet and core banking solutions for businesses, named Payware.
Achievements and Tasks
- Provided high availability, durability, reliability, resistance and scalability by implementing microservices architecture for the greenfield spring boot services.
- Increased code quality and bug detection, decreased security problems and holes and production bugs by adding tests and coaching team members to develop, execute, inspect and verify unit and integration tests using the most popular tools and frameworks including
JUnit
, Mockito
, etc.
- Increased reliability of service by adding custom health check parameters and observable metrics using
spring actuator
, Prometheus
, and Grafana
to send customized alarms when something becomes wrong or unexpected.
- Increased the frontend development speed by providing endpoints URLs, verbs, documentations, inputs, outputs, samples, accepted and produced “content-types”, validations, client codes, mocks, possible responses and errors, etc through
Open API
standard and Swagger
UI.
- Increased frequency and decreased time of deployment by applying Gitlab CI tools and a custom runner machine.
Learned: consulting, leadership, monitoring, CI
Developer and Test Manager. ASHS, Mashhad [Onsite] • 2011→2015
Tech Stack: Java, Android, Spring-boot, JUnit
ASHS is a health start-up that aims to provide electronic health records profiles, telemedicine and tools for monitoring health metrics.
- Increased chance of finding investors by developing MVP of the Android application in minimum time.
- Created the
Android
application in less than a month to be published on market using best practices.
- Accelerated backend development speed by employing
TDD
and designing 49 endpoints with their related tests required by the prototype.
- Increased services maintainability, business match, and confidence while also decreasing bugs by crafting more than 2000 integration tests for analyzing all 49 API endpoints from scratch even before they have been implemented using standard tools including
JUnit
, Spring test runner
and other external API testers like SoapUI
.
Learned: teamwork, spring-boot, test, TDD, REST
Full-Stack Developer, Farayan, Mashhad [Onsite] • 2005→2011
Tech Stack: C#, .NET, Android, asp.net web-forms, asp.net MVC, Java
Farayan was founded by me and my friends to be a software contractor company with many clients and customers.
Achievements & Tasks
Designed, Developed and Delivered many web services and applications including:
- Navand is a system for businesses to communicate with their clients and send informative alert messages using SMS with more than 30.000 customers.
- Increased message-sending speed from 500 messages per minute to 12,000 messages per minute by altering queue service into a multi-thread concurrent system.
- Reducing support cost by 15% through automating the error recovery process.
- FaraHamayesh, a web service for managing university conferences.
- FaraBank is an intelligent and cloud-based personal financial management that has Android and web client applications with the asp.net backend.
- Tehran offline map, the first vector-based offline map for Android in Iran, became the best-seller app for 4 months in Iran's Android market leader, CafeBazaar.
- Many more Android and Windows applications and web services.
Skills and Qualifications ↑
Java and Kotlin
- Proficient Java developer with 10 years of experience programming with different versions of Java including Java 8, Java 11, Java 17 and Java 19.
- Intermediate Kotlin developer with 3 years of experience in developing spring-boot backend services and Android apps.
C# and .NET
- Expert C# developer with 10 years of experience in implementing different solutions based on asp.net web forms, asp.net MVC, asp.net API, and WPF with C# versions ranging from 1.0 to 11.0, .NET Framework 1.0 to 4.8, .NET Core3.1, “.NET5”, “.NET6”, and “.NET7”.
- Advanced in using EFCore, NHibernate, and Dapper.
Microservices and Containerization
- Migrating monolithic applications into a Microservices pattern by applying common patterns like strangler pattern
- Architecting and designing microservices from scratch.
- Advanced knowledge to employ Docker for developing microservices.
- Familiar with Kubernetes, Containerization, Eureka, Spring Cloud, Docker, Kafka, RabbitMQ, gRPC, REST, JSON, XML, Zipkin, Sleuth, and event-driven development
Cloud Native Development
- Intermediate in developing and provisioning AWS services including Lambda serverless, EC2, S3, DynamoDB, VPC, CloudFormation, IAM, CloudWatch, Pipeline, RDS, Cognito, etc.
NoSQL Databases
- Intermediate in using MongoDB for persisting, querying, and aggregating applications' large volume produced semi-structured and non-structured data.
- Familiar with neo4j, a graph database, with 6 Months of experience including inserting, and retrieving data in a social media project using the spring-boot platform.
- Intermediate in using Redis as a cache system and key-value database with 1 year of experience in addition to degrees earned from Redis University.
- Familiar with AWS DynamoDB and used it as data storage for cloud apps.
- Studied Cassandra, and CQL but had no professional experience.
Relational Databases
- Advanced knowledge with 10+ years of experience in designing structures, writing T-SQLs, Stored Producers, functions, CLR, and Cursors, and managing databases like automating backup, tuning performance, defining and optimizing indexes, etc. in Microsoft SQL Server.
- Intermediate MySQL user with 5 years of experience in implementing different applications and services, writing queries, and using it in ORMs.
- Expert in using SQLite as storage for Android applications in conjunction with OrmLite and many standalone Windows applications.
Testing
- Proficient and pioneer test developer, initiator, and educator with 6 years of experience in developing Functional, Non-Functional, Regression, and Mutation tests using Junit, MSTest, XUnit, NUnit, Mockito, Moq, Karate DSL, Cucumber, Gherkin, Selenium, Jest, JMeter, and PIT in different types of testing (unit test, integration test, system test, end2end test, stress test, load test, and so on). Most are in TDD and BDD thinking and environments.
Spring boot with Java and Kotlin
- Advanced in using Spring framework and developing RESTful services with 6 years of experience in developing different microservices using spring boot 2 and 3, spring cloud, spring security, actuator, eureka, Webflow, spring data and Hibernate JPA, Spring Kafka, etc.
React Development with TypeScript and JavaScript
- Familiar with 1 year of experience in developing client applications with React hooks, React state, React router, jest, NVM, Node.js, NPM, and WebPack using Typescript, Javascript, HTML, CSS, etc.
Android Development with Java and Kotlin
- Intermediate Android developer with 3 years of experience in consulting, designing, developing, maintaining, and publishing Android applications using Google's standard libraries and tools.
CI/CD and Operation (You build it, you run it)
-
Experienced in setting up CI/CD pipeline environments which includes compiling and analyzing codes statically, executing tests, building artifacts, verifying the results, and publishing output along with integration with common project managers, source controls and operation tools such as Jira, Git, GitLab, GitHub, Bitbucket, Confluence, SonarQube, Bamboo, Terraform, Ansible, Jenkins, etc.
-
Proficient in establishing, safeguarding, customizing, and operating Windows and Linux servers, particularly Ubuntu, utilizing IIS, Tomcat, Apache HTTPD, and Nginx, among others. Skilled in creating and enhancing scripts using Powershell and Bash.
Strong Hands-On Coding
- Extensive knowledge of creating and mentoring teammates to create clean, standard, readable, minimally documented, obvious, future-proof, and well-designed code based on proven design principles and patterns including but not limited to DRY, KISS, SOLID, IoC, DI, AOP.
Excellent Team Working
- Excellent team collaboration and leadership skills, with extensive experience working with diverse teams, including cross-functional teams of varying sizes ranging from 3 to 15 members, spanning across different roles, from developer to leader, and levels, from junior to senior with different types such autonomous and solo developer to pair programming.
Active Agile Participant
- Good experience in involving Agile teams with different frameworks like Scrum, and Kanban using different tools such as Jira.
Familiar with Common Programming Languages
- Possessed expertise in comprehending, composing, and troubleshooting codes and scripts in Python, PHP, Scala, Rust, Go Lang, SQL, C, and C++ apart from proficiency in Java, Kotlin, C#, TS, and JS
- Extensive experience in developing enterprise-level applications and services that are very high-performant, resistant, scalable, monitorable (with tools like ELK (Elastic, Logstash, Kibana), Prometheus, Grafana), efficient, and secured (using local or centralized authentication and authorization protocols and tools including OIDC (OpenIDConnet), Auth0, OAuth2, JWT, IdentityServer, CAS, etc)
Adept OOP and FP Programmer
- Object Oriented Programming mindset with 2 decades of experience along with qualified Functional Programming knowledge and skills.
Certificates ↑
- Amazon Web Services (AWS)
- NoSQL databases (MongoDB, Cassandra)
- Relational Databases (MySQL, PostgreSQL)
- Software Testing
- Agile Development and Scrum
- DevOps
- Redis & Redis Streams (Redis University)
- Java Memory Management (LinkedIn)
- Containers w/ Docker, Kubernetes & OpenShift
- Kotlin
All courses have been passed in Coursera (if not explicitly mentioned) with a valid certificate.
Education ↑
- BSc from FUM (Ferdowsi University of Mashhad).
Spoken Languages ↑
- English (Fluent)
- Persian (Native)
Open Source Contribution ↑
-
Constant Generator Maven Plugin
A maven plug-in to generate custom constant variables for Java and Kotlin projects.
-
Identity column remover
A T-SQL stored producer to drop the identity behavior of columns of some or all tables of a database.