🏁 Началась четвёртая неделя марафона! До финала нам предстоит обсудить, как себя мотивировать, чему учиться и как сберечь психическое здоровье. А ещё у нас проходит классный киноконкурс с подарками от IVI, участвуйте в комментах под постом на Хабре.
sksniksksnik

Денис Суховерхов

Backend developer (Python, Go) · Бэкенд · Разработка ПО · Старший (Senior)
Не ищу работу
Возраст: 29 лет
Опыт работы: 7 лет и 2 месяца
Регистрация: 01.02.2015
Последний визит: 2 дня назад
Местоположение: Россия, Москва
Профессиональные навыки: Python · Golang · PostgreSQL · Linux · Docker · Kubernetes · Rabbitmq
Войдите, чтобы посмотреть контакты пользователя

Обо мне

Технологии:

  • Умею готовить  Docker images так чтобы apt-get (remove|autoclean|autoremove) действительно делали то что от них ожидается. Правильный Cleanup - залог легкого образа.
  • Готовлю  TDD, но без фанатизма, coverage== ~80%. Каюсь, писал страшные "юнит-тесты" с 5-ти уровневым манкипатчингом, теперь это в прошлом.
  • Вдохновляюсь принципами  DDD на практике, оказывается тесты для проекта в стиле DDD стали компактными и иногда даже изящными. Бизнес-логика на удивление не перемешана с инфраструктурным кодом. 
  • Применяю паттерны программирования без которых невозможен ни один DDD.
  • Уделяю особое внимание именованию переменных, написанию явного и читаемого кода. Иногда даже кажется что код выглядит само-документируемым. 
  • Комментарии - зло, если они дублируют смысловую нагрузку кода, более того - они еще со временем могут вводить в заблуждение, мало кто комментарии редактирует. Комментарии в коде должны отвечать на вопрос - "Почему", а код - на вопрос - "Как".  
  • python + asyncio + multiprocessing = хорошая утилизация ресурсов сервера. Вытесняющей многозадачности предпочитаю кооперативную, asyncio better than threading.
  • Сoncurrency is not parallelism, асинхронщина может решать I/O-Bound, а как быть с CPU-Bound!?!? :(
  • Недолюбливаю ORM за неявность, как говорится -Explicit is better than implicit. Дружу с QueryBuilder-ами, частенько пишу на чистом  SQL. 
  • Куда же без реляционной бд - PostgreSQL,  ACID, MVCC, Isolation Levels, vacuum, indexes и конечно не забываем про explain analyze. 
  • В Redis приходилось применять транзакции. Также, обычно в Redis готовлю кеш, сервис проектируется так что без кеша он стабильно работает. Кеш ускоряет обработку запросов но не влияет на отказоустойчивость системы.
  • Понимаю что такое отложенные(асинхроные) задачи и умею их обрабатывать через RabbitMQ(consumer, producer, queue, exchange и тп).

Go

  • Для меня это относительно новый но перспективный язык, быстрый как мотоцикл индиан из известного кино.
  • Пишу pet-project https://github.com/denis-sukhoverkhov/calendar в стиле DDD, с тестами. 
  • Понимаю как устроены goroutines, за счет чего они легковесные, что они есть такое в ОС  и почему им не страшны context-switches.
  • Компилятор Go - круто когда все зависимости собираются в один бинарник. Завидую размерам docker-образов сервисов на Go. В python это боль.
  • Ценю параллелизм из коробки и относительно несложные примитивы синхронизации
  • Язык простой и емкий,  у меня к нему большой интерес, планирую и дальше его изучать и применять в production.

Процессы:

  • Bitbucket, Git и его друзья merge/rebase/ammend/stash/push --force - на каждый день.
  • Jira - стартую релизы, создаю спринты, эпики умею расставлять и умею двигать задачки по дашборду.
  • Confluence - иногда сюда заглядываю в поисках документации, еще реже сам что-то пишу сюда. Мой девиз - само-документируемый код и swagger для API.
  • Умею разрабатывать сервисы самостоятельно, но так-же являюсь командным игроком во всех смыслах
  • Большой опыт работы удаленно, никаких проблем с самодисциплиной у меня нет. Надзиратель не требуется, так как считаю себя ответственным и внимательным к деталям особенно в разработке

Обучение:

Участие в профессиональных сообществах

Опыт работы

  • Продуктовая технологическая компания, создаём высоконагруженные проекты в сфере недвижимости
    Москва · От 100 до 1000 сотрудников
    Ведущий разработчик
    Июль 2018 — По настоящее время (2 года и 6 месяцев)

    Пришел в команду, которая занимается разработкой сервисов для обслуживания ипотеки. 

    Что получилось:

    • После выдачи кредита клиент не теряет каналы коммуникаций с банком, он всегда может решить любой вопрос через нашу платформу - удаленно.  Раньше, удаленного сопровождения ипотеки не было, клиент решал свои вопросы приходя в офис банка физически. Это долго, неудобно и дорого.
    • В личном кабинете заемщика появилось много различных услуг(консультации по телефону в чате, заказ справок и тп) которые клиент может получить удаленно, не приходя в офис банка.
    • Клиенты могут видеть актуальную информацию по своим кредитам(задолженность и тп),

    Моя роль в проектах:

    • Проектирование архитектуры проекта
    • Проектирование БД
    • Написание всевозможного кода
    • Множественные интеграции с внутренними микро-сервисами. 
    • Разработал сервис интеграции с банком.

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

    Что получилось:

    • Сняли часть нагрузки с сотрудников путем автоматического распределения задач по очередям на основании различных факторов - загруженности, умений сотрудников и прочего. 
    • Интеграция с ПФР, позволяющая получить материнский капитал
    • Повышение вовлеченности сотрудников(менеджеров) ипотеки в работу

    Моя роль в проектах:

      • Разработал сервис, с нуля, который занимается распределением задач в авто-матическом режиме следую неким стратегиям распределения.
      • Разработка микро-сервиса для интеграции с ПФР
      • Разработка микро-сервиса геймификации


      • Образовательный IT-портал
        Москва · От 100 до 1000 сотрудников
        Преподаватель Python
        Апрель 2018 — Август 2018 (5 месяцев)

        Спикер курса - "Python". Задачи которыми занимался:

        • Обучение языку программирования python3.6 через вебинары
        • проверка домашних заданий
        • решение задач на python
      • Профессиональные услуги и системная интеграция в области эксплуатации сетей связи
        Москва · От 10 до 100 сотрудников
        Backend разработчик (Python, Django, PostgreSQL, Clickhouse)
        Март 2016 — Апрель 2018 (2 года и 2 месяца)

        Занимался разработкой backend-сервиса с нуля. По сути, долгое время являлся главным разработчиком сервиса.

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

        Задачи:

        • разработка парсеров;
        • проектирование архитектуры проекта;
        • выбор стека разработки;
        • решение 90% бизнес задач;
        • авторизация на angular;
        • деплой проекта.

        Стэк: 

        • python3.6; 
        • Django; 
        • DRF;
        • Celery;
        • PostgreSql; 
        • Clickhouse; 
        • Docker; 
        • angular;
        • Debian. 
      • Курсы по программированию
        Симферополь
        Full-stack developer
        Июнь 2015 — Февраль 2016 (9 месяцев)

        Разрабатывал с нуля проект academy.cppstudio.com, - это интерактивная система обучения языку программирования С++.

        Задачи: 

        • проектирование БД и структуры сайта;
        • разработка бекенда и фронтенда;
        • деплой в продакшен;
        • разработка личного кабинета пользователя (всевозможные формы профиля, изменения пароля и email, визуальных настроек), фронтенд и бэкэнд валидации форм;
        • авторизация/регистрация (через форму и соц сети) - расширение базовой модели пользователя наследованием;
        • разработка view и моделей компиляции и запуска программ С++ через веб сайт;
        • разработка парсера языка С++ с помощью низкоуровневой библиотеки libclang3.7 для написания тестов к урокам (разработка каскада классов с множественным наследованием);
        • защита сервера от вредоносных программ С++: таймлимит, квотирование дискового пространства, ограниченная нагрузка на CPU и т. д.
        • использование Bower для фронтенда;
        • настройка Nginx для отдачи статики gzip, установка base auth;
        • автодеплой проекта: shell-скриптинг, fabric3, supervisorctl;
        • разработка REST-API

        Стэк:

        • python3.4;
        • postgresql;
        • ubuntu;
        • nginx;
        • gunicorn;
        • django;
        • git;
        • supervisor.
      • Москва · От 100 до 1000 сотрудников
        PHP developer
        Апрель 2014 — Октябрь 2015 (1 год и 7 месяцев)

        Разработка backend и frontend частей проекта http://tourclient.ru/.

        Задачи:

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

        Стэк:

        • php5.4
        • PostgreSql
        • Yii
        • svn
      • 3ATDev занимается разработкой веб- и мобильных приложений , обеспечивает долгосрочную поддержку разработанных продуктов
        Севастополь · От 10 до 100 сотрудников
        Junior Web Developer
        Июль 2013 — Ноябрь 2013 (5 месяцев)

        Поддерживал и дорабатывал два проекта:

        Задачи:

        • исправление багов в верстке и в бизнес-логике сайтов;
        • участвовал в разработке проекта  "Автобэкапинг сайтов";
        • разработка контроллеров, представлений и моделей;
        • интеграция внешней БД с InstantCMS.

        Стэк:

        • php5.4
        • CodeIgniter 
        • SVN
        • HTML/CSS
        • InstantCMS
        • MySql

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

      • СНУЯЭиП

        Севастопольский национальный университет ядерной энергии и промышленности; СНИЯЭиП
        Севастополь · 66 выпускников
        Информационных технологий
        Сентябрь 2008 — Июль 2013 (4 года и 10 месяцев)
        Специализированные Компьютерные Системы Диплом специалиста.