Обо мне

Компетентный специалист по C++ с сильными навыками коммуникации. В течение последних 5 лет участвую в разработке программного обеспечения для сложных наукоёмких систем, таких как просвечивающие электронные микроскопы. За это время работал над проектами различного размера и содержания. Стараюсь всегда узнавать что-то новое как о своей профессиональной дисциплине, так и о профессиональной области, и о бизнес-процессах заказчика, засчёт этого развивая и инженерные навыки, и так называемые "soft skills". Обладаю неплохой физмат-подготовкой со времён учёбы на Физтехе (МФТИ), также проходил обучение в Школе Анализа Данных Яндекса, на отделении Computer Science.

Большая часть моего рабочего опыта в эти 5 лет была связана с кодовой базой из 6+ миллионов строк кода с 15-летней историей. Архитектура системы основывается на технологиях, большая часть из которых ныне считается "легаси", что, тем не менее, не мешает создавать хороший продукт.

Основные навыки

  • C++, STL
  • COM, ATL, MFC
  • GUI with C#/WinForms and MFC
  • NUnit + Rhino.Mocks, googlemock
  • Tools: Visual Studio, Rational RTC, Jenkins

Дополнительно

  • boost, хорошее знакомство и интенсивное использование ряда библиотек
  • C#, порядка 10% от общего рабочего времени
  • использование методик разработки, основанной на моделировании, при помощи инструментария от компании Verum, здесь доступно видео, в котором рассказывается о нашем опыте
  • Boost.Test, CPPUnit – только в рамках поддержки существующих тестовых проектов
  • python – беглое знакомство, в рамках чтения/изменения существующей реализации и написания небольших скриптов

За последние годы я пытался пробовать различные языки и технологии, от Java до Haskell, однако не ушёл дальше небольших helloworld-подобных программок, поэтому могу разве что поддержать разговор на тему.

Более детальное описание доступно на Linked.in

Профессиональные навыки
Опыт работы
Системный интегратор, разработчик программного обеспечения
Ведущий Программист
Январь 2016 — По настоящее время (4 года и 10 месяцев)
Должность поменялась вследствие внутренней реорганизации в компании - эта перемена отражает действительную трансформацию моей роли, начавшуюся примерно годом ранее. При том, что весь перечень обязанностей, упомянутый в описании предыдущей позиции, остаётся действительным и поныне, также как и типы проектов, над которыми я работаю, с начала 2015 г. я в большей степени выполняю роль, которую у нас называют "Technical Lead". Это подразумевает: • Большее участие в определении области работ и планировании релизных • Работу над архитектурой: выделение и фиксация лучших практик, выработка, обсуждение и реализация предложений по улучшению • Отслеживание и решение "технического долга" • Наставничество для новых сотрудников, организация технических семинаров и тренингов • Ревью и передача знаний В то же время, примерно половина рабочего времени остаётся на непосредственно разработку, с чуть большим фокусом на сложных проектах и "фичах" с высокой степенью неопределённости. За последнее время я занимался несколькими крупными проектами: • Управляющее ПО для новой вакуумной системы для новой модели электронного микроскопа • Черновое решение для компонента, управляющего электронной пушкой, необходимое для обеспечения возможности проводить эксперименты с разрабатываемым новым оборудованием • Исследование возможностей/прототипирование подхода для решения принципиальной проблемы с различными временами жизни клиентских приложений и сервера с управляющим ПО
Программист
Октябрь 2011 — Декабрь 2015 (4 года и 3 месяца)
Разработка и поддержка ПО верхнего уровня (бизнес-логика, UI etc.) для электронных микроскопов FEI (см. www.fei.com). По большей части работа была связана с управляющим сервером, реализованным на архитектуре, построенной на технологии DCOM + наборе внутренних инфраструктурных фреймворков. Помимо этого, я также был вовлечён в другие части рабочего процесса, такие как: • Выработка и анализ требований, согласования с заинтересованными лицами • Планирование и оценка задач по проектам • Написание тестовых спецификаций, интеграция программного обеспечения с "железом" на стороне заказчика В наиболее крупных проектах, в которых я участвовал за это время: • Был реализован функционал для одной из подсистем микроскопа, дабы обеспечить работу с новым оборудованием и новыми управляющими платами, это решение было интегрировано в действующую (legacy) реализацию • Создан симулятор управляющих плат, а также в рамках созданного фреймворка написаны несколько библиотек для эмуляции firmware и "железа" для нескольких подсистем • Создан ряд UI утилит для нужд сервисного подразделения • Осуществлён рефакторинг и структурные улучшения ряда компонент существующей кодовой базы, включая, в частности, проектирование и реализацию решения, позволившего создать абстрактный HAL уровень, позволивший "отвязать" бизнес-логику от специфики используемого firmware • Произведена миграция на новую среду разработки и новые версии сторонних библиотек (VS2010 --> VS2013, boost 1.43 --> 1.56, также существенные обновления других 3rd parties и большие обновления внутренних библиотек); как ни странно, один из самых напряжённых проектов за всё время
Российское предприятие радиоэлектронного комплекса
Инженер
Февраль 2009 — Июль 2011 (2 года и 6 месяцев)
Обязанности: - Разработка и реализация алгоритмов наземной обработки данных для радиолокаторов с синтезированной апертурой антенны. Достижения: - Реализован алгоритм, позволяющий компенсировать миграцию траекторного сигнала РСА по ячейкам дальности - По данной теме были сделаны доклады на конференциях МФТИ и МИРЭА
Высшее образование
Московский физико-технический институт
Долгопрудный
Факультет: Радиотехники и кибернетики; ФРТК
Январь 2005—Июнь 2011 (6 лет и 5 месяцев)
Дополнительное образование
Бесплатная образовательная программа от компании «Яндекс»
Москва
Январь 2009—Май 2012 (3 года и 4 месяца)