Сергей Новиков (seranov1), 45 лет, Черногория, БудваСергей Новиков (seranov1), 45 лет, Черногория, Будва
Опытный разработчик на Java и других технологияхБэкенд разработчикФулстек разработчикСтарший (Senior)
От 250 000 ₽Рассмотрю предложения

Контакты

Войти
Возраст: 45 лет
Опыт работы: 22 года и 7 месяцев
Регистрация: 27.10.2022
Последний визит: 2 года назад
Местоположение: Черногория, Будва
Дополнительно: готов к переезду и к удаленной работе

Обо мне

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

Я женат, есть ребёнок (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, регулярные выражения.

Навыки

Разработка программного обеспечения
Java
Spring Boot
Java EE
SQL
PostgreSQL
Docker
Kubernetes
Apache Kafka
Junit

Опыт работы

  • ООО ЛТ Менеджмент
    Старший программист
    Декабрь 2022 — По настоящее время (2 года и 4 месяца)

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

    Полностью удалённая работа в географически распределённых командах разработки. Команда создаётся для выполнения конкретного заказа, содержит позиции аналитиков, разработчиков, 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.

  • Уполномоченный банк в сфере жилищного строительства
    Старший Java-разработчик
    Март 2021 — Ноябрь 2022 (1 год и 9 месяцев)

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

    Удалённая работа в команде по методологии 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 (7 лет и 3 месяца)

    - Разработка веб-сайтов от архитектуры до реализации для использования как внутри организации, так и для внешних пользователей.

    - Координация разработки специального программного обеспечения подрядными организациями.

    - Тестирование разработанного ПО и ввод его в эксплуатацию.

    - Настройка программной инфраструктуры для эксплуатации разрабатываемого ПО.

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

    Использованные при разработке и эксплуатации технологии:

    - Программное обеспечение разрабатывалось, в основном, на языке 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 решениям, были внедрены современные методы организации разработки.

  • Точных Приборов, НИИ, ФГУП
    Ведущий инженер (программист)
    Декабрь 2004 — Декабрь 2013 (9 лет и 1 месяц)

    За время работы в этой организации участвовал в нескольких проектах:

    1. 2013г. Веб-сайт под управлением JBoss на JavaServer Faces и PostgreSQL в Eclipse.

    2. 2011г-2012г. Оконные программы на C#, MS SQL Server, Microsoft Access, SQLite в MS Visual Studio.

    3. 2010г-2010г. Оконная программа на C++ в CodeGear Rad Studio.

    4. 2009г-2010г. Веб-сайт под управлением IIS на Asp.Net и MS SQL Server в MS Visual Studio.

    5. 2006г-2008г. Оконные программы на C++ и Java в CodeGear Rad Studio, Borland JBuilder.

    6. 2004г-2005г. Оконные программы на С++ в Borland C++ Builder.

    Во всех указанных проектах выполнил большую часть работы.

    JavaC#C++EclipseMicrosoft SQLSQLiteJSFQtXMLSVN
  • Импортирующая мелкооптовая торговая организация
    Москва
    Программист 1С, системный администратор
    Сентябрь 2002 — Ноябрь 2004 (2 года и 3 месяца)
    Участие в разработке специфической конфигурации 1С Предприятие, администрирование парка вычислительной техники.

Высшее образование

  • МИЭМ им. А. Н. Тихонова

    Московский институт электроники и математики имени А. Н. Тихонова
    Автоматики и вычислительной техники; АВТ
    Сентябрь 1997 — Февраль 2022 (24 года и 5 месяцев)

    Вычислительные машины, комплексы, системы и сети, Инженер