Ведущий разработчик на Java полностью удалённо

Будва, Черногория
Миддл • Сеньор
Информационные технологии • Разработка • Backend • Java • JavaScript • Angular • Hibernate • Spring • MySQL • MSSQL • Oracle • PostgreSQL
Релокация • Удаленная работа
Опыт работы более 5 лет
250 000 ₽
Есть файл резюме (защищен)
О себе

На данный момент Старший программист.

Мои компетенции и опыт

О себе

Я предпочту рассмотреть предложения работы вне юрисдикции РФ. Желательна полная удалёнка без ограничений по месту жительства, хотя могу рассмотреть предложения с релокацией. Работу, требующую физического присутствия на территории РФ, не рассматриваю.

Я женат, есть ребёнок (15 лет). В свободное время читаю, гуляю, катаюсь на велосипеде.
Веду активный образ жизни, люблю путешествовать, бывать на природе. Открытый, отзывчивый, коммуникабельный, ответственный.

**************************************************************************************************

Компетенции

В профессиональном плане сейчас я опытный разработчик на Java для веб. И мне нравится эта работа. Ранее выполнял обязанности full-stack разработчика, сейчас сконцентрирован на серверной части. Сводка по знакомым технологиям и инструментам:

Есть опыт использования языков: Java, C#, C++, PHP, VBA, Prolog, 1C и др. Владею разработкой десктоп-приложений, знаком с принципами разработки для Android.

Приходилось создавать веб-интерфейсы с использованием Angular, JavaScript, JQuery, CSS и SCSS, Java-апплетов, Silverlight, ActiveX. Также использовал для этого средства Java: Servlet, JavaServer Pages (JSP), JavaServer Faces (JSF), PrimeFaces.

Знакомство с СУБД: PostgreSQL, Microsoft Sql Server, Oracle, IBM DB2, MySQL, SQLite, Microsoft Access.

Знакомство с интеграционными технологиями: Kafka, ActiveMQ, Apache Camel.

Используемые инструменты разработки: тестирование в Junit, Postman, SoapUI; системы сборки Gradle, Maven, ANT; хранение исходников в git, svn; автоматизация сборки в GitLab, TeamCity; развёртывание в Kubernetes, серверах JavaEE (WildFly/JBossAS, WebSphere), серверах OSGI (Apache Karaf), веб-серверах (nginx, Apache, IIS), Docker.

Основные используемые среды разработки: IntelliJ IDEA, Microsoft Visual Studio, Eclipse.

Знаком с технологиями обработки текстов: JSON, XML, XSD, XSLT, XPATH, регулярные выражения.

**************************************************************************************************

Декабрь 2022 — по настоящее время, ООО ЛТ Менеджмент, Старший программист

Доработка системы автоматизации складской деятельности под нужды крупных заказчиков.

Полностью удалённая работа в географически распределённых командах разработки. Команда создаётся для выполнения конкретного заказа, содержит позиции аналитиков, разработчиков, devops инженера, тестировщиков. Я занимаю позицию back-end разработчика на Java, хотя иногда приходится заниматься и настройкой серверного ПО на Linux и решением проблем JavaScript front-end.

Основное ПО работает под управлением WildFly. Дополнительные модули создаются на Spring Boot. В качестве систем хранения данных используются MS SQL Server и PostgreSQL. Сборка ПО осуществляется в Gradle и Maven на серверах GitLab и Jenkins из исходного кода в Git. Командная работа организована на продуктах Zoho.

Среди моих основных задач были следующие:
- Доработка существующего кода под требования заказчика. Модификация серверного кода на Java, слоя доступа к данным, минимальная доработка JavaScript кода.
- Разработка новых модулей (микросервисов), интегрируемых с основным программным обеспечением.
- Встраивание low-code решений на основе Apache Camel и Drools (DMN, DRL, BPMN).

Мой личный вклад:
- Разработка микросервиса для гибкой проверки валидности цифровых кодов систем маркировки и прослеживания товаров в России (Честный знак, ЕГАИС, Меркурий). Участие в выборе архитектуры, планирование разработки, реализация основного функционала и выдача заданий коллегам для реализации отдельных функций.
- Перевод интеграции нескольких существующих сервисов с Remote EJB на JMS (ActiveMQ через Apache Camel).
- Рефакторинг сотен полученных путём декомпиляции классов для удаления неудачных паттернов декомпилятора (например, использования конструкций типа break/continue with label в многоуровневых циклах).

За время работы в этой организации научился использовать в работе low-code технологии. А также получил новый для меня опыт работы с технологиями контейнеризации OSGI на базе Apache Karaf.

**************************************************************************************************

Март 2021 — ноябрь 2022, Банк ДОМ . РФ Москва, Старший Java-разработчик

Разработка веб-портала удалённого банковского обслуживания юридических лиц.

Удалённая работа в команде по методологии Scrum, современный процесс планирования, документирования, разработки, тестирования и развёртывания на основе технологии ci/cd.

Организация командной работы:
- Работа организована силами трёх тесно связанных мини команд по 8-11 человек. Я работаю в платформенной команде.
- Вливание функциональных веток в основные ветки исходных кодов производится только после перекрёстного рецензирования кода.
- Работа идёт спринтами, с формированием отчётности и регулярными демонстрациями.

Разрабатываемое программное обеспечение основывается на микросервисной архитектуре. Используются следующие компоненты:
- Java приложения на Spring: boot, MVC, data, security. Библиотеки Lombok, MapStruct.
- Связь микросервисов друг с другом через Kafka (clients, streams).
- Связь микросервисов бэкэнда и фронтенда по JSON REST API. Документирование в OpenApi (Swagger).
- Получение данных от устаревших систем через очереди сообщений: ActiveMQ (JMS).
- СУБД: PostgreSQL. Доступ через JPA (Hibernate) и JDBC, миграции на Liquibase. Полнотекстовый поиск на Ellasticsearch, кэширование в оперативной памяти на Redis.
- Пользователи, права: Keycloak. Интеграция через Spring Security, создание дополнительных провайдеров для расширения функциональности.
- Модульное тестирование: Junit 5, Mockito Inline, AssertJ, Testcontainers.

Инструменты разработки:
- Документирование: Confluence (википедия).
- Задачи и планирование: Jira.
- Среда разработки: IntelliJ IDEA.
- Компиляция и сборка: Maven.
- Контроль качества кода: SonarQube.
- Хранение исходных файлов: Git.
- Автоматизация сборки и развёртывания: GitLab.
- Хранение артефактов: Nexus.
- Способ публикации сервисов: Docker.
- Среда развёртывания: Kubernetes.

Для разрабатываемых по многослойной архитектуре сервисов бэкэнда применяются следующие методы тестирования:
- Алгоритмы тестируются на быстро исполняемых тестах JUnit 5 без поднятия контекста приложения.
- Слой контроллеров тестируется на MockMvc. Остальные слои при этом мокаются. Производится тестирование эндпоинтов на успешные исходы и проверяются обработчики ошибок.
- Сервисный слой тестируется независимо, слой репозиториев при этом мокается.
- Слой репозитория тестируется на встроенных БД. БД инициализируются с использованием Liquibase.
- Производится интеграционное тестирование на Testcontainers. При этом в контейнере поднимается тестируемый микросервис. При необходимости поднимаются микросервисы поставщики и потребители данных. Поднимаются контейнеры с необходимой обвязкой: СУБД, очереди и т.д. Передача данных осуществляется через очереди или REST.
- Другие виды тестов проводит команда тестировщиков.
Процент покрытия тестами моего кода не опускается ниже 85%, стремлюсь к 100%.

Мой личный вклад:
- Принимал участие в старте проекта, когда выстраивалась архитектура программного обеспечения, ориентированная на высокую доступность, надёжность, защищённость, поддерживаемость.
- Пришёл в команду, когда в ней было только два активных члена, настроил тестовый стенд Kubernetes, написал первые пайплайны GitLab для сборки, тестирования и развёртывания первых микросервисов.
- Занимался доработкой сервера Keycloak, путём создания специализированных провайдеров.
- Создавал первые микросервисы, которые позже легли в основу ядра системы. В том числе микросервисы журналирования, справочников, пользовательского профиля, пользовательских сессий.

Мои обязанности:
- Участие в принятии архитектурных решений.
- Взаимодействие с командами банка, занятыми над связанными проектами (например, командами аутентификации и банковских транзакций).
- Взаимодействие с другими членами моей команды.
- Декомпозиция, детализация, оценка трудоёмкости задач.
- Написание программного кода микросервисов бэкэнда.
- Помощь новичкам при адаптации к проекту.
- Проведение код-ревью.

**************************************************************************************************

Январь 2014 — март 2021, ФГУП «ЗащитаИнфоТранс», Главный специалист

- Разработка веб-сайтов от архитектуры до реализации для использования как внутри организации, так и для внешних пользователей.
- Координация разработки специального программного обеспечения подрядными организациями.
- Тестирование разработанного ПО и ввод его в эксплуатацию.
- Настройка программной инфраструктуры для эксплуатации разрабатываемого ПО.

Работы в организации проводились по контракту с Министерством Транспорта и касались ЕГИС "Организации Транспортной Безопасности". За время работы в этой организации сначала я занимался доработкой существующего программного обеспечения, позже занимался разработкой нового.

Использованные при разработке и эксплуатации технологии:
- Программное обеспечение разрабатывалось, в основном, на языке Java.
- При разработке программного обеспечения использовалась парадигма ООП.
- Разработка велась в составе команды, применялись техники коллективного владения программным кодом, взаимопроверки кода.
- При разработке использовались возможности стека JavaEE.
- Программное обеспечение было организовано в виде набора сервисов, решающих отдельные задачи.
- Пользовательский интерфейс к разработанным сервисам создавался в виде веб-приложений.
- Хранение данных осуществлялось в кластерах СУБД Oracle и PostgreSQL.
- Использовались системы полнотекстового поиска на основе PostgreSQL, Elastic search.
- При связи компонентов программного обеспечения между собой использовались как очереди сообщений на основе IBM Websphere MQ и ActiveMQ, так и удалённый вызов процедур по протоколам SOAP и REST.
- Программное обеспечение разворачивалось в отказоустойчивых кластерах на виртуальной инфраструктуре VMware, что обеспечивало работоспособность в режиме 24/7.
- При разработке использовались практики CI/CD. Программное обеспечение разрабатывалось короткими итерациями: реализация новой функции, ограниченное тестирование, ввод в эксплуатацию новой версии. Программный код хранился в SVN и GIT. Сборка проектов осуществлялась сборщиками ANT, Maven, Gradle на серверах TeamCity. Использовалось модульное тестирование на JUnit, SoapUI.
- Каждая доработка программного комплекса становилась новой ступенькой в профессиональном развитии: был проведён переход от коммерческих к OpenSource решениям, были внедрены современные методы организации разработки.



Есть файл резюме (защищен)


Интересные кандидаты