Обо мне

Я технарь, который пришел в разработку из управления проектами и аналитики.

Имея опыт промышленного консалтинга, управления и сбора команд, я постоянно увеличиваю сложность решаемых задач.

Я начинал с заполнения товарами самописной CMS в 2004-м году,
Сделал руками фрилансеров и студий не один сайт к 2012 году.
Собирал из шаблонов десятки лэндингов и писал макросы для генерации десятков тысяч рекламных объявлений.

Перешел в создание ERP-систем на Ruby-on-Rails и постепенно дошел до оптимизации систем при 20 000 запросов в минуту к API.

С бизнесом я говорю на языке бизнеса.
С разработкой я говорю на языке разработки.
С маркетингом - на языке маркетологов.

А при построении работы команды я считаю важным
1) непрерывно прокачивать технические навыки, и тут мне помогает мой личный опыт разработки и поддержки сложных проектов
2) ежедневно следить за коммуникацией, мотивацией, уважением, эмоциональным фоном и т.д.

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

Опыт показывает что это дает шикарные результаты

Буду рад рассказать кейсы и подробнее ответить на все вопросы. Как технические, так и управленческие.

Участие в профессиональных сообществах
Опыт работы
High quality software
Москва
Team lead fullstack команды (8 человек)
Июнь 2019 — По настоящее время (1 год и 4 месяца)

Обязанности:
- Руководство командой разработки из 5 разработчиков, дизайнера, devops, тестировщика

Помимо написания кода:
- Codereview
- Разработка архитектуры
- Контроль Guideline
- Общение с заказчиком/бизнесом
- Поддержка текущих проектов

Ситуация:
- Студия заказной разработки
- Разбежавшаяся команда разработки
- Проект в работе, который надо сдать "вчера"
- 4 проекта на поддержке
- 32 сервера

Цель:
- Обеспечить работоспособность текущих проектов
- Собрать команду
- Организовать разработку проектов
- В проектах, которые на поддержке, навести порядок, убрать баги, снизить время на поддержку

Результат:
- Через месяц собрана команда
- Через 1,5 месяц директор со спокойной душой уехал на две недели в отпуск
- За 9 месяцев сделано 3 проекта
- За 1 месяц был полностью переписан проект, который прошлая команда писала 1 год, и успешно сдан заказчику. Пройдено ПМИ (впервые в истории компании и впервые в истории заказчика с первого раза)
- Постепенно без аврала проекты на поддержке вычищены, написаны мануалы на сложные случаи, доработки делаются за полдня, сложные кейсы разруливаются за 1-2 часа.
- Количество серверов сократилось с 32 до 17
- Все сервера были собраны из 3 дата-центров в 1 (YandexCloud). Был организован переезд всех клиентов, который они не заметили. Унифицирована процедура развертывания, настроен менеджер паролей, мониторинги и бэкапы
- Выстроена работа команды разработки, не требующая операционного управления
- В кратчайший срок (2 месяца) развернули систему управления видеоконференцсвязи (на базе Huawei SMC) рассчитанную на 70 000 сотрудников в госучреждении.

Стек:
Ruby-on-Rails, VueJS, Postgres, Redis, Sidekiq, Elastic, GraphQL, Soap, etc

Интрументарий:
Swagger, Rspec, Jira, Slack, Postman, Git, Gitlab, GitlabCI, Portainer, Swarm, Docker, Prometheus, Grafana, etc

Команда разработчиков
Москва
Ruby on Rails разработчик, руководитель проекта
Ноябрь 2016 — По настоящее время (3 года и 11 месяцев)

Разработка систем под заказ, CRM-ERP для малого бизнеса, складских учетных систем вплоть до системы закупок для завода. Автоматизация отдела закупок из 15 человек.

Мои обязанности
- анализ требований, проработка архитектуры
- описание сущностей: поля, тип полей, валидации
- описание всех прав доступа, каждой роли при CRUD операциях
- описание сервисов и их функционала включая тест-кейсы
- разработка backend
- сборка frontend из шаблона
- написание тестов

Технологии с которыми лично я работал:
DB: postgresql
Авторизация: gem devise, omniauth, doorkeeper
Права доступа: cancancan
Frontend: шаблон wrapbootstrap, slim
Deploy: capistrano, passenger
Repo: github
Development and testing: rspec, shoulda-matchers, factory_girl_rails, capybara, selenium-webdriver, database_cleaner, json_matchers, letter_opener
Background tasks: sidekiq
Прототипирование: moqups, balsamiq

До 8 человек в прямом подчинении, найм и отбор разработчиков, найм людей на поддержку и дальнейшее сопровождение проекта.

Ruby on Rails разработчик, руководитель проекта
Октябрь 2014 — Октябрь 2016 (2 года и 1 месяц)

Разработка систем под заказ, CRM-ERP для малого бизнеса, складских учетных систем вплоть до системы закупок для завода. Автоматизация отдела закупок из 15 человек.

Мои обязанности
- анализ требований, проработка архитектуры
- описание сущностей: поля, тип полей, валидации
- описание всех прав доступа, каждой роли при CRUD операциях
- описание сервисов и их функционала включая тест-кейсы
- разработка backend
- сборка frontend из шаблона
- написание тестов

Технологии с которыми лично я работал:
DB: postgresql
Авторизация: gem devise, omniauth, doorkeeper
Права доступа: cancancan
Frontend: шаблон wrapbootstrap, slim
Deploy: capistrano, passenger
Repo: github
Development and testing: rspec, shoulda-matchers, factory_girl_rails, capybara, selenium-webdriver, database_cleaner, json_matchers, letter_opener
Background tasks: sidekiq
Прототипирование: moqups, balsamiq

До 8 человек в прямом подчинении, найм и отбор разработчиков, найм людей на поддержку и дальнейшее сопровождение проекта.

level.travel
Москва
Senior Ruby-on-Rails developer
Май 2018 — Июнь 2019 (1 год и 2 месяца)

Обязанности:
- разработка + рефакторинг, codereview
- аналитика, архитектура крупных задач
- найм персонала + обучение
- оценка, согласование и постановка задач
- постепенное улучшение процессов, стабильности кода, ускорение разработки

Результат про архитектуре, процессам, тестированию
Было:
- 300 тестов из них 200 красных
Стало:
- 800+ зеленых тестов, green master, 30-40 новых тестов в спринт, процесс: "потрогал - напиши тест"

Было:
1 ApplicationСontroller на 800 строк, от которого наследуется 50+ контроллеров, по 30 skip_before_action в контроллерах
Стало:
Разделение логики на 4 основных контроллера, 3-4 skip_before_action

Было:
Ряд очень странных моделей, хранящихся в Redis без валидаций текстом
Стало:
Все сущности хранятся в базе, имеют валидации, фабрики, на это всё написаны тесты

Было:
Отсутствие валидаций у основных классов по "особенным" причинам.
Стало:
Устранение "особенных" причин, написаний валидаций, приведение данных в БД к нормальному состоянию, покрытие валидаций тестами

Было:
Телефония-угадайка. Отсутствие id в телефонии по мифической причине "это невозможно". Постоянные сбои, изменения записанные не в те сущности. Enum хранящие данные по разным признакам, постоянно теряющие состояние. И т.д.

Стало:
Исключение мифической невозможности, все взаимодействие по uuid. Независимые и полные Enum, ускорение работы ряда разделов админки в 4 раза (ими пользуются 150+ сотрудников)

30+ собеседований, приём, обучение и ввод в работу 3 разработчиков

Улучшение работы staging серверов (TeamCity + Kubernetes)

100+ выполненных мелких и крупных задач

Крупнейший агрегатор квестов в реальности в России и мире
Ruby on Rails developer
Июль 2017 — Июнь 2018 (1 год)

 Починил 200+ тестов
- Спустя год с 100 рабочих тестов до 800
- Настройка CI
- Upgrade Rails 4.2.7 -> 5.1.4
- Оптимизация запросов в базу с 100 до 40, при загрузке популярных страниц.
- Устранение тяжелых методов, поиск и оптимизация. Рекорд: метод, который используется на 60% запросов, сокращение времени выполнения с 128ms до 6ms.
- Написание бонусной программы с нуля
- Написание реферальной программы с нуля
- Написание системы документооборота с нуля (акты, pdf, расчет, подписание, генерация, и т.д.
- Оптимизация 30+ rake tasks для снижения нагрузки на базу
- 150+ правок в личные кабинеты и админку
- Доработка и создание API для внешних клиентов, документация, коллекции в Postman, rspec тесты и внешние тесты.
- etc

Ruby on RailsRubyRspecООПGitSQL
Инвестиции в талантливых предпринимателей и сильные команды, преимущественно на ранней стадии
Ruby on Rails developer
Октябрь 2016 — Август 2017 (11 месяцев)

Мои обязанности
- Разработка новых и поддержка текущих функций
- Backend для личного кабинета пользователей
- Backend для личного кабинета менеджеров
- API интеграция партнеров
- Создание микросервисов для работы с партнерами, SOAP и RestAPI интеграция
- Рефакторинг кода
- Настройка CI
- Переработка mailer (более 60 шаблонов, с условиями и опциями для рендеринга)
- Написание тестов

Технологии с которыми лично я работал:
Frameworks: Rails: 4.2, 5.02, миграция с 4.2 на 5.02, Sinatra
DB: Postgresql, Redis, RethinkDB
Авторизация: gem devise, omniauth, doorkeeper, JWT, Knock
Права доступа: cancancan, pandit
API: RestAPI, JsonAPI, SOAP (gem savon)
Frontend: мелкие правки в Ember
Deploy: ansible
Repo: github
Development and testing: rspec, shoulda-matchers, factory_girl_rails, capybara, selenium-webdriver, database_cleaner, json_matchers, letter_opener, sinatra + minitest, circle-ci
Background tasks: sidekiq
Search: Elastic, SQL + Arel