The story of Dmitry Sukharev, an award-winning expert in software engineering with experience working at major international organizations such as Alibaba and Deel.
Dmitrii, could you share what drew you into software engineering?
I developed an interest in computers pretty early on, probably at six or seven. At this time, my mom bought her first computer—the Apple iMac G3. Its case was transparent, making the motherboard and all the chips visible. How elegant and fun it seemed to me! It was at this moment that I found out how cool the computer world was.
Not long after, my mom purchased a Pascal game development book. I didn't know computers could be programmed, so from that moment on I was dreaming of making my own computer game, but since I was only a child, these codes were nothing more to me than a bunch of letters and numbers. So, instead of debuting with C languages, for example, I started experimenting with HTML, CSS, and JavaScript, which does not explicitly lead you into game development but helps you build a foundational understanding of web technologies instead.
How did you start your professional career in engineering?
I got my first job at Rostelecom, which is the largest telecom provider in Russia. Surprisingly, I didn't have much more to do than simply applying and successfully completing a home task with three rounds of interviews to get a post. I was simply good. I now recall my accomplishments and all of my young energy that I brought to the company—I was really in love with what I was doing. I solely built a frontend for a website chat widget, similar to the Intercom bubble you can see on many websites all over the internet. When my team lead first saw what I developed in about a week—he said, «WOW», for me, it was an expected result of the job, but I remember how impressed he was. I Introduced frontend bundling techniques for CSS preprocessors using SCSS via Gulp, which significantly improved code quality and reduced support efforts. In addition to that, I even designed and engineered my own custom HTML template engine. I also made the company switch to JQuery from raw JavaScript, which improved our development experience.
It's truly a lot. We can tell that you're really passionate about what you do and that writing software is more like entertainment for you. How did your career evolve after Rostelecom?
After working at Rostelecom, I transitioned to Carggo, a startup backed by venture capital in the United States. Our focus was on developing logistics software capable of accurately calculating freight pricing in real-time, utilizing predictive GRU and LSTM machine learning models, regardless of the vehicle used, be it an airplane, truck or a container ship.
Then, I was involved in the development of Tranzet, the first Uber-like transportation management system for trucks in Russia. In terms of responsibility, this project was one of the most significant ones I've ever worked on. So, originally, I was hired as a team lead, but what I really did was build the company, at least until the product was shipped to market. I was the first person on our team. To make the hiring process quicker, I introduced remote work early on, broadening our talent pool and assembling a skilled team in just two months, thanks to a budget of 500 thousand dollars.
The stack I chose was—TypeScript, Node.js, and React, which enabled seamless code sharing between backend and frontend software. TypeScript has ensured type safety, which allowed us to scale our code while seeing linting warnings. I used Jest for unit testing from the beginning to increase code tolerance to regression testing when building new product features into the existing code base. We managed our deployment processes via Docker; this is quite a common selection in the DevOps stack.
Then I landed a job at Alibaba, where we've migrated the gigantic Aliexpress infrastructure with hundreds of millions of requests per second from China to Russia. Currently, it has been more than 3 years since I started working for Deel, which is the fastest-growing startup in history; after only 5 years, the company is valued at twelve billion dollars, or probably even more now. Well, that's how I got into tech.
Tell me more about Alibaba. You joined them as a Senior Software Engineer. What was your most ambitious project for them?
For me, the whole experience at Alibaba was just a huge ambitious project on its own. What we did was basically building Aliexpress 2.0. Chinese and Russian e-commerce markets are way too different and we considered it easier to build a "new Aliexpress" rather than forking an existing one and drowning in software support.
But you don't have to build a standalone Aliexpress clone in Russia, given that there is already a lot of Chinese software and infrastructure. So we decided to reuse and reimplement everything we could, but to be honest, I would better rewrite it all in rust if I could.
But don't misunderstand me: this project was the main goal for the whole company, not as if I was building it all by myself. If you want to know more about projects I significantly contributed to, then I should be telling you about the Bargain promo: I was the supervisor of the project, leading its development and managing a team of 4 software engineers. It resulted in additional millions of dollars in monthly recurring revenue.
I can't imagine how complex this migration was. Could you tell us more about the most technically challenging part?
Sure, a simple one. It was definitely the Eleven Eleven—the largest and the most important Aliexpress promotional event taking place worldwide. It required a robust tech stack and an exceptional level of software architecture understanding. It could be easier to manage if our stack was common, but as I said, we reused lots of Chinese infrastructure which mostly were proprietary frameworks. Sometimes, they were forked from popular open-source software libraries like React and React Native, sometimes built from scratch for our specific needs, and then open-sourced by Alibaba, like Rax. The libraries were then supported by different teams, and trust me—it was a hell of a challenge to do so and build our own software upon this infrastructure.
Apart from custom software, we employed general caching techniques with Redis database partitioning practices and implemented custom load-balancing services across our specific distributed server architecture to ensure high scalability. These strategies, coupled with real-time monitoring and load testing in order to ensure reliability, were crucial in maintaining performance under extreme loads. It has significantly contributed to the success of Alibaba's major sales events on 11.11 and 28.08, which happen every year all over the world.
You mentioned that your leadership in the Bargain project at Alibaba resulted in millions of dollars for the company. What was it? Can you share insights into the engineering part of the project and what exactly you think helped the Bargain affect the market and reach its success?
Bargain was truly one of the greatest projects ever operated for Aliexpress. I really believe all of our competitors in the e-commerce market have copied it after we first introduced the concept. We came up with a feature that allowed users to invite each other into a bargain of any product featured in a list, and then, if it reaches a certain number of users buying the product, it would result in everyone having a large discount. It's a good thing for shops because it allows them to sell bigger quantities at once, and it is also beneficial for customers since they get a large discount.
As for the market contribution and the overall success, for me it was the greatest User Growth team I was ever part of. You know how it goes... there's a product manager who comes up with an idea, tests it as quickly as possible, and then engineers have to ensure a smooth user experience, basically by making everything work as fast for as cheap as possible.
When leading the Bargain from the engineering side, I faced the challenge of embedding our app as a web view within the VK mini-app platform, which made performance optimization critical because users won't use your product if it's glitching even a bit. We tackled this by splitting frontend bundles into chunks of the smallest size possible which would be distributed with the lazy loading approach only when a user navigates to a specific page or its piece, which is related to the JavaScript chunk needed to render such a piece.
After that, we leveraged performance profiling tools such as Google's Lighthouse and PageSpeed to minimize bottlenecks on each page. Next, tested the time to first render metric with load testing tools. This strategic approach allowed us to tap into VK's vast user base effectively, highlighting the importance of performance in embedded app development.
You have been working at Deel as a Senior Software Engineer for more than three years now, while Deel is a YCombinator alumnus and the fastest-growing startup in history with a valuation of $12 billion. Tell us about the biggest projects you worked on with them.
For me, the biggest one was leading the integration projects with Klarna and Coinbase. Those are two gigantic companies, and integrating them not only required a smooth experience from their side but also resulted in being a complex technical challenge on our side—both companies were already managing their payroll and HR on a large scale, both were using different software and had their processes different. What I needed to ensure was not repeating ourselves in code while providing great experience not only for Coinbase and Klarna but for basically any other company that would want to integrate their processes with Deel via API or HR service integration like BambooHR or other HR SaaS providers.
Aside from your professional work, you've also made well-known contributions to the open-source community by creating OpenCommit. What is it? What motivates you to contribute to open-source, and how did the idea for OpenCommit come about?
OpenCommit was born from a need to solve my own problem. It is software you run via a command-line interface; it generates git commit messages for you with the help of AI, which allows you to save time and reduce the cognitive load whenever you need to recall what changes to a codebase you have made; basically, you simply ask a Large Language Model to look into the changes and generate a commit message for you. Actually, I use it every day, together with 50,000 other engineers. I think at some point in my life, collaborating with gitnation.org inspired me to look into open-source software.
OpenCommit has been downloaded more than 50,000 times since you open-sourced it. What do you think drives its popularity so much in the developer community, and how do you plan to sustain its growth and relevance?
I think OpenCommit's popularity stems from a simple thing—it solves a real problem. That's why people use it. As I said, I use it myself, so I know what I'm talking about. It's a relief to outsource this kind of repetitive task to an AI.
I constantly engage with the open-source community for feedback, iterate on the product based on the input, and explore potential integrations that enhance its functionality. OpenCommit integrates into the most used engineering action, which is staging and committing your code into the cloud. Developers do this action every day, and not only once, but many, many times a day. Contributing to GitHub's everyday discussions helps in keeping OpenCommit relevant and useful.
At the end of the day, it is all about solving a real problem, and winning the GitHub 2023 hackathon in the "DIY deployments" nomination is the best proof of the value OpenCommit creates for software developers.
And finally, what're your career plans, any goals you want to achieve in the near future? And what advice would you give to young software developers?
I'm working on a new open-source tool that would help programmers automate software engineering. I've been experimenting with two methods that seem more promising than already existing tools. The first method is to divide a large language model (for example, GPT) into many small models, each of which solves a specific task. This allows you to solve more complex tasks, such as creating clones of the Flappy Bird game, instead of asking GPT to write a small piece of SQL code. The second method is a combination of well-known software development practices such as TDD (test-based development), but instead of writing tests yourself and solving them, the LLM is programmed to run in a loop until it solves the test. At first, the model can try several different implementations, then detect an error and adjust the code to finally pass the test.
I've already shipped a beta version of the tool to GitHub. It's called AI TDD, you can google it and see my repository on the first page. I've got a few hundred upvotes, so for now the general plan is to automate software engineering to make it more fun by outsourcing repetitive tasks to AI or just simplifying programmers' workflows with different tools.