О себе

Ночевнов Евгений Вячеславович

Место жительства: Москва, Подмосковье

Гражданство: Россия

mailto: eugen@mailnochevnov.ru

Профиль на сайте GitHub

Fullstack Ruby on Rails Senior/Lead

В настоящее время мне нравится создавать продукты и услуги с помощью информационных технологий, чтобы предоставить пользователям какие-то новые возможности. Например, это могут быть сервисы по получению электронных чеков, брони гостиниц или поиску вкладов.

Для этого применяю следующие навыки:

  • уточнение задач, составление технического задания;
  • использование клиент-серверного подхода и веб-технологий;
  • программирование основной функциональности на стороне сервера и минимально необходимой — на стороне клиента;
  • иногда — создание сценариев тестирования;
  • иногда — эксплуатационная документация;
  • иногда — схемы и диаграммы бизнес-процессов, взаимодействия систем и т.п.;
  • иногда — создание макетов интерфейсов;
  • иногда — сбор данных, постановка и проверка предположений.

В настоящее время мне интересна удалённая работа. Не рассматриваю возможность переезда и командировок.

Профессиональные навыки

Back-end (серверная сторона)

Ruby Rails — 9 лет опыта. Стараюсь писать "чистый" код, т.е. с понятными абстракциями, наглядный, безопасный, надёжный.

SQL MySQL PostgreSQL — триггеры, представления (view), полнотекстовый поиск.

Redis MongoDB

TDD RSpec FactoryBot Swagger (OpenAPI)

Front-end (клиентская сторона)

HTML CSS Sass

JavaScript ECMAScript 2015+ (ES6+) Pug Vue 2 Svelte 3

Webpack Rollup Vite

Архитектура и проектирование программного обеспечения

DRY SOLID Design patterns — стараюсь применять эти принципы, насколько возможно, но допускаю отступления от них ради скорости выполнения кода и скорости разработки.

MVC Multi-layered architecture — разделяю программный код на несколько слоёв по решаемым задачам и областям ответственности: сервисные объекты, презентеры, классы для запросов к базам данных, классы для формирования данных для экспорта и другие.

UML User Story ER-diagrams — опыт 1-2 года в проектировании решений в крупных корпоративных проектах.

XML SOAP JSON (REST API) — разработка интеграции между несколькими системами.

UX — использовал Balsamiq, Visio и Quant UX для создания макетов веб-страниц.

Администрирование сервера и DevOps

Linux Nginx MySQL PostgreSQL Redis HTTPS — настройка.

Docker Docker Compose GitLab CI — создание файлов для запуска процедур сборки проекта (Dockerfile, Docker compose) и проверки файлов проекта с помощью линтеров (RuboCop, Brakeman и других).

git — основное средство для совместной работы с репозиториями.

Желаемые условия работы

Мне нравится самостоятельно определять, чем и как заниматься; планировать свою деятельность.

Мне комфортно работать самостоятельно, и при необходимости обращаюсь к сотрудникам за помощью.

Мне нравится работать в командах, где у каждого участника уникальная роль (кросс-функциональные команды), например, front-end + back-end + designer + product owner.

Не интересует заёмный труд (out-staff).

Важно! Мне не нравятся переработки и «ненормированный рабочий день», особенно когда это не компенсируется деньгами или днями отдыха. Вариант «переработки в любом количестве и в любые дни в обмен на 3 дня отпуска в год» отвергаю сразу.

Пожелания к корпоративной культуре

Интересует свободная, демократичная, творческая среда, где приветствуют развитие процессов и результатов, а также эксперименты (развитие всегда сопровождается экспериментами!). Приветствую сочетание адаптивности и организованности!

Мне нравится прямое свободное выражение мнения. Можно немного приукрашивать его чувством такта.

Образование

Год окончания Направление обучения, образовательное учреждение
2015 Аспирантура (неоконченная диссертация про менеджмент), Московский технический университет связи и информатики
2013 Курс «Практикум управления проектами. Ключевые документы, инструменты, решения», УКЦ «Проектная ПРАКТИКА»
2012 Специальность (Информационные технологии, 230105 Программное обеспечение вычислительной техники и автоматизированных систем), Московский технический университет связи и информатики

Опыт работы

Всего: 13 лет.

В роли разработчика: 11 лет.

В роли системного аналитика: 1 год.

В роли руководителя: 1 год.

Руководитель команды разработки на Ruby в «JetClass» (Россия)

Сентябрь 2024 — по настоящее время, Ruby Rails PostgreSQL RSpec Docker Kubernetes Redis

Разработчик Ruby в «Randewoo» (Россия)

Май 2024 — август 2024, 3 месяца Ruby Rails PostgreSQL RSpec Docker Kubernetes Elastic Redis HashiCorp Vault

Наиболее крупные задачи:

  1. Интеграция с платёжным сервисом «Плати частями» (сервис рассрочки) от Сбербанка.
  2. Создание гема с настройками правил для RuboCop.

Разработчик Ruby в «Нетология» (Россия)

Март 2022 — февраль 2024, 1 год и 11 месяцев Ruby Rails MySQL RSpec Docker Kubernetes

Большая кодовая база, более 600 таблиц в БД. Примерно 10% из них - это таблицы-связки, ещё столько же - это таблицы, к которым применяется типовой процесс использования (CRUD), ко всем остальным написан специфический (custom) код для заполнения и чтения данных с учётом бизнес-логики. Код хорошо структурирован.

Я участвовал в разработке функциональности основного сайта компании, а также занимался рефакторингом кода и добавлением тестов. Мой наиболее значимый вклад:

  1. Проектирование и создание программного кода для новой ролевой модели в административной панели сайта. Несколько сотен изменённых файлов!
  2. Написание кода для генерации отчётов, справок, дипломов и других документов.
  3. Подготовка монолитного проекта к разделению на области функциональности в программном коде, что в последующем поможет в перемещении этого кода в новые микросервисы.
  4. Выступление перед другими разработчиками с информацией о новшествах в коде, а также обсуждение и поиск решений поставленных проблем. Примеры: code style, linters, хранение настроек приложения.

Участвовал в интеграции с несколькими сторонними сервисами, в т.ч.:

  1. Mindbox - сервис для рассылок писем и ведения базы данных по клиентам компании.
  2. Planfix - сервис для управления бизнес-процессами через постановку задач (похож на Redmine).
  3. WebinarRu - сервис для проведения вебинаров (онлайн-конференций).

Разработчик Ruby в «Баланс-Платформа» (Россия)

Февраль 2021 — март 2022, 1 год и 1 месяц Ruby Rails PostgreSQL RSpec Swagger (OpenAPI) Docker Kubernetes

Разработка программ, используемых в некоторых банках. Очень много кода, много правил проверки и обработки данных, более 50 таблиц в базе данных. Используется микросервисный подход.

Разработчик Rails в РЖД (Россия)

Февраль 2020 — февраль 2021, 11 месяцев Ruby Rails JavaScript Vue PostgreSQL

Участвовал в создании продуктов:

  1. Основной продукт: добавление функциональности для управления новостями, опросами, рекламными баннерами и транспортными документами для портала «Личный кабинет (грузовые перевозки)».
  2. Сайт для рассмотрения идей и предложений (обсуждение и голосование).
  3. СМС-шлюз.

Разработчик Rails в GameServerKings

Август 2018 — октябрь 2019, 1 год и 2 месяца Ruby Rails JavaScript PostgreSQL Heroku

Крупные изменения в дизайне сайта (при участии веб-дизайнера), а также новые возможности и функции сайта для клиентов и сотрудников этой компании. Например, интеграция с 3 платёжными сервисами в виде подписки. Компания предоставляет виртуальный хостинг для онлайн-игр. Это международная команда. Я работал удалённо, всё общение шло на английском языке.

Во время работы здесь я сильно развил свои навыки по построению архитектуры кода на JavaScript.

Руководитель команды разработки в МОЦ ИКТ (Россия)

Апрель 2018 — июль 2018, 2 месяца Ruby Rails JavaScript MySQL Redmine Docker

Создал портал на Redmine (на основе Ruby on Rails) для учёта грузоперевозок, по заказу правительства Московской области.

В команде было ещё два программиста, все работали удалённо.

Увы, я столкнулся на этом месте с задержкой зарплаты, переработками, "выходом" на работу в выходные и постоянной суетой.

Более ранние места работы

Системный аналитик в «Сбербанк-Технологии» (Россия), ноябрь 2017 — апрель 2018, 4 месяца

Аналитик процессов в «ФК Открытие» (Россия), июнь 2017 — октябрь 2017, 4 месяца

Системный аналитик и программист в НИИАС (Россия), сентябрь 2016 — июнь 2017, 8 месяцев

Системный аналитик / программист в Uniweb (Унивеб) (Россия), январь 2015 — июль 2016, 1 год и 6 месяцев

Программист в МТС (Россия), июнь 2014 — декабрь 2014, 6 месяцев

Программист / Lead Developer в CityAds (СмартФинанс) (Россия), август 2013 — апрель 2014, 8 месяцев

Программист / Lead Developer в Wand (Россия), август 2012 — апрель 2013, 8 месяцев

PHP программист, «КобраТелеком», ноябрь 2010 — январь 2012, 1 год и 3 месяца

Программист Delphi, ФГУП ММПП «Салют», июль 2009 — сентябрь 2010, 1 год и 2 месяца

Вклад в Open Source

  1. Обновил перевод строчек на русский язык для программы vym - View Your Mind - графического инструмента для mind maps.
  2. Добавил формат template literals для файлов с переводами строчек в плагине для Babel - babel-plugin-precompile-intl.
  3. Создал Ruby gem для форматирования названий месяцев без дней - ruby-i18n-months. Некоторые языки используют разные слова в названиях месяцев, например, "23 апреля 2022" и "Апрель 2022".

Языки

Русский — родной

Английский — средний (intermediate, B1)

Ещё несколько слов о развитии

Мне нравятся эти языки, библиотеки и технологии: Crystal, Svelte, Lucky Framework. По возможности я бы хотел применять их в работе!

Хорошо отношусь к Capistrano и Docker + GitLab CI, мне подходят оба варианта передачи кода на сервер.

Изучаю приёмы Domain-Driven Design для проработки структуры программ.

Пожалуйста, посмотрите эти репозитории:

  1. Настройки для Rubocop, упакованные в виде гема
  2. Шаблон для создания папки с проектом на Rails
  3. Микросервис на Ruby и Микросервис на Crystal