В разработке с 2003 года, начинал с языков C++ Builder, Delphi, PHP. Немного разрабатывал на C#. Последние языки/фреймворки которые использую в работе - golang, python, vuejs.
Есть опыт разворачивания кластеров Kubernetes на bare-metal, с настройкой и внедрением CI/CD на gitlab.
Плотно работал с системами телефонии на базе Asterisk, FreeSwitch, WebRTC.
Из последних технологий, внедряемых для решения задач - cubejs для аналитики и temporal.io для реализации нетривиальных бизнес-процессов.
В последние два года уделял много внимания изучению различных практик по организации процессов разработки и фундаментальные теории (Цель Голдратт и др.) итерационно применяя на текущих процессах комманды.
Придерживаюсь следующих принципов при разработке продукта:
Для меня важно в сотрудничестве с компанией, разделение позиции, что коммуникации и процессы важнее попытки ускорить всех разработчиков, чтоб выдавали как можно больше фич в единицу времени. Вероятно мы не сработаемся, если принципы компании - мерять эффективность программистов через KPI и требовать оценки всех задач в часах, используя это как попытку замотивировать. Либо внедрения карго-культов под названием скрам, в отрыве от реальных проблем.
Открыт для предложений, где 50% участие в архитектурных решения, и 50% менеджмент и процессы. Идеально - роль играющего тренера. Так же рассмотрю и сильный перекос в разработку в интересных продуктах.
Увлекаюсь горными лыжами и вело-туризмом.
При устройстве в компании использовалась купленная платформа написанная на PHP в связке с Asterisk и модифицированная версия с тем же подходом, но новым фреймворком PHP.
Главная проблема - одна связка платформы выдерживала до 150 операторов онлайн в старой версии и до 80 в новой. Первым шагом были заменены коммуникации с Asterisk с php скриптов на go сервисы, что позволило поднять планку по онлайн операторам до 150-200.
Следующим шагом было проектирование с нуля новой платформы, которая поддерживает общий пул операторов с возможностью масштабирования до 1000+. В результате чего коммандой была создана платформа с pbx-серверами на базе FreeSwitch и набором golang сервисов для оркестрации и реализации логики диалпланов.
В первый год. Первые сервисы на golang написал самостоятельно. Для развития бэкенда нанял одного middle golang программиста, постепенно своё участие в разработке на go сводил к минимум. Фронт решено было отделить от проектов на PHP и делать выделенными фронтенд-программистами в едином SPA на vue.js. Для реализации этого был выделен фронтенд разработчик из отдела и привлечён новый middle vue.js программист. Для непрерывной доставки нового бэка и фронта обучил системного администратора линукс-серверов разворачиванию Kubernetes кластеров для staging и production окружения, а так же практикам инфраструктура как код. Настрил CI/CD в gitlab для автоматической доставки новых коммитов в тестовое и боевое окружение.
Второй год. Провёл исследования по проектированию распределённой единой системы телефонии, консультировался со специалистами в этой области и составил план реализации новой платформы. Участвовал в найме voip-инженера, для закрытия потребностей по текущим задачам и новой разработке. Закрыл новую позицию на middle-go программиста.
Что было сделано не очень:
Что было сделано хорошо:
Была поставлена задача - разработать веб-платформу, которая сделает прозрачными процессы колл-центра и будет единым рабочим местом как для операторов, так и административному персоналу.
Личный вклад:
Тех. стэк: Django, can.js, require.js (позже webpack), MongoDB, MySQL, Elasticsearch, Rancher v1 - оркестрация контейнеров, Celery(RabbitMQ), Tornado(для вебсокетов).
В 2018 году Rancher был заменён на Kubernetes.
Главные фейлы:
Достижения:
Был главным разработчиком CRM системы для организаторов мероприятий captis.ru Комманда была из двух full-stack программистов. Занимался постановкой задач, согласованием с заказчиком, code-review и приёмкой.
Бэкенд был написан на Django, а фронтенд на Marionette.js (Backbone.js) и деплоился в Amazon AWS с облачной базой MySQL и инстансами бэкенда в двух регионах.
Старая система биллинга имела ряд недостатков, главный - долгий расчёт выставляемых счетов клиентам. Коллеги спроектировали новую схему БД с набором бизнесовых процедур. На себя взял разработку новых интерфейсов в ранее созданной платформы для гибкого и удобного процесса ведения тарифных планов, тарифных сеток, и др. разделов, которые сократили часы инженеров, занимающихся ведением информации.
Перевёлся в другой отдел для помощи коллегам в разработке интерфейсов к собственной биллинговой системы. Имея опыт строительства больших продуктов на Delphi - спроектировал систему и распараллелил процесс разработки на группу из 3х программистов.
Научился веб-разработке на python (фреймворк Django), до этого сайты писал на PHP (Zend Framework).
Участвовал в разработке основного продукта компании - платформа для комплексной автоматизации крупных оконных предприятий на Delphi.
Так же работал с коммандой над новой версией на языке C#.
Основная кодовая база была написана очень сильными разработчиками. Научился и узнал как строить большие коробочные продукты. Впервые познакомился с применением в промышленной разработке паттернов фабрик и интерфейсов Delphi которые позже пригодились в разработке с нуля нового продукта.
Научился обжимать витую пару и обслуживать СКС.
Через пол года после получения диплома поехал покорять it-компании культурной столицы. Работу нашёл на 5-й день по объявлению в газете, условия были не фонтан, но коллектив калоритный и сильно отличались от коллег заводчан вовлечённостью и профессионализмом.
Стек технологий: Delphi, FireBird, MySQL.
Первая работа программистом во время учёбы в институте.
Здесь впервые научили языку Delphi и работы с большими СУБД с хранимками - Oracle pl/sql. Судя по тому, что база на весь филиал завода была одна и периодически падала - учился за зп инженера в 5тр не только я.
Программное обеспечение вычислительной техники и автоматизированных систем.
Топ учебных проектов:
Дипломная работа - приложение для учёта приборов при ремонте и строительстве судов, которое было внедрено на заводе вместо бумажных карточек. Работа была опубликована в сборнике докладов "Проблемы корабельного машиностроения. Выпуск 4" г.Северодвинск 2005.