I'm a front end & Node.js developer,
and I love solving business problems

Let me show what I can do for you.

Experience

  • Fish.Travel

    November 2017 — July 2019
    • Senior Front End Developer
    Team of 20+ people, 6+ engineers

    Website

    An international fishing trips booking service.

    Starting as a contractor at this startup, I became a de facto full-fledged team member very quickly. Did all the best to help the team to achieve the goals working with short deadlines for a long time.

    During my free time, I kept searching for and figuring out the ways how achievement of goals could be accelerated with both my front end technical expertise and the ability to learn quickly. Cooperated with founders really closely and constantly took active part in the designing, polishing, and planning of most of the releases. Played needed but missing roles. Proactively offloaded the founders of distracting technical routine and took a number of tasks upon myself without shifting deadlines. Optimized business processes on my own initiative.

    During this employment, I learned the areas from DevOps to product analytics. This was a huge business-oriented experience. As a result, we built a service selling in 18 countries and cooperating with service providers from 42 countries.

    • JavaScript
    • CSS
    • SASS
    • CSS Modules
    • BEM
    • Node
    • Bash
    • SSR
    • SPA
    • infrastructure
    • React
    • Redux
    • UX Design
    • localization
    • internationalization
    • i18next
    • Fluent
    • AJAX
    • Jest
    • Cheerio
    • Jenkins
    • pm2
    • Docker
    • Docker Compose
    • Express
    • nginx
    • Webpack
    • Babel
    • jscodeshift
    • AST
    • npm
    • GitLab
    • Git
    • Agile
    • Atlassian Jira
    • distributed team
    • time zone difference
    • startup
    • SEO
    • Google Maps
    • PayPal
    • Sentry
    • Adobe Photoshop
    • Avocode
    • Figma
    • Business value / Conversions

      • Increased several funnel step conversions up to 12 times as a result of contributions from different perspectives, both technical and product-oriented ones (see further statements to learn what made it possible).
      • Decreased Bounce Rate by 11.2 times achieving daily bookings requests for organic traffic
      • Developed the MVP's front end in several weeks, resulting in reaching positive unit economics and receiving new funding round. The project was in the list of best 30 of 890 companies which took part in 500 Startups accelerator in Moscow, Russia.
    • Website Optimization / Web Performance

      • Drastically speeded up the loading of web pages, mostly out of work and for my own initiative

        • Lighthouse's Performance Score:
          1⁄100 → 51⁄100
        • First Meaningful Paint:
          10.5s →  1.8s (5.8 times better)
        • Time to Interactive:
          35.0s → 10.6s (3.3 times better)
        • Speed Index:
          15.3s →  5.4s (2.8 times better)

        The data describes the main page where the content hasn't been changed much by the end of optimization. New pages are generally lighter since I've convinced the managers to keep an eye on UI smoothness. Thus, the new product page has First Meaningful Paint < 1.4s, Time to Interactive < 9.0s and Lighthouse Performance Score ≈ 60⁄100.

        Much more investigation and experiments were planned initially, but since it already gave a huge improvement of behavioral metrics, I've shifted my personal attention to the optimization of business processes (such as introducing A/B experiments and providing the tools to customize the product dynamically).

        • React
        • Redux
        • Lighthouse
        • WebPageTest
        • Google PageSpeed Insights
        • Google Analytics
        • imagemin
        • Webpack
        • Babel
        • i18next
        • Express
        • code splitting
        • minification
        • lazy loading
        • encoding
        • compression
        • font minification
        • font loading
        • caching
        • localization
        • assets optimization
        • overfetching
        • HTTP/2
    • Business processes optimization

      • Trying to figure out why we couldn't achieve positive unit economics, I decided to dive into product analytics by myself in my free time. As a result of several days of investigation, I've learned advanced features of Google Analytics and then provided the tools how the behavior of concrete users can be analyzed, how to create more valuable reports and how to get the data more effectively. After that, I regularly provided an overview of what's going on from different perspectives, often giving a fresh look. These actions frequently came in handy for suggesting and testing hypotheses and for the planning of releases.
      • Excluding developers from localization process almost completely, introducing immediate and zero-downtime updates and making localization to be non-technical people focused - all for my own initiative and on my free time. The solution will be self-hosted and will cost nearly nothing for the company.
        • work in progress
        • i18next
        • Fluent
        • Node
        • Pontoon
        • Heroku
      • Introducing the solution to manage feature rollout and to set up A/B or multivariate experiments without involving developers. Again, all during my personal time. With immediate and zero-downtime updates, friendly UI, self-hosted, and costs nothing.
        • work in progress
      • Developing a solution for customizing website content based on current user's data and behavior (e.g. traffic source, ad campaign, device type, location, landing page, visited pages, achieved goals). Integrated with A/B testing tools as targeting rules. No need to engage developers. Again, during free time.
        • work in progress
      • Integrating zero-downtime deployments for the front end. Already reduced downtime from 10 minutes to 10-15 seconds. Again, in my free time.
        • work in progress
    • Architecture

      • Developed the front end consisting of about 100K SLOC (source lines of code) and more than 50 different views. Joined the project at the early beginning.
      • Reimplemented initial architecture which previously was lacking transparency, flexibility, and scalability. Fixed its weaknesses with automation and rethinking "best" and "well known" practices. Adapted it for high performance.
      • Partially integrated Twelve-Factor App Manifesto to the front end resulting with a huge increase of stability and scalability. Eliminated errors related to the inconsistencies between development, staging and production environments. It also simplified the future transition to Docker containers.
      • Decreased the risk of error occurrences with integrating stricter code validation and less error-prone development practices. As a result, I don't have to fix anything for several months already.
      • Wrote HTML, CSS and Git guidelines for new employees and contractors. Documented how to structure modules and how to deploy the front end to production.
    • Hiring and mentorship

      • Conducted 2 job interviews for the front end developer position.
      • Mentored and consulted new employee for a month and made code reviews regularly.
      • Cooperated with third-party contractors including HTML & CSS developers (PSD to HTML) and integrated their code to the project.
    • What it took from me

      • Ability to work alone with a focus on completeness and quality.
      • Ability to help the managers with extending the tasks and to work with incomplete requirements.
      • Ability to work with short deadlines and with rapidly changing requirements.
      • Emergency management and resolution experience.
      • Understanding of what business needs and what customers value.
      • Understanding of how the business operates from development to sales.
      • Ability to work effectively from home.
      • Ability to work in a distributed team having a time zone difference of 4 hours.
        I was in Krasnoyarsk, Russia (GMT+7), whereas most of the team members were in Moscow, Russia (GMT+4).
  • LibertySoil

    February 2016 — December 2017
    • Full-Stack Web Developer
    Team of 14+ people, 7+ engineers

    Github repository

    Education Change Network connecting people from different cultures, schools and families was designed to help parents resolve problems, advocate their child interests, find ways and practical advice that would help more children reach better education.
    (quoted from the website of owner organization, Loki Education)

    Worked as a full-stack developer primarily focused on front end built with React. Aside from main work, suggested and integrated various improvements to the workspace and introduced practices for making the project more reliable, including type checking with Flow. Had been providing reviews for colleagues' code during the entire employment period. Offered myself for the founders to become development's main "driving force" or "mover" several times assuming the project is lacking efforts and care from the team.

    Unfortunately, since the contribution of founders (they also were managers) was too limited and founders themselves were highly isolated and not available most of the time (when they were absolutely needed), I didn't feel healthy working environment and I couldn't show my capabilities enough as a developer and a team player. It's exactly what I've done with more success later during cooperation with Fish.Travel.

    The project was suspended by the initiative of founders.

    • JavaScript
    • CSS
    • LESS
    • BEM
    • Node
    • SSR
    • SPA
    • infrastructure
    • React
    • Redux
    • Immutable.js
    • AJAX
    • Mocha
    • Enzyme
    • Unexpected
    • Flow
    • Knex.js
    • Bookshelf.js
    • PostgreSQL
    • Koa
    • Webpack
    • GitHub
    • Git
    • Trello
    • Slack
    • distributed team
    • time zone difference
    • Development

      • As one of the tasks, designed and worked alone on implementation of browser-based UI Kit supposed to allow third-party developers:

        • to compose the project library's React components
        • to edit their implementation (related scripting and styling files)
        • to submit the changes to the project's server

        All entirely in the browser, on the fly, without setting up the development environment locally.

  • production-react-boilerplate

    • open source
    • work in progress
    February 2018 — Present
    • Author

    Github repository

    Solution collecting the best practices for developing production-ready web applications from scratch. It gracefully fine-tunes the tools for linting, debugging, bundling and delivery under the hood. Primarily focused on production performance and scalability of development.

    Initially planned to integrate here all technologies I learn. However, it turned out to be much more valuable to do this inside the application of one of my clients, Fish.Travel. So I didn't have enough time for including the stuff here at the same time. Something has been included initially, but much more features are coming.

    I'm going to finally integrate all collected knowledge here in late 2019. Before starting the migration, I need to revisit the distribution format. It's a plain boilerplate, just a starter repository right now, whereas an isolated, painlessly upgradeable solution like next or razzle is needed. The new strategy will hide configurational complexity and allow gradual improvements rather than a one-time injection.

    • JavaScript
    • Node
    • Bash
    • SSR
    • SPA
    • React
    • Redux
    • AJAX
    • Jest
    • Lerna
    • Performance
    • infrastructure
    • CircleCI
    • Express
    • nginx
    • Webpack
    • Babel
    • GitHub
    • Git
    • Yarn
  • asset-modules-provider

    • work in progress
    December 2018 — Present
    • Author

    The solution allowing to set up SSR and hot-reloading of SSR without the need to have two parallel webpack processes. Being highly performant, it speeds up rebuilding of large-scale web applications' bundles, especially in middle- and low-end devices. This way it prevents developer workspace from slowing down and cares about DX respectively.

    As you know, the fewer developers are distracted on routine (like waiting for tooling), the more time and energy they have to polish UX, so better DX leads to better UX. Checked by myself.

    The installation process is supposed to be easy. The solution itself is built to be stabler than alternatives like webpack-isomorphic-tools.

    • JavaScript
    • Node
    • Node internals
    • SPA
    • SSR
    • infrastructure
    • Jest
    • Lerna
    • Performance
    • Webpack
    • Babel
    • CommonJS
    • AST
    • Yarn
    • Git
  • i18next-to-fluent

    • open source
    • work in progress
    July 2019 — Present
    • Author

    Github repository

    Solution drastically simplifying the migration from i18next to Fluent. Transforms i18next's full-featured .json resources to compliant .ftl. Generally doesn't require to make any changes in the codebase that directly uses the localization. Provides React bindings.

    Estimated to save at least 40 working hours for projects with relatively small localization volume, such as Fish.Travel, and hundreds for others. The exact amount also depends on the complexity of codebase and i18next features being in use.

    • localization
    • internationalization
    • i18next
    • Fluent
    • JavaScript
    • Node
    • React
    • AJAX
    • Jest
    • Performance
    • infrastructure
    • Babel
    • AST
    • Yarn
    • Git
    • GitHub
  • awesome-production-webdev

    • open source
    • work in progress
    February 2019 — Present
    • Author

    Github repository

    A continually improving compilation of resources and tools covering different aspects of the development of production-ready web applications. I'm going to publish the articles about the problems which don't have simple and complete solutions available in the wild.

    Planned to start with educational resources and even wrote an article about CSS minification with code samples. However, later I realized it would be much more effective to develop and publish automated solutions instead of endless advising and teaching.

    Worth being said, web performance is not a topic to be easily "solved" without efforts in any company (verified at least with personal experience). It requires financing from the business anyway. In this case, some sort of automated solution will be much more helpful for the community. The solution would take these problems on its own and absolutely releasing the developer from the need to manually edit existing code and to do anything other than simple "plug and play".

    • tutorials
  • t8on

    • open source
    June 2017 — October 2017
    • Author

    Github repository

    Simple and lightweight JavaScript library for localizing web applications. Implemented partially with educational purposes to practice development, testing, documenting, and maintenance of npm package. On the other hand, the main reason is that I haven't found any library being easy to integrate and to use and not being too heavy at the same time.

    The library is currently not well-suited to be used in serious production services since its functionality is very limited. I strongly recommend considering Fluent for these projects.

    At the same time, the project has a future of growing into a comprehensive solution covering the full cycle of working with localization inside web applications on both browsers and servers. It may look like i18next with its plugins but instead, with close integration with Fluent and focus on high performance (i18next loses here).

    The performance here is mostly about loading only the phrases (data) which UI actually needs at a given point of time. However, it'll also be beneficial to adopt Svelte's philosophy here and not to include unused functionality into the bundle.

    • JavaScript
    • Node
    • localization
    • internationalization
    • Mocha
    • Travis
    • Performance
    • npm
    • Git
    • GitHub
  • Jump to Infinity

    Early 2016 — October 2017
    • Author

    The concept of browser-based real-time multiplayer strategy game with a mix of post-apocalyptic and space spirits. The game is focused on the detailed implementation of survival aspects. It provides huge realism and complexity which is especially unusual for browser games.

    The goal is to train players' strategic thinking and to keep their mind healthy rather than entertaining, dominating, and corrupting people. So Jump to Infinity should be considered more like a trainer in contrast with traditional games.

    Speaking of projects to compare, RimWorld has a similar spirit, but Jump to Infinity has larger scale closer to Wargame's battles. At the same time, it pays much attention to economics in a long-term prospect.

    Partially implemented the protocol of client-server communication using WebSockets and Protobuf. Partially implemented server configuration and modding system. A lot of effort was put into game design.

    Development is suspended being on the early stage. I plan to revisit this project later without aiming to achieve its commercial success. Instead, I'd like to consider it as a hobby and a development skills training project.

    • JavaScript
    • CSS
    • LESS
    • BEM
    • Node
    • SSR
    • SPA
    • infrastructure
    • React
    • Redux
    • AJAX
    • Scala
    • Akka
    • WebSocket
    • Protobuf
    • Git
    • gamedev
  • artkravchenko.com

    • work in progress
    August 2019 — Present
    • Author
    Replacement of previous business card-like website. Designed as a well-structured, easy-to-read book containing comprehensive employment report and information about me personally. At the start of development, LinkedIn and GitHub accounts were not sufficient to get a complete understanding of my capabilities and preferences. Moreover, searching for relevant information is definitely more time-consuming on those platforms for sure.
    • JavaScript
    • CSS
    • CSS Modules
    • SASS
    • BEM
    • SSR
    • SPA
    • infrastructure
    • React
    • Redux
    • UX/UI Design
    • writing
    • Razzle
    • Docker
    • Docker Compose
    • Git
    • Google Analytics
  • museum

    • open source
    September 2016 — December 2016
    • Author

    Github repository

    First-year university project. Mind map-like graph visualization based on React Konva, which describes people who have made a significant contribution to computer science.

    • Data visualization
    • Geometry
    • JavaScript
    • CSS
    • LESS
    • BEM
    • SPA
    • React
    • Redux
    • Immutable.js
    • Canvas
    • UI Design
    • Heroku
    • Mocha
    • Git
  • webstore

    April 2016 — May 2016
    • Full-Stack Web Developer
    Initiative to create an online cosmetics store in conjunction with my girlfriend.
    • JavaScript
    • CSS
    • LESS
    • BEM
    • SSR
    • SPA
    • React
    • Redux
    • Git
    • Travis
    • Mocha
    • Adobe Photoshop
  • Contributions to third-party open-source projects

    • open source
    • redux-first-router

      • Provided compatibility with advanced code-splitting scenarios and fixed inconsistent behavior at the same time (#359).
        • JavaScript
        • Redux
        • debugging
        • Jest
        • Git
    • react-inform

      • Reported and fixed unintuitive and inconsistent behavior of form values setter method and further validation (#12, #13).
      • Provided compatibility with [email protected] (#31).
      • Requested clarification of API a few times (#5, #8, #9).
      • Reported a use case and suggested several ways to add support of resetting form state without triggering error messages (#23).
    • In progress or planned

Tech stack & skills

Web Development

Common

  • cheerio
  • Chrome DevTools
  • JavaScript

    • AST transformation
    • Babel
    • jscodeshift
    • Flow
    • TypeScript
    • JSDoc
    • Standards

      • ES6
      • ES7
      • ES8
      • ES9
    • Web servers

      • Express
      • Koa
  • Testing

    • Mocha
    • Unexpected
    • Jest
    • Cypress
  • Infrastructure

    • Lerna
    • Yarn
    • npm
  • Version Control

    • Git
    • GitHub
    • GitLab
  • Integrations

    • Sentry
    • ipstack
    • Amazon S3
    • Travis
    • CircleCI

Front End

  • HTML
  • React
  • Styling

    • CSS
    • CSS Modules
    • SASS
    • LESS
    • PostCSS
    • BEM
    • CSS-in-JS
  • React

    • Redux
    • SSR
    • Enzyme
    • React Testing Library
    • Material UI
    • Performance
  • Infrastructure

    • Node.js
    • Webpack
    • Rollup
    • Gulp
    • Grunt
    • Babel
    • JSDOM
    • Puppeteer
  • Performance

    • Analyzers

      • Lighthouse
      • Google PageSpeed Insights
      • WebPageTest
    • Integrations

      • Cloudflare
  • Integrations

    • Google Analytics
    • Google Ads
    • Google Maps
    • PayPal
  • Internationalization and localization

    • i18next
    • Fluent
    • CLDR
    • ICU MessageFormat

Back End

  • SQL
  • PostgreSQL
  • Knex.js
  • Bookshelf.js

DevOps

  • Node.js
  • Bash
  • Docker
  • Docker Compose
  • pm2
  • Flightplan
  • nginx
  • Heroku

Workflow

  • Agile
  • remote work
  • distributed teams
  • startup

Tools

  • Trello
  • Atlassian Jira
  • Atlassian Confluence
  • Slack

Product Analytics

  • Google Analytics
  • Yandex.Metrika

About me

Principles and motivation

While I was studying at school, I began planning to make a valuable contribution to people's good future. Very soon, this intention became a life guideline.

During that time, I learned programming with C++ and Qt by myself to create a computer program making learning foreign languages easier. I wanted to integrate this software into school education.

After getting the first job on the web developer position I started helping everyone to learn programming and web development. At that time, I also dedicated a significant part of my free time to create a computer game having the goal to make people and their life better — not to distract, to dominate and to corrupt them.

Then I became so inspired by the idea of helping other people to get more opportunities for a better life, so I spent several months of my personal time on designing a set of courses for beginner web developers. This training program was supposed not to rephrase the frameworks' documentation as I've seen most of the time in Russia. Its goal was to teach the methods experienced developers use to create web applications for production, so I planned to help the students to reach Middle-level as quickly as possible. Finally, I realized I was not sufficiently experienced and not having enough money to take that project to become my next job.

Later, Fish.Travel became the project I put a lot of effort in. Starting as a client project, it turned into almost like my own one gradually. During my free time, I integrated there all useful technologies and practices I had been learning those days. This covered even more than just existing web application: I offloaded founders, helped them with product analytics and marketing, and built the tools to optimize business processes — I made all this stuff entirely for free. I was highly concerned about accelerating the achievement of this startup's business goals.

Almost a year since I began cooperation with Fish.Travel in autumn 2018, I published the first note on my personal blog (in Russian; more like a diary). Since then, I write every single day: describe my goals and tell why they're important for me, what I do to achieve them; analyze successes and failures, and answer the subscribers' questions. The blog is more psychology focused, but I write a lot about my daily work too. This way I try to inspire people around me to turn their life for the better.

A long time before I started the public blog initiative, the idea of endless self-improvement had taken hold on me. I realized I need to learn and work hard every day in order to make a valuable contribution to the world's development throughout my life. After I had been hired for the first time, I stopped playing computer games almost completely and then — at all. I'm also a strong teetotaler.

Currently, I learn the topics which stay side by side to web development, such as application deployment and delivery. I'm also interested in business-oriented topics like product analytics and product management, and due to close cooperation with companies similar to yours, I'm going to keep getting practical knowledge on how the business operates and how to build a successful product.

Recently I've begun to pay more attention to open source via publication of all collected knowledge. However, I won't just publish educational resources. I'd like to solve the problems entirely. For example, I'll rather work hard to develop an automated solution which will speed up someone's web application instead of writing another 10 articles about web performance.

Weaknesses

High responsibility, proactiveness, and attention to detail. I care a lot about the projects I'm working on. It's a significant advantage, and that's why I grow quickly as a specialist and have all these accomplishments and valuable contributions.

Being an obvious consequence of my principles, however, it affects work–life harmony — I pay way less attention to health, rest and family. There's room for improvement here now.

Free-time activities

Aside from working, I experiment with new development technologies and tools, watch talks at conferences. If I'm too tired, I watch entertainment videos or read articles about science or history. Getting rid of entertainment media these days since they're useless and distracting. Besides, since I use a laptop most of the day even without entertainment, this kind of rest increases harm to the eyes as well.

Becoming more and more engaged in physical activity now. Walking, running, gym, swimming pool. Prefer athletics over any other way to rest. If I don't have a sufficient amount of physical activity, I notice how health is getting worse and then work productivity decreases.

Work preferences

I'm open to offers from companies where I'm expected to do what I described at the top of the website helping colleagues or customers to get rid of the pain. I can design your software, optimize the workspace of your developers, increase reliability and performance of your existing web application, or solve your unique problem. I'm experienced with regular front end development with HTML and CSS, but prefer working on infrastructure.

I'll accept any employment option fitting your needs: full-time, part-time, contracting or custom. However, full-time or part-time are the most suitable options for me personally right now.

Prefer working remotely, since I already have more than 3 years of experience of working remotely with a time zone difference of 4–7 hours with the rest of the team. Being out of office, nothing prevents me from making valuable contributions. I'd rather say the opposite: I'm more productive working from home, the place where is no noise around me.

I’m ready to start working remotely full-time, being located either in UTC+7 or UTC+3, both in Russia. Currently, I’m in UTC+7, but I can easily switch the time zone within a month if needed.

Speaking of business hours overlap, I’m generally online to cooperate with the team closely from 1 AM (if you're in UTC, right from the beginning of your working day) up to 4-5 PM UTC.

My work schedule is highly flexible, so I can easily fine-tune it to stay productive and to be online even in the early morning or at midnight. This is especially applicable if you don’t work up to midnight and even further as a bunch of newborn startups does. I’ve used to adjust my schedule for teams like this.

I'm generally open for relocation outside Russia if it's worthwhile in your situation.

Speaking of working remotely, I'm ready to start solving your problems right tomorrow.

Contacts