Ведущий разработчик на Java полностью удалённо
Будва, ЧерногорияМиддл • Сеньор
Релокация • Удаленная работа
Опыт работы более 5 лет250 000 ₽
Опыт работы более 5 лет250 000 ₽
Есть файл резюме (защищен)
Короткая ссылка: gkjb.ru/gkTT
О себе
На данный момент Старший программист.
Мои компетенции и опыт
О себе
Я предпочту рассмотреть предложения работы вне юрисдикции РФ. Желательна полная удалёнка без ограничений по месту жительства, хотя могу рассмотреть предложения с релокацией. Работу, требующую физического присутствия на территории РФ, не рассматриваю.
Я женат, есть ребёнок (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 решениям, были внедрены современные методы организации разработки.
Есть файл резюме (защищен)
Интересные кандидаты
Мы используем куки, потому что без кук наш сайт не работал бы, другие сайты не работали бы, да и вообще весь
интернет не работал бы