Dmitriy Kosolobov

Software Engineering Manager,

IT-expert, IT-Advisor, Mentor

Male, 34 years, born on 4 January 1988

phone: +7 (911) 915-37-00 

e-mail: dima@kosolobov.io

skype: salt_of_the_flame

Employment: project work, full-time, contractor, 

Work schedule: remote work

Live in: Saint-Petersburg, Russia

Citizenship: Belarus

Can work in Russia, Belarus

Education: specialist degree, Belarussian State University Of Informatics and Radioelectronics, graduated in 2010

Speciality: IT Software, software engineer + psychology, team management

Additional education: gestalt-psychotherapist, stage 2 (in progress, paused due to COVID-19 and political situation in Belarus)

Work principles

About me

As an expert Java/Kotlin software engineering manager, I have extensive knowledge of the development cycle and about 12 years of practical experience in software development and team leading.

During my work, I have gained hands-on experience in project leading, team leading, DevOps work, UI development in various business fields, and working with not accurate specifications.

I know a large variety of frameworks and additional languages. I am familiar with the full project design&development cycle and often I can recommend several ways of solving the issues you can encounter.

Additionally, as a hobby: study at the 2nd stage of Moscow Gestalt Institute, visiting the gym minimum of 7 hours per week

Keen on traveling, people communication, and self-improvement

Further information

Main Language: Java, Kotlin, and other jdk-based languages

· OSGi, · OpenServiceBrokerApi (through spring cloud), · Spring, Hibernate, JPA, Apache Camel, Spring Boot, Spring Roo, Spring Security (incl. OAuth 2.0), Spring Cloud, Spring Cloud Data Flow · Maven, · Apache CXF, CXF-dosgi, · SSL, · ECF, · JFace, · Yoxos, · ActiveMQ, · Redis, · RabbitMQ, · Equinox, · Celery, · Felix, · jBPM, · Karaf, · Servicemix, · Fuse ESB, · J2EE: EJB, JBoss, · JSP+JSF+JSTL, · MVEL, Eclipse RCP/RAP, · EMF, · GWT/GXT, · SWT, · Sencha(extjs), · Django/Python, ·Flutter/Dart, · Javascript, · JQuery, · OpenCV

Work Experience: ~12 years

Yota/Megafon

December 2022 — now

Remote

Software Engineering Manager, Backend team

Team size: 5-9 people

Telecom

"Antifreeze" project

Technologies: Java, kotlin, groovy, lua, mustache templating, spring boot, spring cloud, spring security, spring data, tarantool, Postgres, rabbitmq, kubernetes, istio, helm, openapi, mermaid/plantuml diagrams

More details are strictly closed by NDA

Amex Development

February 2022 — July 2022 (supported till Dec 2022)

Remote

Lead Software Engineer

Team size: 5 people + managers

Fintech

(next section will be translated to english shortly)

• Провёл аудит требований от заказчика на предвет неточностей, которые могут впоследствии сильно повлиять на разработку приложения, выявил необходимую и достаточную степень гибкости системы

• Проанализировал требования от заказчика и заложил основу системы из нескольких сервисов с учётом текущего состояния и последующего развития технологического стека банка,

• Просчитал и описал пути развития системы,

• Участвовал в разработке документа итого видения системы в качестве технического эксперта

• Разработал весь необходимый инструментарий для последующего развития системы, чтобы любое внесений изменений было максимально и простым, и быстрым, и чтобы минимизировать шанс пересечения между несколькими разработчиками (понизить шанс конфликтов по файлам)

• Разработал дизайн архитектуры бэкэнд системы из нескольких сервисов на основе MVC, Clear Architecture, Micorservice Architerture

• Разработал схему БД на основе требований системы

• Разработал механизм взаимодействия с внешними системами

• Разработал инструментарий, позволяющий брать лучшее из code-first и contract-first подходов в разработке для ускорения работы команды аналитиков

• Обучил аналитиков работе с OpenAPI и jhipster спецификациями, для работы с документацией и использования этих спецификай как универсального языка общения между командами

• Описал дальнейшее технологическое развитие системы соразмерно последующему развитию (с учётом проведённого мной анализа текущего состояния и тенденций развития технологического стека)

• Участие в обсуждении требований к другим командам банка и формировании видения технологических решений, необходимых для работы новой системы


Разработка на kotlin, java, spring webflux, reactive, mongodb, kafka(без настройки), redis, mapstruct, spring conversions framework, spring data, spring cloud, OpenCV, openfeign, junit5, gradle, openapi, jhipster


Кодогенерация:

jhipster (для ускоренного старта проекта и последующей генерации документации по проекту в формате adoc и plantuml),

openapi generators (для генерации исходных кодов, поддержания консистентности контрактов взаимодействия, генерации документации),

redocly


More details are strictly closed by NDA

GetIntent, Digital Ads, Programmatic project

April 2021 — December 2021

Technical manager of server-side development and QA department (Backend Team Lead with additional tasks)

Team Size: 8-12 people 

• Develop some of the tasks on my own

• Estimated and assigned tasks to specific individuals

• Got rid of bus factor: Managed the process in the way that it's not actually needed to assign tasks to specific teammates: they know project in the way, that anyone can take other's tasks

• Organized communication and workflow between teams in the company 

• Analyzed the business requirements; created and distributed tasks in the team

• Managed the server side development team

• Help teammates to solve hard moments, they come across to improve team sprint achivements

• Review, develop, improve the idea, design, implementation of the microservice architecture framework

• Developed the idea, design, implementation of automatic mechanism of continuous integration and delivery

• Developed whole idea, design of release-management, git-branching and deployment scheme

• Developed the idea, design, implementation of automated workflow,  using the jira, gitlab, githooks, webhooks etc.   

• Developed the release management and deployment workflow based on standardized approaches (full git flow)

• Reviewed java code, project architecture

• Adopted necessary Agile instruments in the team management

• worked on decreasing bus factor in team

• Introduced and managed to use pair programming for mentoring and develop complex places in project

• Interviewing the Java developer candidates 

Technologies and frameworks: JAVA; spring boot, spring cloud, spring integration, spring security, spring mvc, spring data, jwt; RabbitMQ; clickhouse; cassandra; airflow; HDFS; kafka(без настройки); Mongodb; PostgreSQL; MySQL; OpenAPI; Liquibase; JPA, hibernate; junit, gradle; PHP; Python; jenkins; gitlab/gitlabci; minio

MTC IT, Identity Project

November 2020 — March 2021

Saint-Petersburg, remote, https://mts.ru, https://profile.mts.ru

Technical manager of server-side development department (Backend Chapter Leader)

Overall Team Size: ~50 people

Dev Teams Size: 12-15 people (5 teams)


• Organized communication and workflow between teams and individuals

• Analyzed the business requirements; created and distributed tasks in the team

• Managed the server side development team

• Help teammates to solve hard moments, they come across to improve team sprint achivements

• Selected the scope of releases and deployed them on the QA, clients' and release environments

• Established and formalized release-management workflow, review workflow, designed the instructions  

• Developed the release management and deployment workflow based on standardized approaches (full git flow)

• Reviewed and enhanced the system design

• Worked out, described, implemented and supported the working process scheme for development, deployment, release management based on the specific needs of the business department

• Introduced and managed to use pair programming for mentoring and develop complex places in project

• Reviewed java code, project architecture

• Interviewing the Java developer and Team Leads candidates 

Technologies and frameworks: java 8, guice, Forgrock OpenaAM, OpenDJ, JAX-RS, restlet, spring boot, spring mvc, jwt, oauth2, openid connect; Kafka(без настройки); Cassandra,  Ignite; junit, maven

LAVAL medical systems 

December 2019 — May 2020

Saint-Petersburg, remote, http://lvlmed.ru/

Technical manager of server-side development department

Projects: <Medical Information System>,<Hybrid Medical Information System>, <Laboratory Information And Integration System>

Team Size: 7-10 people


• Organized communication and workflow between teams in the company 

• Analyzed the business requirements; created and distributed tasks in the team

• Managed the server side development team

• Help teammates to solve hard moments, they come across to improve team sprint achivements

• Developed the idea, design and prototype, delivered  the microservice architecture

• Selected the scope of releases and deployed them on the QA, clients' and release environments

• Developed the idea, design, implementation of automatic mechanism of continuous integration and delivery

• Developed whole idea, design of release-management, git-branching and deployment scheme

• Developed the idea, design, implementation of automated workflow,  using the jira, gitlab, githooks, webhooks, groovy scripts etc.   

• Developed the release management and deployment workflow based on standardized approaches (full git flow)

• Developed the prototype of generated GUI (using jhipster)   

• Reviewed and enhanced the system design

• Worked out, described, implemented and supported the working process scheme for development, testing, deployment, release management based on the specific needs of the business department

• Introduced and managed to use pair programming for mentoring and develop complex places in project

• Reviewed java code, project architecture

• Adopted necessary Agile instruments in the team management

Technologies and frameworks: spring boot, spring cloud, spring security, spring mvc, spring data, zuul, jwt, oauth2; jhipster; RabbitMQ; Multitenancy; Kibana, elk; Mongodb; PostgreSQL; Oracle SQL; swagger; Liquibase; JPA, hibernate; junit, maven

Korus Consulting CIS

January 2019 — May 2019

Saint-Petersburg, https://www.esphere.ru 

Software Engineering Manager, Java

Project: Develop service, that connects several internal projects, having large amount and variety of data, to make this data available during automatic building of documents, and build large amount documents' templates, based on that data scheme

Team size: 7-15 people

Role: Team leading, Software development, task management, roadmap management, architecture, planning, looking through resumes, interviewing candidates for different roles, learning code of all sibling projects, mentoring

Details strictly closed by NDA

Ellomynt LLC

September 2017 — October 2018

Software Engineering Manager/Director of technical department

Project: Cryptocurrency exchange

Team size: 10-12 people


• Developed system design based on the client’s feedback, managed development thereof 

• Analyzed business requirements; created and distributed tasks in the team

• Communicated with the client and higher management

• Worked out, described, implemented and supported the working process scheme for development, testing and deployment based on the client’s feedback

• Reviewed the java code, project architecture, project ux-prototypes based on the client’s feedback 

Technologies and frameworks: spring boot, spring cloud, spring security, spring mvc, spring data, spring caching; RabbitMQ; Redis; UML State Diagram; Activiti BPMN; TOTP; spring; intellitruth KYC; Kibana, elk; PostgreSQL; Flyway; swagger; Liquibase; JPA, hibernate; Hibernate 2nd level cache; junit; gradle

• Managed and took part in developing the idea, design, testing, implementing, supporting of the all system based on the client’s feedback, namely:

- crypto currency trading module (stock exchange module),

- module for representing business processes in the nature of UML statemachine and BPMN,

- mechanism for accelerating development of DB scheme including migration mechanism,

- mechanism of user authorization with a possible second step ,

- mechanism for distribution of roles and rights of users within the system and API connected with them,

- flexible planner of commission fees ,

- module of maintenance and archiving of financial transactions with partial manual transactions processing by the system’s financial agents,

- user API

- administration API 

- module of integration with KYC-platforms 

- integration service bus for crypto-currency operations

- tradingview API

- modules for monitoring, logging and audit

Marathonbet

December 2015 — September 2017

Saint-Petersburg, www.marathonbet.com

Lead Software Engineer (Java)

Developed the idea, design, implemented, tested and published, support on 4 platforms of next services(Java):


1. OAuth2-protocol-based authorization system and easy to understand and safe external REST API on the baseis of existing hessian services containing insecure data.

System supports 2fa, where second step is based on standard TOTP/HOTP ( works with Google Authenticator ) and includes allowed authentication devices control center. During my development I learned and used about 20 IETF standards

2. Universal bot user authorization service using OAuth2 in existing microservices infrastructure, to make authorization with minimal cost. Service was made for telegram bot and viber bot

3. Gateway with dynamic detection of services with a possibility of data enrichment and application of security rules 


Researched and pointed on security vulnerabilities:

1. Bot user authorization strategy

2. Web-site and partners interaction strategies, threatening user account hacking, and presented ways to eliminate them to our business partner oddschecker


Developed an exhaustive set of libraries realizing frequently used functionalities which allowed to make the learning curve for developers and partners lower. This helped the company to save a considerable amount of costs as a result of making introduction of new services much easier.


within the projects:


1. Implemented full support of structural and functional modularity and independence. 

2. Did a research of the latest trends in web-resource protection standards, applied the knowledge in implementation of OAuth server and web-services in the PanExtApi project.

3. Implemented a lock-free algorithm when operating with partner sessions 

4. Provided comprehensive advice which led to immediate integration of several partners into our system 

5. Adapted the API concept to make it easier to understand and more secure 

6. All the implemented services support hot configuration without need to restart these services, the configuration being flexible enough to immediately switch the services from one regional platform to another. 

7. Researched and implemented prototypes of standardized algorithms of user authentification, such as TOTP, HOTP, OCRA, U2F


Altogether I supported approx. 30 instances.


Technologies I used: Spring boot, spring cloud, redis, zuul, tomcat, hessian, wadl+jsons, Content-Security-Policy, OAuth 2.0, Etcd(+netty), Consul, Zookeeper, OAuth, Java 8, swagger, OATH (TOTP, HOTP)


Developed some functionality and modules, based only on IETF RFC (used plain Java/Spring)


Additionally implemented a cross-platform desktop tool with GUI on python and using qtpy, pyqt5libraries to manage and monitor the status with the help of jmx for the expanding list of services.

VCL

November 2014 — December 2015

Saint-Petersburg, remote, https://valuechainlab.com/

Senior Java Developer

Technologies: extended MySQL and MsSQL, Java, Spring Boot, Spring Roo, JBehave, DbUnit (with sources investigation), Json Parsers (with sources investigation), Multithreaded, hsql, h2, derby, JPA, Hibernate, EclipseLink

Projects:

1) Logistic ecology and economy calculator (developed all backend on my own)

2) Massive REST API testing tool (developed idea and implemented everything on my own) - cli tool used to run Behavior Tests. Language of Behavior tests is developed on my own, too. Tool is intended to be used by non-professional user. Language gives ability to send thousands and millions of REST requests by defining one single json object with use of scripts inside it. Besides, you can check database state, define rules to check requests and responses using already existing and well known expression languages, such as mvel, spring el, etc. (easy to extend list of scripts).

3) Participated in developing logistics analytic software (own OLAP system) 

Bercut

February 2014 — November 2014 

Saint Petersburg, www.bercut.com

Principal Software Engineer, Java

1) Developed the idea, design, implemented , tested and published the advanced high-load universal system for keeping historical data of profiles of subscribers of various services of different kinds, described by user in xsd scheme form.

2) Developed mechanisms of representation of relation model, calls and complex queries in xsd form using the additional attributes.

3) Developed subsystem, which allows easily create and edit xsd schemes keeping the version compliance (direct and reverse).

4) Developed real-time system DB design. Main workload - millions of user profiles, most frequent requests - read, edit, create user profile.

5) Increased performance of working with xml according to xsd in 10-20 in my system comparing to existing similar frameworks.

6) Participated in Open source project "xsom" (Oracle/Sun company).

7) Made custom modifications and extended the Contiperf library.

8) Developed some projects based on my own User Profile Storage DB System.


Technologies and frameworks: spring framework, spring mvc; rdbms oracle_procedures-to-java bridge codegen; vtd-xml, xsom, woodstox, nanoxml, JAXB/MOXy, Xerces, etc.; google guava, lots of projects from apache commmons family; Contiperf;JOOQ projects family and some similar; Oracle SQL

– Used TDD and maven actively

NEC Neva CS

September 2012 — July 2013

Minsk, remote, ru.nec.com

Lead Software Engineer (Java + OSGi, some Powershell)

Some of used technologies and frameworks:

· OSGi, · Apache Camel, · Maven, · Apache CXF, CXF-dosgi, · SSL, · ECF, · Powershell, · Yoxos, · ActiveMQ, · Equinox, · Felix, · Karaf, · Servicemix, · Fuse , ESB, · J2EE: EJB, JBoss, · JSP, JSF, · Eclipse RCP/RAP, · Apache Cellar, · Gyrex


Developed distributed multiplatform Cloud platform with clusterization and management interfaces of Active Directory, Exchange, Lync, SharePoint, Hyper-V;

Developed architecture in agree with base technologies and target user's usecases;

Checked and analysed quality of code from outsources;

Research and development, document writing about best aproaches, I found during my researches;

Developed code and architecture conventions;

Analysed and elaborated specification documents, comming from managment team;

Consulted about code and architecture conventions with all used technologies.

IS Soft Solutions

December 2011 — September 2012

Minsk, partly remote, www.issoft.by

Lead Software Engineer

Projects:

MS SQL Backup

· Investigated backup technologies, developed prototypes (MSSQL backup(different versions), VSS in MSSQL, SMO in MSSQL)

· Developed prototypes for key functionalities

· Developed common architecture

Environment:

MS Windows 7, Server 2008, Server 2008 R2.

Languages: C#, Powershell

DBMS: MS-SQL

Technologies: VSS, SMO.


MS Sharepoint Backup

· Investigated various backup technologies, developed prototypes (MS Sharepoint backup (different versions), VSS in Sharepoint)

· Developed prototypes for key functionalities

· Developed common architecture

Environment:

OS: MS Windows 7, Server 2008, Server 2008 R2.

Languages: C#, Powershell

DBMS: MS-SQL

Technologies: SharePoint, VSS, SMO.


vSphere backup applience

Worked on:

· Communicated with customer

· Developed architecture and work-flow

· Task management (created, estimated, assigned tasks) 

· Samba (cifs) server usage on Linux investigations

· Investigated mounting of all popular file systems and volume systems on Fedora 9 (with GPT and MBR): LVM (Linux), LDM (win7 version and winXP version), ReFS, ext2/3/4, reiserfs3/4, XFS, JFS, NTFS, FAT, HFS, HFS+, UFS, UFS2, ZFS, ZPOL, ZPIOS, Lustre, SPL

· Investigated and developed the most convenient file share methods (web, ftp, samba, nfs, etc.)

· Developed web UI for file system browsing (based on , Ajax, javascript)

· Developed common system architecture of custom fedora-based OS

· Investigated various middleware

· Developed low and high level logic

· Fixed bugs of highest rank and complexity

· Developed custom auto-build tool, configurated and maintained it

· Introducted some new technologies to higher authority and customer

· Invented, developed, configured, Jenkins build environment setup and configuration

· Developed andconfigured common/dev environment with auto-setup functionality

· Developed and administrated vSphere infrustructure

Environment:

MS Windows 7, Server 2008, Server 2008 R2, Server 2003, XP, CentOS5/6, Fedora 9, pancatera backup agent OS, vSphere infrustructure software.

Languages: Bash, python, ruby, XShell, C++


Netbackup EMC snapshot plugin

Worked on:

· Developed and configures Jenkins build environment (doxygen, unittests etc. is included)

· Designed, developed and configured cross-platform build mechanisms

· Deployed and configured EMC hardware emulators

Environment:

OS: MS Windows 7, Server 2008, Server 2008 R2, Solaris10/11 (sparc64, x86_64), CentOS 5/6, Red Hat 6, EMC, ESX.

Languages: bash, XShell

Tools and frameworks: cxxtest, jenkins, cmake, GNU Make, NMake

Allied Testing

September 2010 — December 2011

Java-OSGi Mentor

Junior Java Developer -> Middle Java Developer (OSGi, RCP)

· Participated in coding standards development

· Mentored colleagues in understanding of Java/OSGi principles for C++ oriented team

· Developed guidance for Java/OSGi with samples for C++ oriented team

· Investigated new technologies and frameworks (OSGi, Eclipse RCP, EMF, JFace, etc.)

· C#, C++ to Java code conversion

· Developed certain parts of GUI

· Improved architecture

· Created and maintained various new tools, modules, functionalities

· Updated existing functionality in legacy code, evolved it to new standards

· Full-fixing the projects’ components and tools

· Developed git/svn/jira tools for workflow