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
at least 1 (2,3,.. (depends on available outcome)) project-valuable achievement per day
the boss should be informed of work as much as he wants, and this informative level should be well monitored
follow the highest standards in coding; the project determines coding standards
keen on modern trends in development and IT, keep my knowledge up to date
language, frameworks, workflows, technologies, etc. are just tools and should be used as they are intended and only where applicable
understand the direction of thought of business dept. and make “framework”, project composition, and/or object model flexible enough for any of their wish
DRY SOLID KISSes!!! (Don't repeat yourself, Single responsibility/Open-closed/Liskov substitution/Interface segregation/Dependency inversion, Keep it simple and smart)
in my team, everything is based on the people I work with (their personal interests, personal characters, and personal features)
I can use another programming language/library/framework/programming principle if it solves the problem better
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
Good communication skills
Keen on improvement
Investigate new technologies, tools, and frameworks
Good in architecture development
Good in tasks, that need many investigations
develop with incomplete specification and not a well-known field
develop architectures and modules for complex and simple systems and tools
help other developers to deal with issues, they meet during development (concerning work with tools, workflow, technologies etc.)
work automation: like to optimize work even by writing small scripts and mini-tools (if that will help a lot and will not cost lots of time)
Advanced Linux/Windows/VMWare administration skills
Test-Driven-Development
Behaviour-Driven-Development
Main Language: Java, Kotlin, and other jdk-based languages
DBs: Redis, MSSQL, MySQL, PostgresSQL, Derby, SQLite, Oracle, MongoDB
Cloud engines: Docker(+compose), Docker Swarm, Kubernetes
Virtualization systems: vSphere, VirtualBox, Qemu, KVM, VMWare Workstation, VMWare Player
Additional languages: Kotlin, python, bash, dos command line, Powershell, C# (a little), javascript(a little), typescript(a little)
Environments (different architectures): various Linux systems, Windows (various Server and client versions), Solaris
IDE: Idea, Eclipse (original, sts, yoxos versions)
Technologies and frameworks:
· 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
Version control systems: TFS, git, svn, Perforce
Bug tracking systems: Jira, Gitlab, Redmine
Continuous Integration systems: Jenkins, Gitlab CI
Repository Managers: Artifactory, Nexus
Review systems: Reviewboard, Gitlab, Crucible, SmartGit
Work Experience: ~12 years
Yota/Megafon
December 2022 — now
Remote
Software Engineering Manager, Backend team
Team size: 5-9 people
Telecom
"Antifreeze" project
Technologies: spring boot, spring cloud, spring security, spring data, Java, kotlin, lua, tarantool, Postgresql, 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
Saint-Petersburg, remote, https://qvant.ru, https://getintent.com, https://mt-tech.sberb2b.ru
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
USA, remote, www.ellox.com / www.ellomynt.io / www.ellomynt.com
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
Minsk, www.alliedtesting.com
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