Languages
Summary
Overview
Skills
Work History
Education
Timeline
Hobbies
Ivan Novikov

Ivan Novikov

Warsaw

Languages

Belarusian, Russian
Native language
English
Upper intermediate
B2
Polish
Beginner
A1
Italian
Beginner
A1

Summary

Hi! I am a responsible backend software engineer. A fun of clean code, layered architectures and DDD.

When I'm working on projects I'm trying to be a boy scout and as professional and modern as I can be. I know that my work will be read by other engineers and will be used by a simple user. The reaction of both is important to me and motivates making things better.


Languages: PHP, Kotlin, Go, SQL, UML

Keywords: OOP/OOD, DDD, SOLID, GRASP, Design Patterns, Layered Architectures, TDD, CI, Microservices

Frameworks: Symfony ❤️, Ktor

ORM: Doctrine, Hibernate, Exposed, jOOQ

OS: Linux, OS X, Windows

Databases: PostgreSQL, MySql, MsSQL, Redis

Tools: Docker, Git, PhpStorm, DataGrip, Intellij IDEA, Ansible, Kubernetes

Other: Nginx, RabbitMQ, Codeception, Behat

Overview

8
8
years of professional experience

Skills

  • Web Development
  • Client/Server Applications
  • Clean Code
  • Layered Architectures
  • Design Principles (SOLID, DDD, etc)
  • Infrastructure Development
  • Payments Integration
  • Best Practices and Standards
  • Legacy refactoring
  • Tests writing (I think it's important)

Work History

Lead Software Engineer

Turbomates Soft
11.2021 - Current
  • Led development of SOA based applications and microservices on all layers
  • Establishment of architectural conventions, infrastructure and practices
  • Designed and released DataSync HHTP API based on Offline Data Sync Pattern (little analog to Dropbox with unique features)
  • DSL and infrastructure (e.g. Mother and Builder Pattern) making all kind of tests readable, convenient and concise
  • Organized flexible and powerful static code analysis. Including builds failing on violations and architectural conventions checking.
  • Managed project and personal schedule by consistently meeting deadlines.
  • Used technologies: Kotlin, PHP, Symfony, Ktor, Exposed, Hibernate, Postgresql, RabbitMQ, Redis, Docker, Kubernetes
  • Methodologies: Scrum
  • Tools: Gitlab, Github, Github actions

Senior Software Engineer

Docler Holding Luxembourg
08.2020 - 11.2021
  • Establishment of architectural conventions and practices
  • Maintainer of Referral and Accounting Microservices
  • Updated old code bases to modern development standards, improving functionality.
  • Moved legacy projects (30+) from skeleton with fragile (to put it mildly) custom-made PHP frameworks and infrastructure by creating a skeleton with Symfony 5 MicroKernel application + components. Performance off all services was increased twice.
  • Assumed feature responsible role
  • Investigations, feature development, legacy code refactoring
  • Used technologies: PHP, Symfony 5, Custom Frameworks, MsSQL, MySql, RabbitMQ, Redis, Docker.
  • Methodologies: Scrum, Kanban
  • Tools: Full Atlassian stack (confluence, jira, bamboo) and hundreds of others

Senior Software Engineer

BTS (Bet Trading System)
03.2016 - 08.2020
  • Developed service-oriented apps using HTTP and AMQP as communication protocols and REST API.
  • Mentored junior developers
  • Designed and developed an independent Achievement system. Flexible and accurate It aggregates all knowledge about progress, points, etc based on events from other contexts. Achievement context describes its own base achievements and core logic, another context just describes its achievement conditions in small data classes.
  • Designed and developed a secure, flexible and solid Payment system that covers transaction processes with Events and Sagas. There are over 40 integrated payment gateways like Wirecard, MasterCard, Skrill, Payvision, Pay Direct, MoneyMatrix, BlockTrail etc. The Payment internal API layer follows the open-closed principle. A Large number of segregated interfaces and core allow the integration of a new payment in short time, no matter what the payment process looks like (either one or two-step deposit, etc).
  • Developed Notifications module: easy extensible for new receiver types: email (default), skype, telegram etc. There are templates with placeholders for messages in different locales that will be replaced before sending them to the recipient.
  • Other domains like Accounting, Identity, Player, Betting, etc
  • Integrated third-party tools and components into applications.
  • Used technologies: PHP, Go, Symfony 4-5, Doctrine, PostgreSQL, RabbitMQ, Redis, Docker

Software Engineer

Everymove
10.2014 - 03.2016
  • Member of the team responsible for web application development, first web app experience
  • Developed user interface and form validation.
  • Developed back-end.
  • Used MVC as an approach to software development

Used technologies: PHP, Symfony1-2, MySql, Apache, Nginx, JavaScript, Html, CSS, JQuery, AJAX


Education

Bachelor of Science - Computer Software Engineering

University of Informatics And Radioelectronics, Minsk, Belarus
08.2015

Timeline

Lead Software Engineer - Turbomates Soft
11.2021 - Current
Senior Software Engineer - Docler Holding Luxembourg
08.2020 - 11.2021
Senior Software Engineer - BTS (Bet Trading System)
03.2016 - 08.2020
Software Engineer - Everymove
10.2014 - 03.2016
University of Informatics And Radioelectronics - Bachelor of Science, Computer Software Engineering

Hobbies

Gaming (RPG), Cinema, Dancing Tango, Music

Ivan Novikov