Обо мне

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

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

Я слежу за чистотой и форматированием своего кода, не допускаю хаоса табуляций и непонятной смеси английского с нижегородским. Если я сталкиваюсь с непонятным поведением в программе, мне хочется разобраться, почему оно работает именно так, а не иначе, и отладчик вместе с исходными кодами (или Reflector) — мои лучшие помощники в этом.

Опыт работы
Август 2015 — по настоящее время
Собственные сайд-проекты (без заказчика)
Москва
Обязанности и достижения

► HgMetal — формирование cs-файла с текущим статусом проекта в Mercurial-репозитории:
— расчет номера версии от даты последнего changeset по алгоритму, аналогичному стандартному, для автоматического версионирования;
— дата и идентификатор последнего changeset для расшифровки версий;
— опубликованный Nuget-пакет.

► Murasaki (в разработке) — проект-шаблон для сайтов на основе ASP.NET MVC 5:
— собственный механизм управления экземплярами DbContext и TransactionScope на основе идей http://mehdi.me/ambient-dbcontext-in-ef6/
— работа с данными через Repository, отдельный сервис для доступа к потоковым данным (FILESTREAM или потоковое чтение обычного varbinary);
— расширение EF Migration SQL Generator для FILESTREAM-сущностей;
— расширенное форматирование строк (выбор формата по условию от переданного значения, плюрализация, форматирование списков в виде строки и т.п.);
— абстрактная модель результатов исполнения команд для взаимодействия слоев системы и выноса локализации на уровень MVC Controller / MVC View;
— глобализация приложений (ModelValidationProvider для централизованного заполнения соответствующих полей DataAnnotations, ResourceProvider для использования встроенных ресурсов в качестве глобальных, использование globalize.js для фронтенда).

Август 2015 — Март 2017
Интравижн
Веб-разработчик
Москва
Обязанности и достижения

Разработка сайтов для клиентов и коллег АО «Мерседес-Бенц РУС» с применением следующих технологий:
— C# 5.0, .NET 4.5;
— Autofac 4;
— Entity Framework 6 (SQL Server 2008);
— ASP.NET MVC 5, ASP.NET Web API 2;
— HTML 5, CSS 3, Javascript, jQuery;
— Topshelf (также есть опыт работы с System.ServiceProcess.ServiceBase);
— SVN, Git (корпоративная модель ветвления на основе git-flow).

► Разработал AS Platform — единую административную зону веб-проектов послепродажного обслуживания автомобилей (After Sales):
— агрегация заявок клиентов с других проектов After Sales;
— предоставление HTTP API для внутренних сайтов и внешних систем дилеров Мерседес-Бенц;
— внешний сервер аутентификации пользователей веб-интерфейса и HTTP API (OpenID Connect, OAuth 2).

► Создал несколько модулей для имеющего CMF-архитектуру AS Portal — дилерского портала по послепродажному обслуживанию автомобилей. В том числе был разработан генератор маркетинговых материалов:
— генерация PDF-файлов, готовых для печати, на основе заполненных полей выбранного шаблона;
— загрузка и кеширование на сервере больших изображений для их внедрения в PDF-файл;
— создание заготовок шаблонов с частично заполненными полями и блокировка их редактирования;
— соответствие конечных файлов правилам и руководствам по использованию фирменного стиля Daimler AG.

► Исправлял и дополнял функциональность AS Campaigns — портала специальных кампаний послепродажного обслуживания:
— регистрация заказ-нарядов на услуги, запасные части и аксессуары;
— начисление баллов за подтвержденные заказ-наряды, на которые сотрудники приобретают призы;
— различные типы кампаний с собственной бизнес-логикой и схемами начисления баллов;
— внешний сервер аутентификации (по аналогии с AS Platform) и предоставление HTTP API для синхронизации с ним собственной базы пользователей;
— взаимодействие с системой SAP с использованием SOAP-интерфейса и WSDL.

► Участвовал в разработке проектов для владельцев автомобилей Мерседес-Бенц:
— Complete Wheels (продажа колес в сборе);
— Parts Price (проверка цен и наличия запасных частей по артикулу);
— Service Certificate (калькулятор и заказ Сервисного Сертификата на обслуживание автомобиля);
— Service Online (запись на сервисное обслуживание с учетом занятости подъемников СТОА);
— Service Price (калькулятор стоимости сервисного обслуживания).

Осуществлял мелкий рефакторинг legacy-кода в целях понижения связности отдельных модулей, исправления мелких TODO и Warning, а также упорядочивания компонентов. В том числе разработал диспетчер параллельных операций для того, чтобы не допускать одновременного выполнения полезной нагрузки и очистки кеша. Также была создана подсистема работы с данными, хранящимися в SQL Server FILESTREAM, без необходимости их полной загрузки в память.

Проводил простой анализ производительности, поиск и ликвидацию "бутылочных горлышек" в нескольких проектах при помощи ab и dotMemory / dotTrace.

Участвовал в обсуждениях с коллегами нюансов тех или иных технологий, в том числе способствовал внедрению семантического версионирования в проектах компании (предложил и защитил идею, а также составил описания для project manager'ов и разработчиков). Помогал новым коллегам вливаться в рабочий процесс и в используемые нами технологии, даже довелось провести несколько code review с объяснениями, что не так, почему это плохо, и как делать лучше.

Август 2011 — Июнь 2015
Московский институт энергобезопасности и энергосбережения
Администратор систем дистанционного обучения
Москва
Обязанности и достижения

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

Разработал оболочку для электронных образовательных курсов, распространяемых на компакт-дисках, для обучения студентов Института, не обладающих постоянным подключением к интернету, а также редактор с возможностью импорта уже разработанных курсов из Moodle.

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

Спроектировал, сверстал и настроил новые версии сайтов Института на основе MODX Revolution.

Поддерживал и исправлял ошибки (либо находил пути их обхода) в программном обеспечении, используемом в Институте (Moodle и его расширения, система создания и анализа учебных планов, система подготовки и печати дипломов). В частности, провел обновление и настройку программного обеспечения веб-сервера Института (Apple Xserve).

Май 2008 — Июнь 2011
Без официального трудоустройства
Москва
Обязанности и достижения

Разработал сайт дисциплины «Математика» и систему тестирования студентов, вопросы для которой загружались из специально отформатированных файлов MHTML, создаваемых Microsoft Word (компенсация отсутствия TeX и иных средств отрисовки формул на сервере), а также внедрил систему рейтинга студентов на основе оценок из системы тестирования.

Основной преследуемой целью было изучение принципов ООП и проектирования приложений (в частности, веб-сайтов и веб-приложений).

Высшее образование
Сентябрь 2008 — Июль 2013
УРАО
Информационных технологий
Москва
Специализация и достижения

Специальность «Прикладная математика и информатика». Закончил обучение с красным дипломом. Присвоена квалификация «математик, системный программист».

Среднее специальное образование
Сентябрь 2007 — Июль 2011
техн., Московский приборостроительный
Москва
Специализация и достижения

Специальность «Программное обеспечение вычислительной техники и автоматизированных систем». Закончил обучение с красным дипломом.

Во время обучения в техникуме являлся двукратным призером Всероссийских олимпиад по программированию среди студентов СПО (3 место в 2009 году, 2 место в 2011 году).