Yevhen Stienin

Yevhen Stienin

Full-Stack Software Engineer in Ukraine, Ivano-Frankivsk

About

Seasoned software development professional with over 9 years of experience crafting robust, scalable software solutions and over 30 prosperous projects. Results-driven by nature, I immerse myself in the client's business, striving to contribute to their objectives. My expertise lies in creating reliable systems that are easily configurable, easy to test, and maintainable.

I have graduated with a Master's degree in Computer Systems and Networks, and I actively update my knowledge and skills to stay current with industry trends and developments.

Software development is not just a job for me; it's a passion where I find fulfillment in both the process and the outcome.

Projects

2024

Project motto: cache all and everything or die!
A new team, a new project from scratch.

One of the most interesting and definitely the most intense projects I’ve had the honor of participating in!

It was a precious experience because the number of mistakes and wrong decisions made on this project and the lessons learned had a tremendous impact both on me and the overall team. It was an excellent opportunity to learn the hard way, and I took full advantage of it!

Despite all the challenges, the work was completed on time and with the required level of quality. The team proved to be highly cohesive, professional and focused on a common goal.

I have participated in the design and implementation from scratch of a revolutionary news portal with extensive use of AI. It is a highly loaded system capable of processing, storing, and managing giant data sets (millions of interconnected records) with minimal delays.

This was my first experience conducting the Discovery phase for a project. During this phase, the customer's requirements and wishes were clarified, the system architecture was developed, and a detailed plan of further implementation actions was created. An active phase of system design and development followed, and I served as the technical lead of the backend team.

A team of 10 people completed the first iteration in less than 5 months, resulting in the successful release of the product's first version.
Currently, the system has more than 160K unique users per month, some of whom have subscribed to paid plans.

Some of the most challenging points were:
1. Implementing data retrieval algorithms that lead to complex queries.
2. Processing and managing massive amounts of data (tens of millions of records).
3. Strict performance requirements and corresponding attempts to optimize work with the database and overall performance of all system components.
4. Tight deadlines.

I have experience working with AI and model integration. We built our own vector database using OS and knn algorithm for our purposes.

Main responsibilities:
1. Conducting the discovery phase. This step includes helping the customer understand the main goals and solution scope, documenting requirements, selecting the technical stack and toolkit, constructing the database structure, developing algorithms for data retrieval, and documenting everything above.
2. Lead and support the backend team.
3. Developing algorithms for data retrieving.
4. Roadmap and sprint planning, sprint reviews.
5. Tasks creation and enriching.
6. Helping the team make architectural and technical decisions.
7. Code reviews.
8. Technical debt management.
9. Collaboration with the customer team and data team.
10. Documenting everything we built or are going to develop.

Personal impact/value:
1. Optimized the most frequently used queries to the database; some of them got tens of times faster.
2. Optimized memory allocation for the backend app, which helped avoid pod crashes in Kubernetes for the backend in some cases.
3. I devised a mechanism for managing database requests that prevents the simultaneous execution of many identical queries, for example, when different users make the same request. Physically, only one query is executed in the database while the remaining queries wait for the response on the backend. This significantly reduced the load on the database.

The following technical stack was used:
1. Languages: TypeScript.
2. Backend: NestJS, TypeScript, TypeORM, AWS SDK, Stripe, PayPal, langchain, AWS SDK, passport.
3. Frontend: NextJS, Tanstack React Query, Zustand, Sentry, React Hook Form, Axios, Redis, Zod, Chart.js, clsx.
4. Database: PostgreSQL (TypeORM), OpenSearch, Redis, Redshift.
5. AI and NLP: Bedrock (Claude 3 Haiku and Claude 3.5 Sonnet, Cohere Embed for embeddings).
6. Cloud: AWS: EKS, SES, S3, OpenSearch, RDS, CDN, Cognito, System Manager, Redshift, Data Firehose, Grafana.

2023

It was one of the most exciting and complex solutions I've ever participated in. About 50 people are working together to build something so useful and helpful for thousands of companies to manage their expenses and finally bring order where it's the hardest to achieve.

All the people involved in the project were constantly receiving real feedback from end consumers (where large companies were included), where they enthusiastically shared how much this product had improved their expense management experience.

Description:
It provides a powerful yet easy expense management solution, including real-time expense tracking and reporting through Center Expense. Manage travel and expenses in one place. Get visibility and control of all travel, including off-platform bookings.

Team structure and interaction: up to 6 teams that closely interact with each other and with the POs and UX teams directly, using Scrum with subsequent transition to SAFe.

Tools and technologies:
Microservices Architecture, JavaScript, TypeScript, NodeJS, Web (ReactJS, GraphQL, Apollo, AntDesign), AWS (Lambdas, API Gateway, SNS, SQS, S3, Event Bridge, Cognito, CloudWatch, ECR, Appsync), Databases (ElasticSearch, MongoDB, DynamoDB), Kubernetes, Health and Performance (Sentry, FullStory), Testing (React test library, Mocha, Chai, Selenium WebDriver, Allure), CI/CD with Jenkins and GitHub pipelines, infrastructure as code approach (Pulumi).

Responsibilities:
1. Leading a team of 7 developers for 3 years.
2. Participated in planning, development, and delivery of new functionality.
3. Involved in long-term planning.
4. Support and enhancement of existing functionality.
5. Code review.
6. Technical debt management.
7. Collaboration with DevOps and other Engineering teams.
8. Team extending, candidates interviewing, and new team members onboarding.
9. Creation and maintenance of all types of testing.
10. Support for system viability and improved productivity.
11. Product end-consumer support and rapid resolution of their issues.
12. Migration to new technologies, approaches, framework versions, and tools.
13. Documentation support and expansion.

Challenges:
Supporting system reliability and performance while continuously adding complex functionality, performing many computations and data mutations per each user request, optimizing database queries, and synchronizing with a large number of third-party systems and service providers.

Impact/value:
I took the initiative to break down several large and complex services into smaller ones. This improved the system's performance by eliminating some bottlenecks and significantly simplified the maintenance and further development of the services, thanks to more straightforward and more understandable areas of responsibility.

Results and achievements:
1. I gained my first experience as a team leader.
2. Led design, development, and delivery of a large amount of new functionality.
3. Recorded a significant number of satisfied end-users, increased consumer satisfaction.
4. Successfully migrated to new versions of lambdas, integrated Elastic search, and migrated data from DynamoDB.
5. Created and used data migration mechanisms for users to support the new product functionality.
6. Team members continuously grew professionally. I'm proud of the fact that during the project some engineers had grown from junior/middle up to senior level in pretty short terms.

2021
Smart Parking Spaces at Akvelon, Inc.

Description:
Machine learning-based application with user-oriented UI. The goal of the project is to detect available parking spaces and predict the approximate availability of new parking spaces.

Tools and technologies: TypeScript, React.js, Redux, Websockets, NodeJS, PostgreSQL, SQLite, Jest.

Responsibilities:
1. Design and develop all the system from scratch, provided feature estimation.
2. Integrate with ML solution
3. Support and bug fixing.
4. Communication with customer engineers.
5. Build and support unit, functional, and integration tests.

Impact/value:
During the project, a decision was made to create several separate services, each performing a specific task. This allowed for more targeted and efficient scaling of the project to meet the client's needs without unnecessary costs associated with scaling parts that do not require it.

Results:
The system was successfully designed and created within the specified timeframe. It was tested on real cameras located in large municipal parking lots in different cities in the USA.

2018
Meeting Summarizer Bot at Akvelon, Inc.

Description:
Bot for Skype and MS Teams that, after adding to a conference, analyzes the conversation, separates it by individual participants, generates a textual transcript of the entire call, and separately creates a summary with the most important information.

Tools and technologies: TypeScript, React.js, NodeJS, .Net Core, Microsoft bot framework, MS Graph API.

Responsibilities:
1. Design and develop the overall system from scratch.
2. Create and support tests.

Impact/value:
I have found a way to make the bot work with real-time voice calls (allowing it to add them to a 1:1 or group meeting) by sending system messages to get voice messages back in a loop and then gluing audio excerpts into continuous speech.

Results:
Developed the idea into a concrete implementation and conducted a presentation of the MVP of the product.

Work Experience

2024 — Now
Ukraine, Ivano-Frankivsk

A new team, a new project from scratch.

Have participated in the design and implementation from scratch of a revolutionary news portal with extensive use of AI. It is a highly loaded system capable of processing, storing and managing huge data sets (millions of interconnected records) with minimal delays.

This was my first experience conducting the Discovery phase for a project, during which the requirements and wishes of the customer were clarified, the system architecture was developed and a detailed plan of further implementation actions was created. Many mistakes were made, but an endless amount of knowledge was gained! An active phase of system design and development followed this. I served as the technical lead of the backend team.

The first iteration was completed in less than 5 months by a team of 10 people. The result was a successful release of the product's first version.
Currently, the system has more than 160K unique users per month, some of whom have subscribed to paid plans.

Some of the most challenging tasks were implementing data retrieval algorithms, processing and managing massive amounts of data (tens of millions records), strict performance requirements, and tight deadlines.

I have experience working with AI and model integration. We built our own vector database using OS and knn algorithm for our purposes.

Main responsibilities:
1. Discovery phase conducting. The step includes helping the customer understand the main goals and solution scope, documenting requirements, technical stack and toolkit selection, database structure, developing algorithms for data retrieving, and documenting everything above.
2. Lead and support the backend team.
3. Developing algorithms for data retrieving.
4. Roadmap and sprint plannings, sprint reviews.
5. Tasks creation and enriching.
6. Helping the team make architectural and technical decisions.
7. Code reviews.
8. Technical debt management.
9. Collaboration with customer team and data team.
10. Documenting everything we built or are going to develop.

The following technical stack was used:
1. Languages: TypeScript.
2. Backend: NestJS, TypeScript, TypeORM, AWS SDK, Stripe, PayPal, langchain, AWS SDK, passport.
3. Frontend: Tanstack React Query, Zustand, Sentry, React Hook Form, Axios, Redis, Zod, Chart.js, clsx.
4. Database: PostgreSQL (TypeORM), OpenSearch, Redis, Redshift.
5. AI and NLP: Bedrock (Claude 3 Haiku and Claude 3.5 Sonnet, Cohere Embed for embeddings).
6. Cloud: AWS: EKS, SES, S3, OpenSearch, RDS, CDN, Cognito, System Manager, Redshift, Data Firehose, Grafana.

2021 — 2024
Ukraine, Ivano-Frankivsk

During this stage of my work at the Akvelon, I had only one active project in financial accounting and monitoring, in which I served as the technical lead for a newly formed team consisting of six senior full-stack engineers. My new responsibilities included participating in technical and architectural decision-making at the level of major features and the overall product. I was also involved in both short-term and long-term planning, as well as interacting with other teams.

Main responsibilities:
1. Lead and support a team of 6 senior engineers.
2. Both short-term and long-term planning using Scrum and SAFe. Sprint planning and reviews.
3. Helping the team make architectural and technical decisions.
4. Сloser collaboration with the UX team and the product owner team.
5. Code review.
6. Technical debt management.
7. Collaboration with DevOps and other Engineering teams.
8. Participate in quality team expansion, conduct technical interviews, mentor junior engineers, and create tailored development plans that align with the company's requirements and the engineers' aspirations.
9. Technical support for consumers.

The following technical stack was used:
1. Languages: JavaScript, TypeScript.
2. Backend: NodeJS, Serverless with AWS Lamdbdas.
3. Frontend: ReactJS, Apollo, AntDesign, Sentry, Fullstory, AWS Appsync.
4. Testing: Manual testing by developers, Unit and integration tests (Mocha), and Automated tests (WebdriverIO, Allure Reports).
5. Databases: DynamoDB, MongoDB, ElasticSearch.
6. Cloud: AWS (Lambdas, SQS, SNS, ServiceBus, ElasticSearch, DynamoDB, k8s, Appsync, API Gateway, CloudWatch), GCP (Google Maps Service).
7. Other: Corpay/Comdata, Google Maps API.

2019 — 2021
Ukraine, Kharkiv

After gaining some experience and according to the company's internal competency matrices, I advanced to the next level.

At this stage, I primarily participated in large, long-term projects instead of quick and small ones. The main and most extensive project was in the finance sector, where I gained experience working with bank cards and transactions. I worked with the Corpay and Comdata interfaces. The main challenge was consistently meeting the reliability and security requirements, considering the specific nature of working with finances. Also, within a small team of 2 engineers, I designed and built from scratch a system to manage parking spaces on municipal parking lots in the USA using a micro-services approach.

Main responsibilities:
1. To be a part of team of full-stack engineers.
2.Delivering features including steps from reviewing description and UX, chosing technical solutions, implementing, manual testing, and automated tests creation.
3. Creating new microservices, and modifying existing ones.
4. Collaboration with DevOps team to integrate and support news system's units.
5. Participating in sprint plannings, sprint reviews.
6. Data migrations.
7. Technical support for consumers.
8. Participate in quality team expansion, conduct technical interviews, mentor junior engineers, and create tailored development plans that align with the company's requirements and the engineers' aspirations.

The following technical stack was used:
1. Languages: JavaScript, TypeScript.
2. Backend: NodeJS, Serverless with AWS Lamdbdas.
3.Frontend: ReactJS, Apollo, AntDesign, Sentry, Fullstory, AWS Appsync.
4. Testing: Manual testing by developers, Unit and integration tests (Mocha), Automated tests (WebdriverIO, Allure Reports).
5. Databases: DynamoDB, MongoDB, ElasticSearch, MySQL, SQLite.
6. Cloud: AWS, GCP.
7. Other: Corpay/Comdata, Google Maps API, Image processing with custom AI model.

2017 — 2019
Ukraine, Kharkiv

This was just the first phase of my work at Akvelon.
I joined the R&D department, where there were many diverse projects that changed quickly, constantly pushing me to learn new technologies and approaches. I developed several interesting MVPs from scratch, including as a Microsoft vendor. One of successfully completed projects, a demo application for the new version of MS Graph API, was showcased as a demo at the Microsoft Ignite 2018.

Additionally, I got familiar with the Bot Framework and gained experience working with speech recognition using the service, as well as message context recognition using LUIS Cognitive Services. I also worked with MS Azure. Among databases, I had the opportunity to work with MS Azure Storage, Cosmos DB, MS SQL Server, and many others.

Main responsibilities:
1. Implementation of projects from scratch, including architecture and selection of technical solutions.
2. Support and expansion of functionality of existing projects.
3. Writing and supporting tests.
4. Participation in short-term MVPs and POCs.
5. Preparing reports and presentations upon completion of sprints/releases.

The following technical stack was used:
1. Languages: C#, JavaScript, TypeScript.
2. Backend: .NET Framework, NodeJS.
3. Frontend: ReactJS, Angular 2+.
4. Databases: MS SQL Server, MongoDB, SQLite, MySQL, Azure Storage, Cosmos DB.
5. Cloud: Azure, AWS, GCP.
6. Other: Microsoft Bot Framework, LUIS Cognitive Services, MS Graph API.

2015 — 2017
Ukraine, Kharkiv

Over the course of almost two years, I participated in more than five different projects, gaining a wide range of experience. Most of the projects used .NET on the backend. It was also here that I first discovered that the backend could run on JavaScript (referring to Node.js) and gained my first experience writing a backend using Node.js. I also dealt with backend scaling using the pm2 tool.

Main responsibilities:
1. Implementation of projects from scratch under the guidance of an experienced mentor.
2. Support and expansion of functionality of existing projects.
3. Writing and supporting tests.
4. Preparation of reports and presentations upon completion of sprints/releases.

Participated as a part of team in the following projects:
1. Online interface for converting information for a manufacturing company. Technologies: .Net Core MVC6, ExtJS and Sencha, MongoDB.
2. Several projects using MEAN stacks lasting 1.5 - 2 months each.
3. Application using ASP.NET 4 MVC5, Knockout JS and MSSQL.

Completed myself following projects:
1. Migrating the application from MVC4 to MVC5.
2. Migrating part of the site from Knockout to Razor (SEO-centric site).
3. Mobile application for the iOS and Android for the customers of the manufacturing company. Technology: Ionic 2 (Angular 2).
4. The editor for presentations using the stylus. Technologies: Electron, ReactJS.
5. Organizer for projects with the integration of Google services (Google Drive, Maps, Calendar). Technologies: Electron and Angular 2.

Education

2016 — 2018
Ukraine, Kharkiv
  • Field: Computer Systems and Networks

  • Degree: Specialist

  • Qualification: Computer engineering

  • Date of graduation: 2018-02-28

  • Diploma number: C18 005426

2013 — 2016
Ukraine, Kharkiv
  • Field: Computer Systems and Networks

  • Degree: Bachelor’s Degree

  • Qualification: Computer engineering

  • Date of graduation: 2016-06-30

  • Diploma number: B16 136908

  • Diploma with honours

2009 — 2013
Ukraine, Pavlohrad
  • Field: Maintenance of computer systems and networks

  • Degree: Junior Specialist

  • Qualification: Technician programmer

  • Date of graduation: 2013-06-30

  • Diploma number: HP 45641312

  • Diploma with honours

LinkedIn
GitHub
Facebook
Instagram
Unsplash
Telegram