Читаете ли вы блог Хабр Карьеры? Если да — оцените, как мы справляемся. А если нет — расскажите, что читаете для развития карьеры. Пройти опрос (займет 5-7 минут)
Обо мне

Разработчик с многолетним опытом работы как в крупных корпоративных проектах, так и в создании небольших решений, а так же интеграции различных систем. За все время освоил множество языков, платформ, методологий, среди которых Java, Python, C++, DDD, TDD и другие. Наибольший опытом обладаю в сфере Web технологий как fullstack разработчик на платформе C#/.Net (Core) + Angular, React.

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

Могу с нуля поднять инфраструктуру для разработки и процесс доставки разрабатываемого продукта пользователям. Всегда ответственно подхожу с создаваемым решениям как во время разработки, так и в стадии поддержки.

Интересуюсь IoT-технологиями, робототехникой, занимаюсь макетированием на Arduino, самостоятельно разбираюсь с низкоуровневыми протоколами.

Люблю погружаться в новые технологии и затем применять их на практике. Существующий опыт позволяет легко разобраться с ранее незнакомыми системами, платформами, языками, проводить реверсинжиниринг с целью отладки и поиска ошибок в самых сложных ситуациях. Люблю работать в команде, постоянно взаимодействовать с людьми и вместе создавать прекрасные продукты.

Мечтаю работать в fullstack ниндзя команде, которая решает текущие проблемы быстро и эффективно без привязки к какой-либо платформе, которая может прийти на проект, загубленный предыдущей командой, и оставить после себя отличное поддерживаемое решение. Хочется, чтобы результат радовал многих пользователей и его можно было ощутить на себе. Был бы рад поучаствовать в IoT проекте.

Профессиональные навыки
Опыт работы
Текущее место
Москва
Ведущий разработчик (техлид)
Декабрь 2018 — По настоящее время (1 год и 8 месяцев)

Технологии: ASP.NET Core/.Net Core 2.2, C# 7, Angular 2+, DevExtreme, PostgreSQL + Postgis, EF Core (+миграции), Docker, ELK (logging), Xamarin, Jira, Git, Jenkins, Docker, Linux.

Продолжил разработку ERP системы, которую начал в 2017 г. (см. предыдущее место работы), в штате заказчика поскольку у него появилась большая заинтересованность в расширении функционала, и в этот момент расширялся IT департамент.

Развернул с нуля интегрированную инфраструктуру для разработки (Gitlab+Jira+Jenkins+Docker+ELK), перевел ERP приложение с внешнего хостинга на внутренний.

В рамках расширения команды провел более 10 собеседований, в результате чего была доукомплектована команда разработки. Построил процесс разработки в команде, в который входил единый стиль разработки, парное программирование, ревью кода. Принимал непосредственное участие в становлении Agile процесса внутри департамента. Участвовал в планировании спринтов, анализе задач, взаимодействовал с представителями бизнеса и аналитиками при составлении задач и планировании. Каждый спринт был согласован с бизнесом, и задачи, которые анонсировались, выполнялись командой в оговоренный срок.

Для обеспечения эффективной командной работы и большей поддерживаемости кода в будущем, пересмотрел подходы в разработке, провел масштабный рефакторинг существующего кода, применил принципы DDD и TDD, внедрил Swagger, Automapper, обновил версии библиотек до актуальных. Выделил большой объем общего кода в git-submodules для использования в разработке других систем компании. На стороне Angular улучшил компонентную модель, выделил изолированные области для обеспечения защиты данных.

Были переработаны и оптимизированы многие запросы к БД Postgresql, внедрена более точная работа с транзакциями. Разработаны DomainEvent подсистема и подсистема гарантированных действий на базе SQL для оптимизации слоя интеграции. Была внедрена инфраструктура для работы с гео-данными на базе postgis, использовались различные подходы для оптимизации сложных гео-запросов и отображения гео-данных на карте в интерфейсе.

Разработана с нуля биллинговая система для одного из подразделений компании, которая плотно интегрируется с остальными сервисами в едином информационном поле. Занимался первоначальной аналитикой предметной области, сбором информации у пользователей, выработкой юзер-стори и эпиков, прорабатывал архитектуру, создал каркас приложения на стеке .net core + ef core + angualr с использованием TDD и DDD, затем вместе с другим разработчиком продолжил разработку. У проекта был чёткий срок, который был определен после анализа задачи, команда выполнила проект ровно в срок. Были получены положительные отзывы от пользователей и ощутимый для бизнеса результат после внедрения приложения.

Вел в роли техлида аутсорс проект, формировал технические требования к нему, участвовал в выработке архитектуры и каркаса приложения, осуществлял приемку кода через merge request'ы.

Создал сервис генерации документов по шаблону, используя существующий функционал системы документооборота. В ней самой не был предусмотрен такой сервис, поэтому мной был разработан plugin, который открывал endpoint и занимался непосредственно генерацией, и разработан промежуточный proxy сервис. Особенностью было то, что внутренний движок работал только со статическими типами данных (скомпилированные классы), а на вход сервис должен был принимать динамический JSON. Был разработан механизм генерации .net класса по JSON, его компиляция и передача в движок.

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

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

Создал прототип Android приложения на платформе Xamarin. Несколько форм + сервис генерации документа по шаблону.

Chessres
Москва
Frontend разработчик
Октябрь 2017 — Апрель 2018 (7 месяцев)

Домашний проект по управлению шахматными турнирами. Реализовывался совместно с несколькими специалистами, в основном для изучения новых технологий. Участвовал в качестве frontend разработчика на React (+ поддержка backend на Node), было построено полноценное веб приложение, выполняющее основной usecase проекта.

Проект пытался привлечь инвестиции. Пока что заморожен.

Издаем компьютерные и мобильные игры, развиваем веб-сервисы и информационно-игровой портал
Ведущий .Net разработчик
Апрель 2017 — Декабрь 2018 (1 год и 9 месяцев)

 - Разрабатывал с нуля ERP систему для сторонней компании заказчика. Был единственным разработчиком на проекте, непосредственно участвовал в принятии решений по разработке, анализировал текущие бизнес-процессы компании, совместно с бизнес-аналитиком компании определял объем работ и сроки исполнения. Рабочее решение, согласно требованиям заказчика, было выпущено в срок через 3 месяца после начала работы и успешно внедрено в бизнес-процессы. Затем в течение еще 7 месяцев дорабатывалось с учетом пожеланий заказчика. После чего доработки были приостановлены и проект продолжил свою работу с минимальной поддержкой. 

Система интегрирована с 1С, с внутренней системой документооборота заказчика, и сама предоставляет API для интеграции с другими сервисами заказчика.
Система разворачивается под Linux, доставляется посредством docker, горизонтально масштабируется, хорошо администрируется, обеспечен вход через домен заказчика, ролевая модель доступа согласно модели AD заказчика.

Технологии: ASP.NET Core/.Net Core, C# 7, Angular 2, DevExtreme, PostgreSQL, EF Core (+миграции), Docker, ELK (logging).

В команде проектов компании:

- Участвовал в разработке десктоп приложения для управления установленными играми пользователя из основного проекта компании. Прорабатывал взаимодействие backend части приложения с сайтом запущенным внутри приложения, работал с Windows API, устранял различные странные баги связанные с работой под антивирусом, под различными версиями Windows. Использовал windbg для отладки ряда проблем. Написал распаковщик установщика на C++, написал основную логику установщика. Разработал инфраструктуру для версионирования приложения, доставки новых версий и их установки. 

Технологии: .NET4.7/C# 7, WPF, ReactiveUI, DotNetBrowser. (4game.com)

- Прорабатывал решение для realtime парсинга логов онлайн игр. Разработал 3 решения:

  1. Драйвер файловой системы для перехвата операции записи буфера в файл и перенаправления в специальный сервис по сокетам (С++).
  2. Инъекция кода в процесс, который пишет лог, с цель переопределения системной функции записи в файл и перенаправления буфера по сокетам (С++).
  3. Использование kafka-connect для отслеживания файлов в папке с логами, затем отслеживание операций записи с этим файлом и направление новых строк в kafka, которая затем разбирается другим сервисом. Для этого мной была разработана Java библиотека полностью удовлетворяющая требованиям нагрузки.

В дальнейшем было использовано решение 3, которое позволяло масштабироваться под требуемую нагрузку, создавать необходимую инфраструктуру для конкретного проекта и быстро внедрять новые.

- Участвовал в поддержке основной системы компании, ревью кода в команде, участие в проектировании.

We help people better understand themselves and each other
Руководитель отдела лингвистики
Июнь 2016 — Апрель 2017 (11 месяцев)

Руководил лингвистическим направлением RnD компании. В мои задачи входило:

- Разработка модулей интеграции сервисов анализа текста в основную систему компании. Модули писались на C#/.Net, хорошо документировались и тестировались. 

- Разработка вспомогательного программного обеспечения для интеграции результатов работы лингвистов в систему. Создал на Java socket-сервер, который позволял распараллелить процесс обработки тысяч текстов для продакшн окружения, за счет изоляции множества однопоточных обработчиков, что в среднем дало прирост производительности на большом количестве текстов в 50 раз. Доработал third-party модули обработки текстов на Java, которые в ряде конкретных случаев давали неверные результаты, что позволило повысить качество продукта без привлечения сторонних разработчиков.

- Разработка системы анализа речи, извлечения текста из речи. Был заработан MVP проект, который с помощью библиотеки ffmpeg и библиотек ASR партнеров позволял извлекать текст из потока речи с заданными ограничениями и допущениями. ASP.NET API, C#.

- Руководство командой, работа в Agile с недельными спринтами, постановка задач в условиях отсутствия бизнес-требований (RnD), ведение отчетности, проведение исследований.

- Разработка и тестирование новых подходов Machine Learning для обработки моделей текстов, статистический анализ, построение полноценных предикционных моделей и их оптимизация, тесное взаимодействие с математиками. Был разработан непрерывный pipeline для тестирования подходов анализа текста и ML моделей с выводом результата в виде отчета Excel. Python3.0, Jupyter, IPython, SciPy. 

НТЦ "Поиск-ИТ"
Москва
Ведущий .Net разработчик
Март 2012 — Август 2016 (4 года и 6 месяцев)

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

  1. Была разработана крупная ERP-система управления гос. предприятием.  Silverlight + DevExpress - web-client, ASP.Net + ЛИНТЕР БД - server-side. Разрабатывал пользовательские контролы различной сложности, дорабатывал базовую UI библиотеку DevExpress под свои нужды, прорабатывал вместе с заказчиком варианты использования продукта. Была разработана система составления схем оборудования заказчика на Silverlight с различными типами оборудования, связями и способами соединений.
  2. Разрабатывалась с нуля система управления документооборотом подразделения. Система являлась частью большого проекта с множеством соисполнителей и смежных сервисов. Выступал на проекте в качестве руководителя команды разработки (2 разработчика и тестировщик) и, помимо выполнения задач разработчика, контролировал процесс исполнения проекта командой, составлял локальные ТЗ на разработку на основе требований заказчика и консультаций с бизнес-аналитиками, разрабатывал техническую документацию на проект. Мной был разработан основной каркас системы, приняты решения об используемых технологиях, среди которых были: ASP.Net MVC 5 (CodeFirst, jQuery, DevExpress) - Web-приложение, WPF application - десктопное приложение, SignalR - как средство доставки мгновенных оповещений от системы. Так же был разработан слой взаимодействия с нативными библиотеками от соисполнителей, которые использовались в качестве транспортной инфраструктуры для внутренних сообщений системы. 
  3. Разрабатывалась с нуля система специального документооборота для предприятия. Руководил командой разработки, разработал основной каркас системы, участвовал на допроектных этапах разработки основного ТЗ, участвовал в разработке технической документации на основе ГОСТ. Одним из отличительных особенностей системы была возможность работы совместно с системой извлечения информации из текста ABBY Compreno. Был построен полный цикл обработки документа от бумаги до графа, моделирующего извлеченную информацию из текста. В результате плотного и результативного взаимодействия с заказчиком, была построена дееспособная система, которая полностью удовлетворяла нуждам предприятия. В рамках системы были разработаны подсистема аутентификации пользователей на основе OAuth2.0/OpenIdConnect, подсистема разграничения доступа к ресурсам на основе бизнес-логики предприятия, виртуализирована файловая система серверов хранения. Были разработаны плагины к MS Word, которые позволяли редактировать документы системы непосредственно в редакторе. Технологии: ASP.NET Web API - backend, ASP.NET MVC + jQuery + JavaScript modules + s3 - front-end, IdentityServer - OAuth, ElasticSearch - хранилище + полнотекстовый поиск, ABBYY FineReader, ABBYY FlexiCapture, ABBYY Compreno - OCR + TextMining.

Гарантсервис
Москва
.Net разработчик
Май 2010 — Февраль 2012 (1 год и 10 месяцев)

Разрабатывалась с нуля большая система оценки рисков и повреждений при ЧС. Система поддерживала лицензирование, плагины, генерацию отчетов в MS Office, работу с внешними сервисами и интеграцию с системой картографии. 

Выполнял задачи по описанию научных методик в коде на C#. Лично переписал интерфейс системы (WPF разметка, стили, поведение) в качестве адаптации продукта для другого заказчика. Для системы лицензирования разработал Web сервис с админкой на ASP.NET MVC.

В качестве одного из исследований для построения сложных отчетов, мной был опробован механизм рендеринга DirectX в WPF контрол.

Была разработана система 3D визуализации проистекания жидкости по поверхности земли так же на WPF.

Технологии: .NET 3.5, WPF, WCF, Linq, ADO.NET, Entity Framework, T-SQL, ASP .NET MVC.

Отдел информационных технологий МГГУ
Москва
Оператор технической поддержки
Сентябрь 2008 — Апрель 2010 (1 год и 8 месяцев)

Обслуживание компьютеров университета, обучение персонала работе с компьютером, учет единиц компьютерной техники.

Высшее образование
Московский государственный горный университет
Москва
Факультет: Автоматизации и информатики
Сентябрь 2007—Июнь 2012 (4 года и 9 месяцев)

Системы Автоматизированного Проектирования