Volf Alexander


36 years

Russia, Krasnodar
not willing to relocate,
prepared for occasional business trips

Career objective: developer.

IT

Working hours: 40 hours per week

Schedule: full day (Moscow timezone), remote work

Debugging and finding source of problem.

Writing detailed technical specifications.

Managing tasks, communication with the customer of task.

Jun 2019 — by present time

Sportmaster Lab

Senior developer

Kotlin, Spring boot, maven.

COMPATH (march 2021)

Developing communication platform.
Current tasks: study project, setup monitoring.
Technologies: Kotlin, Java, Spring boot 1.5-2.3, Maven, Oracle, (new for me:) RabbitMQ, Apache Camel.

Before changing team I'm study course on Cousera "Kotlin for Java Developers", read main part "Kotlin in action" book (before chapter 11), read official documentation about corutines.

Июнь 2019 — по март 2021

Sportmaster Lab

Senior developer

Spring boot, maven.

Vendor portal (june 2019 - march 2021)
Develop new features on the portal of the second version, supporting on the portal of the first version.

Technologies in backend: Java 8, Spring boot 1.5, Hazelcast, Maven, Apache cxf, Hibernate validation, Jackson, Jasper reports, JUnit 5, AOP (AspectJ), logback, Swagger, Apache freemarker, Weblogic 12.
Technologies: Oracle, Angular 5.
Achivments (in addition to the successful implementation of business features):
1. Include tests in pipeline CI/CD and make code coverage about 30%.
2. Build inhouse monitoring api/services on some nodes, and also control log level in slf4j (using hazelcast).
3. Solve issues with oracle jdbc driver (problems with caching internal objects, driving to deadlock in weblogic pool).
4. Successfuly becoming a mature kanban team.
5. Perform a technical review with curator from core-team in february 2020, результатом которого было существенное снижение технического долга и внедрение таких практик как мониторинг кода в sonarqube, подготовка к переходу с hg на git и целевая картина на применение pull request.
6. Transfer projects from hg to git with saving commit history.
7. Introduction practices of code review and wrote rules for it, described rules working with technical debt, формирование правил применения практик мониторинга сервисов, описание code style в проекте, правил ведения репозитория.
8. Перенос публикации артефактов с ручного способа на автоматический в bamboo нескольких проектов.
9. Участие в улучшении процессов в команде (сформировали правила проведения релизов, тем самым сократив работу со стандартных 1,5 часов до 30-40 минут в штатной ситуации).
10. Помогал разработчикам E2E тестов сформировать api для прямого взаимодействия с процедурами БД (POST with JSON -> REST API -> DAO -> response in JSON) с помощью генератора кода.
11. Дорабатывал генератор кода DAO слоя - проводил рефакторинг, небольшие оптимизации и подключение мониторинга.
12. В самом начале актуализировал все библиотеки до максимально возможных с учетом совместимости с weblogic 12 и вычистке потенциальных мест с NPE.
13. Переработал и унифицировал обработку ошибок REST API (каждая ошибка 500 и часть из 4ХХ падала на поддержку письмом), включил в 500 ошибки файлы, которые прикладывают пользователи.
14. Оптимизировал объем классов загружаемых проектом в jvm, чтобы можно было делать несколько деплоев на weblogic без перезагрузки managed ноды (например, убрал groovy используемый лишь для конфигурации logback, убрал зависимость на spring data из которой использовался только класс Pair).


In same time I'm study some courses from Cleverics:
1. "DevOps: современный подход к организации работы в ИТ"
2. "Проект Феникс - DevOps на практике"
3. "Канбан-метод: практика построения быстрого потока"
4. "Метрики продуктовых команд"
А также:
1. Прошел внутреннее обучение по maven.
2. Небольшой внутренний курс по профилированию java приложений с использованием mission control по индивидуальному плану развития.
3. Продуктовая команда работала с методологом по внедрению канбан.


Interesting:
1. Наступили на ошибку в стандартной реализации JDK 8 HashMap.computeIfAbsent при которой происходило формирование неконсистентной карты (https://github.com/FireWolf2007/JavaTest).


Developing application Vendor portal (https://portalvendor.com/vendor/).
Technoligies: UI Angular/Backend Java (Spring Boot 1.5)/Oracle (business logic in stored procedures).
Produc team for project consists: 3 Oracle developers, 2 java developers, 1 frontend developer, 2 QA engeneers, 4 system analytics, PL, 4 localization members.

Develop process based on kanban.
All team study DevOps and kanban courses.
About year we have methotologist (kanban and DevOps), now command on her own and constanly works on improving service (сервиса поставки ценности).

For tasks with tachnical debt alloed 10% work time.
For work management we use jira, for documentation - confluence.

Java стек: java 8, Spring boot 1.5, apache cxf (генератор интерфейса клиента, клиентская часть, так и публикация веб-сервиса), dozer mapper (legacy), Hibernate validation, jackson, jasper reports, JUnit 5, AOP (AspectJ), logback, Hazelcast, swagger, freemarker.
Всё крутится под Weblogic, но от него используется только connection pool опубликованный через jndi.
В проде запущено 2 ноды.

На проектах UI/REST настроен CI/CD на тестовое окружение, на прод раскатывается по кнопке из bamboo.
На проекте используется git/bitbucket, система ветвления похожа на git-flow, применяется обязательное code review (я выполняю code review как java, так и angular).

SonarQube отслеживает покрытие кода тестами и качество кода, jacoco собирает информацию в момент выполнения тестов и отправляет её в SonarQube.
Текущее покрытие тестами 23%, целевое 80%, по факту 10% было покрыто за счет реализации новых бизнес задач за последние пол года.

Применяется ELK для сбора логов, передаем их через logback.

Hazelcast применяется для хранения сессий на 2-х нодах, а также для формирования распределенного кэша очереди (с таймаутом) обрабатываемых данных.

Swagger для генерации текущего REST API. Относительно недавно начали применять документирование REST через аннотации Swagger (с момента интеграции P2P через REST с смежной системой).

Freemarker применяется для генерации этикеток промышленным принтером этикеток Zebra.

Для генерации слоя DAO используется самописный maven-plugin, который на с использованием шаблонов freemaker генерирует DAO слой из xml (а также формирует этот же xml).
Общение с БД происходит через jdbc driver с использование SimpleJdbcCall.
Для генерации xml в БД написана специальная процедура, которая по имени процедуры выдает её мета-описание из которого формируется дескриптор в xml.

Есть легаси без тестов: старый портал, с которого происхдит реинжениринг портала поставщика.
Технологии: java 8, GWT, hibernate, liquibase, freemarker, jasper reports, maven, mercurial, weblogic, в проде 2 ноды.

Для разработки используется IDE IDEA Ultimate.

Достижения:
1. В начале 2020г проведен технический заход вместе с core-team: подключен анализатор SonarQube, выполнен рефакторинг кодовой базы (на 50% уменьшилось количество "нехорошего" кода по данным SonarQube), "оживил" не используемые тесты, разграничил их на ручные и автоматические, сформировал пул задач в техдолг на дальнейшее улучшение кодовой базы (50% из них уже закрыты).
2. Проект переведен с mercurial на git (с сохранением всей истории коммитов), а модель ветвления на вариант git-flow (раньше master -> n*feature branch -> release -> master). Сформирован план по переходу на git для репозитория БД, а также план по переходу на моно-репозиторий для всего проекта (сейчас 5 основных сильно связанных репозиториев).
3. Помог тестировщикам по созданию генератора REST контроллеров, представляющих прямой доступ к DAO слою, для покрытия проекта функциональными тестами.
4. Принимал непосредственное участие в составлении и защите (в момент приемки) тактики тестирования, а также плана по движению в направлении CI/CD.
5. Запросил обучение по maven для java-разработчиков (прошло внутреннее обучение от core-team).
6. Настоял и помогал формировать план обновления фреймворка на UI (сейчас Angular 5, практически полностью готово к миграции на следующую версию).
7. Обновил Spring boot, hazelcast, apache cxf и связанные библиотеки до последних, которые смогли запуститься на Weblogic 12.
8. Убрал ненужные зависимости из проекта, которые использовали 1-2 класса из библиотек (например, Pair из spring-data). Задал направление по постепенному устранению проблемных частей (пример: тяжелые аннотации в параметрах REST контроллеров @JsonArgument).

Jul 2018 — by Jun 2019

Integrated Information Solutions

Java developer

Spring: core, hibernate, postgresql, docker, liquibase, vaadin, gradle.
Refactoring 3-4 year old code (spring framework, spring security, hibernate, extjs, apache cxf).
Сontinued migration from maven to gradle.
Update all stack to fresh dependencies (spring fw/sec 4.3/4.2).

Developing submodule on proprietary system based on spring framework (spring framework, hibernate, vaadin).

Research in frontend frameworks: angular, react (js/ts), react on kotlin-js. Making example applications with graphql client.

From march 2019 I developed frontend on React (typescript) from scratch:
- dynamic list and edit from generator based on json descriptor;
- graphql client;
- integration custom list with dynamic edit form.

Used tomcat over gradle gretty plugin and war on standalone server.

Configured spa application and java backend (graphql servlet) to one port via nginx.

Mar 2017 — Jul 2018

Inquarta/KAYAN - Krasnodar

Java developer

I've worked with JHipster, docker, Spring: core/boot/data/cloud stream (Kafka), liqubase, Elasticsearch, AngularJS, Angular 5, JAXB.

I've developed telemarketing system and management system of the cloud PBX (Megafon megapbx.ru) for analysis of the quality of work managers working in real estate sales.

Achivements:
API for downloading and listening phone call from cian.ru
API for full management of cloud PBX (megapbx.ru): phones configuration, phone calls redirections, employee and division management, phone call listening; improved callback method for events and information loading about phone calls.
I configured Kafka cluster for distributed cloud PBX signals processing.
For 3 months I designed, implemented and launched the lidogeneration system.

Sep 2011 — Mar 2017

about 5 years

Quickpay - Russia, Barnaul / Quickpay Inc. - USA, Miami

senior developer, technical director

Support and development payment system.
Hiring new team, organization of work.
Creation of system documentation.
Building software development rules.
5 years team management experience, team was from 4 to 10 developers. I was involved in development and management process.
2,5 years experience in remote team management (skype/redmine/email).

May 2009 — Sep 2011

2 years 5 months

Quickpay - Barnaul

java/php developer

Support and development payment system.

Feb 2007 — Aug 2008

1 year 7 months

Quickpay - Barnaul

java/php developer

Support and development payment system.

Oct 2004 — Oct 2006

2 years 1 month

developer

Developing server application based on micq (C language) for searching clients, message sending and new icq uin registrations.
The project succesfully completed.

Developing client-server application for processing SMS via SMPP on java.
The project succesfully completed.

Java Spring Framework Hibernate

Git Typescript PostgreSQL Kotlin

Java: J2SE, J2ME.
J2ME: developing applications for sending data via SMS/GPRS, interactive applications.
J2SE: applications on AWT, Swing, SWT, network, server applications, with database connectins, cryptography, developing obfuscation application with string crypting (via BCEL), work with BlueCove/DBUS (message notifications via bluetooth).
Java-libraries: Hibernate, JSP, Spring.
Java-containers: Tomcat, jetty.
Databases: Postgresql, MySQL, Oracle (base knowledge).
Postgresql: PL/pgSQL/partitioning/standby replication.

VCS skills: GIT, SVN, CVS.
Skills with GIT about 5 years.

Essential skills in Java:

Pet-projects:


Recently I read following books:


Tasks management: Redmine, Jira.
Documenting: XWiki, MediaWiki, Confluence.

Virtualization: FreeBSD/jail, VirtualBox, QEMU, LXC, Docker.

FreeBSD: using as desktop system (and as local home-server) in 10 years (since 1999г., from FreeBSD 3.4), kernel rebuilding, system update from sources, writing/patching FreeBSD ports, PF tuning, configuring server daemons and so on. At this moment it is major system for processing data because simple configuring and flex tuning.
Linux: using as desktop/localserver system since 2009 year for compatibility between workplaces (Ubuntu).

5 years team management experience, team was from 4 to 10 developers. I was involveved in development and management process.
2,5 years experience in remote team management (skype/redmine/email).

Others:
PHP: developing web и standalone applications since 2001 year without and with frameworks, main skills with Zend framework (integration with existing system).
С/С++:network applications, Tumar cryptography library (Kazakhstan, 2011г.), STL.
Other langs/skills: Arduino, GWT, JavaScript, TypeScript, Assembler (DOS, Win32, BSD/Linux).
IDE: PhpStorm, IDEA, Eclipse, Arduino IDE.


Meetings and conferences:

4D proekt (Quickpay), LLC - Akhmerov Ramil (CEO) 

4D proekt (Quickpay), LLC - Sohorev Sergey (PHP developer) 

МПС (MPS Quickpay), LLC - Bezrouchkin Eugene (CEO) 

МПС (MPS Quickpay), LLC - Abramov Anton (PHP developer) 

МПС (MPS Quickpay), LLC - Radyk Sergey (C/C++ developer) 

Inquarta, Lemeshko Anton (CEO) 

Higher education

2009, software engeneer

Barnaul, Altay State Technical University, Faculty of Engineering Pedagogy and Informatics, Software computer tecnology and automated systems, diploma

Secondary education

2002, lyceum, specialization - computer languages

Russia, Altay region, Barnaul, Engineering technology lyceum №124

Russian — native

English — reading professional literature, writing in professional subject

Citizenship: Russia

Work permit: Russia

Travel time to work: less hour