Details
- Location
- Valencia, Spain
- Email
- me@akurganow.ru
- Born
- 28 February 1986
- Languages
- Russian (native), English (professional working proficiency)
Summary
I have been building for the web since 2011 — full-time since 2013, and leading
engineering teams since 2018. I prefer product work: the more expertise a developer has
in the product, the deeper the involvement and the better the result.
I consider design and engineering inseparable — code and API design are design too.
Beyond prototypes and MVPs, interface decisions should be driven by sufficient, correct
data. I rely on automated testing focused on critical paths and the places where
problems actually appear, rather than on TDD for its own sake.
I organized the St. Petersburg frontend community spb.frontend() from its founding
and hosted its podcast, and later co-hosted Ponaehali, a podcast unrelated to
programming. Outside of work: snowboarding and go-karting.
Skills
- Leadership
- Engineering management, hiring and interviewing, mentorship and growth planning, release management, planning and code review, cross-team coordination, distributed teams across time zones
- Engineering
- JavaScript, TypeScript, React, Redux, Node.js, Nest.js, RxJS, Express.js, Webpack, PostCSS, Gatsby.js, Cordova, WebSockets
- Testing & AI
- Playwright end-to-end testing, autonomous AI agents, LLM-judge benchmarking, CI/CD
Experience
Engineering Team Lead at RingCentral
February 2020 — present
RingCentral is a leading provider of cloud-based communications and collaboration
solutions. I lead an engineering team of up to eight people working on RingCentral
Video (RCV), the company’s video conferencing product.
I hire and grow engineers — interviewing, mentorship and growth planning; own the
team’s processes and delivery, from planning and code reviews to release coordination
across multiple time zones; provide technical leadership on complex projects while
still writing code myself; and drive cross-team initiatives with stakeholders across
the company.
AI agents
My current focus is building our own harness for AI agents working autonomously on
our tasks, offloading the routine work of developers and QA engineers — mostly test
automation — to AI. Our agents successfully write end-to-end Playwright tests,
reproduce bugs with our fixtures, and fix bugs. To develop and improve this I built a
benchmark around the system: it replays a fixed corpus of real tickets already closed
by humans, and a separate AI judge scores how close the agent came to the human
solution and the actual code. Everything the agents can do — bug fixes and tests
alike — is measured by the same benchmark, which is how we track and compare different
versions of agents, plugins, skills and so on.
Alongside this I maintain our team’s marketplace of plugins for different agent
systems — both our own harness and local ones — kept cross-platform on the open
Agent Plugins 1.0.0 standard.
Technologies: React, TypeScript, Node.js, Playwright, AI agents, CI/CD, Agile methodologies.
UX Engineer, Team Lead JavaScript Developer at Freewallet.org
March 2018 — February 2020
The company developed its own solutions for the cryptocurrency market. I joined one of
its long-running projects after launch and eventually led two teams — mobile and web. I
prepared releases, decomposed and distributed tasks among developers, and wrote code
myself, stepping into other developers’ tasks when something didn’t go according to
plan. Releases shipped every week, alternating between the web and mobile applications,
giving each a two-week development cycle.
Mobile applications
I participated in the design and developed two mobile applications. In the first one
users could interact with more than 300 currencies and tokens (receive, send, buy, view
statistics); it was translated into 14 languages, supported 15 fiat currencies,
interacted with native APIs (camera, push notifications, clipboard, in-app browser),
communicated with the server over WebSockets, and used JWT authentication with
authorization through the most popular providers (e.g. Facebook and Google). It was
built for iOS and Android and available in the App Store and Google Play. The Redux
state was persisted in IndexedDB, encrypted with a key kept in the device’s secret
storage. The second application worked with a single currency: from the same sources,
22 separate apps were built with different configs and feature sets, largely repeating
the functionality of the main one.
Technologies: Cordova, Webpack, TypeScript, PostCSS, React, Redux, Reselect, react-intl, OneSky, bignumber.js.
Web application
Fully repeated the functionality of the main mobile application, written with the same
technologies and sharing pieces of code where it made development easier. Unlike the
mobile apps it had its own design and routing, was responsive, and the code was split
into vendor chunks and by routes.
Technologies: Webpack, TypeScript, PostCSS, React, Redux, Reselect, react-intl, OneSky, bignumber.js.
Website
I designed and developed the marketing website on my own, later handing it over to
another team and returning to mobile development. The site was built into static files
from its own API, separate from the main product (app pages, blog, landing pages);
everything was edited in a dedicated admin panel, stored in a database on the company’s
own servers and distributed via CDN. The site was translated into 14 languages, had
more than 20 app pages, landing pages and a multilingual blog; every page had an AMP
version, and some hid easter eggs — I consider such things mandatory for marketing.
For example, instead of a static screenshot, app pages showed a dynamic SVG with the
real time, date and live currency rates.
Technologies: Gatsby.js, React, PostCSS, react-intl, OneSky, bignumber.js, Nest.js, RxJS.
Senior Frontend Developer at Uploadcare
August 2016 — February 2018
The company was engaged in file storage, processing and distribution. I was involved in
designing and developing a new company website. The old one was a Django monolith
heavily tied to the backend — frontend fixes couldn’t be released without a backend
release. I developed the new frontend with a new design: it ran on React and talked to
the backend via JSON API, working as an SPA with SSR on Express.js. The product
documentation was built into static files from Markdown in a separate repository and
injected into React on both server and client, saving on bundle size and data
transfer. More details in the
article about the company’s stack.
July 2015 — August 2016
The studio did full-cycle outsourced development and project management for companies
and startups. I came to work on a large educational project built with Ruby on Rails
and PostgreSQL on the backend and React with Redux on the frontend; client and server
communicated over WebSockets using the Faye library. I worked on the architecture of
more than 20 different types of course exercises, each persisting its state in
localStorage. The exercises used a wide range of technologies and APIs: audio and text
exercises with error checking and several kinds of teacher comments and highlights,
audio and video with the current phrase marked in the text, video with classic
subtitles, drag-and-drop, canvas. There was also a personal account with customizable
dynamic widgets and a built-in messenger for teacher dialogues and study-group chats.
Alongside the main work, I taught JavaScript at St. Petersburg Polytechnic University
as a studio specialist and trained two interns at the studio. After I finished
teaching, I took up mentorship: the person I helped learn frontend went on to build a
career at one of the largest banks in Russia and became an organizer of PiterJS meetups
and conferences.
Frontend Developer at Amplifr
July 2013 — July 2015
Amplifr started as a SaaS platform for musicians, actors, politicians and other media
personalities; after a pivot it became a publishing and analytics application for
social networks. I worked in a globally distributed team on both the main application
and client sites built on our own SaaS platform. I collaborated with many client
designers to improve UX, and acted in part as an account manager — collecting feedback
from platform users and aggregating it into recommendations for further product
development.
Some achievements:
- Forms with animations and a design similar to Material — before the style was even presented (jQuery)
- Custom form validations on client and server with server error handling
- Storing filled form data in localStorage and restoring it on return to the form
- An interactive map of musicians’ concerts with voting for your city and protection from cheating (Yandex Maps, geolocation, jQuery, Ruby on Rails)
- Audio and video players built on the HTML Audio and Video APIs
- Responsive photo galleries without third-party libraries
- The Pursuing Nav jQuery plugin
- On one site, nearly all standard form elements replaced with custom ones — with full support for standard behavior (keyboard, a11y)
Web Developer — Freelance
September 2012 — July 2013
I developed websites and online stores — for example, the official website of performer
L-Tune, the website of Anton “Scut36” Volkov’s book with pre-orders and payment, and
the official website and online store of performer Assai. I also developed modules for
WordPress and WooCommerce, for example a
payment gateway for Robokassa.
Links