Резюме: Программист C# .Net
Ссылка на резюме в более читабельном формате PDF вынесена в раздел "контактные данные|, поскольку согласно правилам этого сайта резюме не должно содержать лич ные данные и ссылки на внешние ресурсы.
Разработчик бэкендов на .Net C# со знаниями React
Опытный разработчик с более чем 25 годами опыта
в создании корпоративных систем и клиент-серверных приложений для разных предметных областей.
Ключевые навыки: .NET backend разработка (ASP.NET Core и Sockets), Микросервисная архитектура, разработка кросс-платформенных приложений на .NET MAUI, C++ , Unity3d/C#
Второстепенные навыки: React (фронтенд), Go, 1С предприятие 8.3, .Net Winforms, .Net WPF, Docker, Kubernetes, интеграция с сервисами Google Play.
iOs и Android: есть опыт разработки и сборки приложений под iOs и Android на Unity3d и публикации в AppleStore и GooglePlay с интеграцией внутриигровых покупок и сервисов рекламных интеграторов
Остальное перечислено в разделе “Навыки” (Skills)
Контактная информация:
Телефон: +79516686248
Email: khkjobscontact@yandex.ru
Telegram: @khkcontact
LinkedIn: www.linkedin.com/in/constantinekh
MAX (Предпочтительный способ связи )
https://max.ru/u/f9LHodD0cOIF6qf5aNcyDQ2Fco5VjUOmOsv_ifniRcPPgOXgIJhJjeqkRec
Предпочтительный режим работы: удаленно.
Допустимость гибридной или офисной работы: возможна в Санкт-Петербурге.
Возможность релокации: возможна.
Оформление: предпочтительно оформление по ТК, возможно оформление через контракт со мной как с ИП (на НПД).
Общий опыт профессиональной разработки программного обеспечения - более 25 лет.
-Опытный разработчик .NET/C# backend с микросервисной архитектурой(с опытом переработки монолитной архитектуры в микросервисную) для корпоративных систем, систем документооборота, специализированных CRM и ERP, а также для игр
-frontend (React.JS) developer (второстепенный навык, нужен как бэкендеру).
-Опытный (несколько крупных проектов) разработчик клиент-серверных GUI приложений .NET/C# WPF и MAUI
-Начинающий Golang developer.
-Начинающий программист 1С Предприятие (курсы Томского государственного университета)
-Опытный (более 10 лет, десятки проектов) разработчик Unity3D/C# и бэкендов к играм на ASP.NET Web API и на основе сокетов.
-Опытный (более 10 лет, включая Alcatel Lucent и Motorola) разработчик C++ (C++ &STL 98,11,17,20; OpenCV, Boost ASIO, Boost Threads)
Есть опыт выполнения обязанностей бизнес-аналитика, системного аналитика, архитектора, ведущего разработчика и тимлида на коммерческих проектах. Второе высшее – менеджмент, пройдены курсы повышения квалификации по специальности руководитель проектов, получен сертификат международного образца: Geprüfte/r Projektmanager/in (Akademie für Wirtschaft) Hochschulzertifikat certificate: 15 ECTS (Германия)).
Английский язык: уровень B2 - позволяет работать в интернациональных командах, общаясь с англоговорящими коллегами и заказчиками. Проверено на практике многолетней работой на фрилансе как по заказам напрямую, так и через Upwork
Китайский язык: уровень HSK0 (но с удовольствием и интересом изучу).
Цель: позиция разработчика бэкендов
и клиент-серверных приложений на .Net
Ищу работу разработчика бэкендов на .NET/C# и клиент-серверных приложений на .Net/C#. Дополнительно могу поддерживать актуальность фронтенда (React и другие) при изменениях на бэкенде .
Благодаря опыту интеграции с аппаратным обеспечениям из приложений на .Net и знаниям C++, могу принимать участие и в интеграции устройств считывания информации или разработке программно-аппаратных комплексов типа автоматизированных складов.
Интересует прежде всего работа удаленно, но возможна и работа в офисе в Санкт-Петербурге.
Предпочтителен трудовой контракт на длительный срок, но также заинтересован в краткосрочной контрактной работе с заключением договора на разработку конкретного продукта как с ИП. У меня уже открыто ИП на НПД с основным видом деятельности “Разработка компьютерного программного обеспечения” и сопутствующими дополнительными видами деятельности.
Ключевой опыт (Summary)
Имею более 10 лет опыта разработки программного обеспечения в экосистеме .NET, включая клиент-серверные приложения и серверную часть на ASP.NET для корпоративного сектора и бэкенды к играм, включая системы со взаимодействием пользователей в реальном времени.
Этот опыт включает как опыт проектирования и разработки бэкендов с микросервисной архитектурой к ним, так и опыт переработки монолитной системы в систему с микросервисной архитектурой с использованием подхода “Strangler(душитель)” для поэтапной замены частей монолита микросервисами до полного вывода старого кода из эксплуатации, с сохранением работоспособности клиентской части за счёт создания фасада, перенаправляющего часть запросов на монолит, а часть - на микросервисы.
Мой опыт разработки клиент-серверных приложений на Winforms, WPF и MAUI позволяет мне как разрабатывать новые приложения, в том числе для мобильных платформ, так и сопровождать устаревшие.
Так же могут оказаться полезными мои знания frontend: не могу назвать себя опытным frontend-разработчиком, но в состоянии сам исправить поломки frontend вследствие внесенных мною изменений в backend.
В целом мой опыт разработки программного обеспечения превышает 25 лет. Включает в себя использование самых разных технологий и для самых разных предметных областей, в компаниях с масштабами от индивидуальной разработки на заказ и маленьких стартапов и до международных корпораций (Alcatel-Lucent, Motorola, Blue Phoenix).
За это время я принимал участие в десятках проектов, имеющих большую и запутанную унаследованную недокументированную кодовую базу, проводя глубокую переработку прежде всего ради радикального долгосрочного снижения трудоемкости развития программного продукта и упрощения поиска ошибок, а значит – снижения стоимости разработки. В резюме более подробно описан опыт стабилизации и рефакторинга высоконагруженных legacy систем (C++, C#), в том числе и в проектах международных корпораций.
Однако моя более сильная сторона – это проектирование и разработка программного обеспечения с нуля: от стадии анализа и формализации пожеланий заказчика и потребностей бизнеса, разработки прототипа/MVP продукта с использованием наиболее подходящей технологии (с освоением новой при необходимости – привычка из тех времен, когда считалось, что технология должна подбираться под задачу, а программист должен ее освоить при необходимости) и разработкой продуктовой версии до стадии публикации в GooglePlay/AppStore или организации внедрения в компании-заказчике, включая организацию обучения персонала, разработку пользовательских инструкций и дальнейшее сопровождения разработанной системы.
При этом многие из проектов, начатые мною как разработка прототипа на заказ для демонстрации инвесторам, я же и масштабировал после получения финансирования уже в роли руководителя небольшой команды – проводя поиск новых членов команды, onboarding и обучение дополнительных программистов и настраивая процессы разработки.
Навыки (Skills)
Основные языки программирования: C#, C++
Вспомогательные языки программирования: SQL (PostgreSQL, MS SQL), GoLang, Python, JavaScript, TypeScript, Lua
Инструменты разработчика: Git, Docker, Kubernetes, Visual Studio,
Фреймворки и библиотеки: .Net 3.5, 4.x, .Net Core, .Net 6,7,8,9; ASP.NET Core;
MediatR ( для Command Query Responsibility Segregation), SignalR (для дуплексного клиент-серверного взаимодействия в ASP.NET), gRPC, Swagger
Клиент-серверные приложения: Winforms,WPF, AvaloniaUI, MAUI,
ORM: EntityFramework, Dapper, а также самостоятельный маппинг без ORM через NpSQL и ADO.NET
Брокеры сообщений RabbitMQ, Kafka
Веб-программирование: React.JS
Использование AI в работе: использую те инструменты, которые приняты в конкретной команде и так, как это принято в этой команде. Обычно это Copilot и Claude как плагины к Visual Studio Code/Microsoft Visual Studio и CLI.
Чаще всего встречается GitHub copilot: в роли продвинутой системы code completion и интеллектуального поиска по кодовой базе.
Иногда встречается Claude Code – более полезен. Из IDE иногда использую Cursor, но предпочитаю Visual Studio (или Visual Code) в сочетании с плагинами. Экспериментирую и с другими моделями.
- Unity3d/C#: примерно 10 лет опыта разработки для игр практически всех жанров, преимущественно для мобильных платформ и WebGl и с использованием большинства фич Unity3d и популярных плагинов.VContainer,Zenject
UniTask, UniRx, LeoEcs, а также DOTS.
Также есть опыт интеграции с аппаратным обеспечением: получен при участии в разработке аттракционов, симуляторов и тренажеров в качестве разработчика Unity3d/C#, клиент-серверных приложений на .NET и бэкендов на .NET. К примеру, использование устройств www.marvelmind.com для отслеживания в реальном времени позиции поезда, движущегося по территории парка аттракционов или взаимодействие с имитацией кабины транспортного средства с ее рычагами, штурвалами и тумблерами.
- Как бэкенд-разработчик, я в настоящее время занимаюсь преимущественно бэкендами с архитектурой микросервисов (ASP.NET Web API, сокеты, SignalR, RabbitMQ, Kafka, gRPC, Redis, PostgreSQL, MS SQL) для корпоративных систем, а также для игр (например, для проекта Sumo tatami https://store.steampowered.com/app/3395290/SUMO_TATAMI/ - многопользовательские гонки/шутер, я реализовал на основе legacy как игровой сервер реального времени, так и службы для хранения пользовательских данных и трасс, созданных пользователями (в игре есть конструктор уровней) ).
Также у меня есть некоторый опыт работы с Go, поскольку этот язык может быть очень полезен для инфраструктурных задач и вычислительных микросервисов в сочетании с ASP.NET для работы с данными и сложной бизнес-логики, а также очень полезен при использовании сервера Nakama с открытым исходным кодом (популярный бэкенд для многопользовательских игр в реальном времени, разработанный на Go).
- Как разработчик клиент-серверных приложений, я обладаю богатым опытом создания таких приложений с использованием различных инструментов и технологий графического интерфейса, включая как современные фреймворки .Net, так и устаревшие инструменты - такие как Borland C++ Builder, Delphi, .Net Winforms, .Net Silverlight. В настоящее время я использую AvaloniaUI для кроссплатформенных десктопных приложений и MAUI для Android, но у меня также есть опыт разработки графических приложений на основе современной платформы WPF.
- Как веб-разработчик, я умею обновлять компоненты фронтенда в соответствии с изменениями, которые вношу в бэкенд. Я делал это для фронтендов, разработанных с использованием различных фреймворков (React.JS, Angular, Vue), но лучше всего я знаком с React
- Как 1С разработчик, я обладаю базовыми знаниями разработки в этой системе: прошел курсы от Томского Государственного Университета по разработке на 1С, и коммерческого опыта разработки для этой системы не имею. Зато имею обширный опыт разработки клиент-серверных приложений для автоматизации бизнес-процессов предприятий с использованием других средств разработки, и потому могу быть полезным и как разработчик 1С, особенно при интеграции систем на .Net с продуктами 1C.
- Как разработчик на C++: имею опыт разработки для разных предметных областей, начиная с разработки в 1994-1996 гг объектно-ориентированных библиотек классов на C++ для упрощения (по сравнению с Fortran) проведения научных расчетов по математическим моделям магнитогидродинамических течений слабопроводящего газа.
Последующие годы использование этого языка включало в себя
- разработку клиент-серверных приложений на Borland Builder C++ (аналог Delphi, но в основе C++, а не Pascal),
- работу в Motorola над прошивками телефонов с платформой P2K (Motorola RAZR V3, PEBL, V1000 и др, операционная система реального времени),
- работу в Alcatel-Lucent над многопоточным высоконагруженным сервисом,
- разработку IDE для специализированного языка программирования,
- интеграцию оборудования и библиотек типа OpenCV, FFMPEG в .Net/C# и Unity3d/c# .
- Знание языка Lua: использовал в качестве cкриптового, встроенного мной в проприетарный игровой движок на С++ для игр в жанрах “Hidden Objects” и “Point-and-click” для компании G5 games.
- Знание языка Python: в основном используетcя мной для изучения API с помощью примеров на Python, например для экспериментов с YOLO (система машинного обучения для обнаружения и классификации объектов на изображениях).
-Soft skiils:
Я часто разрабатывал для клиентов MVP, чтобы они могли показать результат инвесторам, составляя описание их пожеланий и разрабатывая более детальные дизайн-документы на предпроектной стадии самостоятельно.
В случае получения достаточных инвестиций на разработку полной версии продукта, я участвовал в подборе персонала и руководил командой разработчиков, в том числе курировал и обучал младших программистов из Пакистана и Индии, а также контролировал работу фрилансеров, тестировал и интегрировал их наработки.
Есть опыт организации работы IT подразделения в университете, запуска филиала локальной команды разработки для зарубежной IT-компании, а также поиска заказчика и организации команды из фрилансеров для выполнения проекта для заказчика.
А также есть опыт внедрения в командах управленческих практик - таких, как вариации Scrum или модерируемые “peer-to-peer review”
Для всего этого нужно то, что HR часто называют “soft skills”.
Так что управленческий опыт, а вместе с тем и умение писать документы и взаимодействовать с членами команды, клиентами, инвесторами, а также опыт контроля сторонних исполнителей, работающих дистанционно и обучение Junior Developer, у меня имеются в достаточно высокой степени для участия в разработке программного обеспечения.
ОБРАЗОВАНИЕ
1. Высшее, специальность по диплому: Математик Год окончания: 1995
Г. Владивосток
ВУЗ: Дальневосточный Государственный Университет (сейчас – Дальневосточный Федеральный Университет)
Факультет математики и компьютерных наук,
специализация: прикладная математика, кафедра математического моделирования,
дипломный проект: численное исследование МГД-течения слабопроводящего газа
2. Высшее, специальность по диплому: менеджер Год окончания: 1999
Г. Владивосток
ВУЗ: Владивостокский Государственный Университет Экономики и Сервиса (сейчас – Владивостокский Государственный Университет)
Факультет экономики и управления,
специализация: организационное проектирование и оптимизация процессов управления предприятием
дипломный проект: Разработка программного комплекса по автоматизации управленческих процессов на предприятиях ФПС ПК
3. Корпоративные курсы Motorola University для контракторов Motorola inc.
Год окончания: 2006
г. Владивосток
по темам:
- Six Sigma process Development methodology for software development – Motorola University training
- Capability Maturity Model Integration – Motorola University training
4. Курсы повышения квалификации, специальность в свидетельстве: руководитель проектов
Год окончания: 2009
Санкт-Петербург
Открытая Школа Бизнеса (https://obs.ru/prof/areas_of_training/project_management ) совместно с AFW Wirtschaftsakademie Bad Harzburg GmbH (Германия)
Свидетельство о повышении квалификации, государственного образца РФ
Международный сертификат подтверждения квалификации: Geprüfte/r Projektmanager/in (Akademie für Wirtschaft) Hochschulzertifikat certificate: 15 ECTS (Германия)
5. Курсы повышения квалификации: разработчик 1С
Томский Государственный Университет Дата окончания: 07/2026
(прохожу сейчас дистанционно)
Оглавление к опыту работы
Текущие проекты 14
“Работа на смене” (для операторов колл-центра), кросс-платформенное клиент-серверное приложение и бэкенд) (.Net/C#)
"Тайны Санкт-Петербурга": бэкенд(.NET/C# ) и социальное приложение с мгновенными сообщениями и уведомлениями о событиях для групп пользователей
Корпоративные системы и приложения: разработка на C#/.NET с 2012 по 2026 15
Проект системы документооборота и бюджетирования: переработка бэкенда c монолитной архитектурой в микросервисную (ASP.NET) 15
Разработка API Gateway для системы оценки соответствия макетов уличной рекламы законодательству РФ 17
Редактор WYSIWYG шаблонов писем массовой рассылки (WPF, Silverlight) 17
CRM для доставки запчастей на заказ 18
ОПЫТ РАЗРАБОТКИ БЭКЕНДОВ НА .NET(C#) ДЛЯ ИГР И СИМУЛЯТОРОВ НА UNITY3D/С# с 2012 по 2026 19
"Sumo Tatami": Серверная часть (.NET/C# ) и сетевое взаимодействие в Unity3d для Многопользовательских гонок с элементами шутера 20
"Summoner Battles": игровой сервер (.NET/C#) и многопользовательский карточный батлер на Unity3d/C# Ошибка! Закладка не определена.
"Ganja Farmer": Сервер для сохранения состояния игры и данных пользователя (.NET/C#) для симулятора развития фермы 21
"Tanks Online": портирование известной многопользовательской игры в танки (Альтернатива Геймс) на Unity3D (сетевое взаимодействие со стороны Unity3d и анализ архитектуры высоконагруженного сервера популярной игры в реальном времени ) 21
Сервер для мобильного интерактивного геогида с элементами AR. По заказу "Московские Музеи" и Эрмитажа 23
Flyy Metaverse: сервер(.NET/C#) для социального приложение с использованием геолокации и элементов AR 24 Другие приложения с использованием дополненной реальности 26 Подборка видеоклипов моих работ к этому разделу 26
Проекты для AR “Paranormal activity finder”, “Grisly Treasure Hunter”.“ARWall Tap2Art art online shop” 26
"ARZombi": Первый AR шутер в мире, реализованный на ARKit 26
“Space invaders”: проверка реализуемости игр в жанре МНОГОПОЛЬЗОВАТЕЛЬСКИЙ AR-шутер 27
Виртуальная реальность, симуляторы транспортных средств, интеграция с нестандартным и экспериментальным оборудованием, игры в экзотических жанрах 27
Разработка на C++ с 2005 по 2012 30
G5 entertainment: разработка шаблонов для игр в жанрах Hidden objects, point-and-click quests (C++ and LUA embedded) 30
BridgeQuest/Phoenix corp: IDE для проекта APPBuilder для кросс-платформенной разработки 30
Alcatel-Lucent Enterprise: Synchronization Server Bi-Directional (часть программного обеспечения колл-центров, основанных на аппаратном обеспечении производства Alcatel ( Private Branch eXchange ) 31
Motorola inc.: технический руководитель одной из рабочих групп, участвующих в рвзработке прошивок (firmware) для мобильных телефонов Motorola, использующих платформу P2000 (RAZR v3,v6,v9) 34
Прочий опыт разработки программного обеспечения: 1998 - 2005 36
- руководитель Владивостокской команды Polyoptimum ltd.
Project ProAct: клиент-серверное приложение для управления персоналом и составления смен персонала в госпиталях Канады, Австралии и США.
- Руководитель Отдела применения информационных технологий в учебном процессе (разновидность проектного офиса по своим функциям), Владивостокский Государственный Университет Экономики и Сервиса.
-Старший инженер-программист и бизнес-аналитик, Владивостокский Судоремонтный Завод.
Проектирование, разработка и внедрение информационной системы для управления проектами по судоремонту.
-Старший инженер-программист и бизнес-аналитик, Управление Федеральной почтовой связи Приморского Края.
Проектирование, разработка и внедрение информационной системы для автоматизации процессов, связанных с подпиской на печатную продукцию, формирования консолидированных заказов в издательства, междугородней передачи данных в электронном виде (без использования Интернета) и контроля выполнения заказов.
ТЕКУЩИЕ ПРОЕКТЫ
Заказчик: Дирекция колл-центра, обслуживающего программы “Больше, чем путешествие” (Росконгресс)
Текущий проект В работе с 04/2026 – по настоящее время
Название проекта: “Работа на смене”
Краткое описание проекта:
Оптимизация текущего рабочего процесса, использующего таблице Excel, доступную для записи вышедшими на смену операторами колл-центра.
- кросс-платформенное (Windows, Android) клиент-серверное приложение на MAUI для операторов колл-центра, предоставляющее операторам колл-центра необходимую для обзвона информацию и позволяющее провести операторам резервирование задач по обзвону конкретных клиентов за собой и записать результаты обзвона,
- Web front-end для менеджеров, позволяющий вносить информацию, нужную операторам для проведения обзвонов (ссылки на скрипты обзвонов, импорт таблицы с данными людей, которых нужно обзвонить, ссылки на документы - скрипты звонков, ответы на часто задаваемые вопросы операторам и так далее )
- кросс-платформенное (Windows, Android) клиент-серверное приложение на MAUI для менеджеров, позволяющее оперативно наблюдать заносимую операторами информацию.
Бэкенд: ASP.NET Core, PostgreSQL, Dapper, SignalR
Приложения: MAUI
Фронтенд: React
Заказчик: Crazy Barbarian 09/2025 – по настоящее время
Маленькая игровая студия, специализирующаяся на многопользовательских играх Санкт-Петербург
(https://mmo13.ru/games/developer/crazy-barbarian-games)
Текущий проект (в работе с октября 2025 по настоящее время)
Название проекта: Тайны Санкт-Петербурга
Краткое описание проекта:
- квест с элементами AR и использованием GPS: Unity3d, EasyAR
-социальное приложение с использованием GPS : MAUI
- бэкенд: ASP.NET CORE, Dapper, PostgreSQL, RabbitMQ, SignalR, MediatR web Frontend для управления данными – React.JS)
Роли на проекте: разработчик бэкенда,
разработчик клиент-серверного приложения для взаимодействия игроков и следования по маршруту, разработчик AR приложения для игрового процесса,
Платформы: Android (потенциально iOs тоже) для клиентских приложений, Linux для backend
Навыки: Unity3d, MAUI, SignalR, MediatR, React.JS
Языки программирования: C#, SQL, Javascript
Описание проекта
“Тайны Санкт-Петербурга” по своей сути представляет собой платформу для квестов, где команда игроков следует истории, общаясь друг с другом и с неигровыми персонажами и получая подсказки в соответствии со своей позицией GPS в мобильном приложении и “видя незримое” благодаря архитектурным деталям, используемым в качестве маркеров для дополненной реальности (Unity3d).
Функции бэкенда включают в себя:
- управление информацией о пользователях
- хранение и предоставление возможности динамической загрузки контента в соответствии с геолокационными данными и обнаруженными маркерами дополненной реальности (проще говоря, элементы квестов и API, который нужен для редактирования квестов и их прохождения)
- интерфейс для управления контентом и его редактирования
- роль чат-сервера: мгновенные сообщения между пользователями
- роль игрового сервера многопользовательской игры: мгновенная доставка игровых событий
ОПЫТ РАЗРАБОТКИ КОРПОРАТИВНЫХ СИСТЕМ НА C#/.NET с 2012 по 2025
Программист C#/.NET 05/2025 – 08/2025
Bars Group (https://bars.group/ ) Russia, Saint Petersburg
Проект: система версионированного документооборота и бюджетирования государственных программ и проектов
Навыки: ASP.NET, EntityFramework, PostgreSQL, React.JS
Языки программирования: C#, SQL, Javascript
Компания разрабатывает IT-решения и участвует в создании информационных систем для управления документооборотом и автоматизации бизнес-процессов для крупных некоммерческих организаций.
Моя работа включала участие в разработке системы управления документооборотом и утверждения бюджета для крупных некоммерческих проектов и программ в масштабах страны, а также участие в разработке бэкенда и фронтенда.
- Я провел аудит монолитной архитектуры старой системы электронного документооборота, выявив основные проблемы с производительностью и поддержкой.
- Разработал и представил поэтапный план перехода на микросервисную архитектуру с использованием DDD, который был принят командой в качестве основы для дальнейшей разработки.
- Реализовал несколько новых модулей в рамках существующего монолита с использованием ASP.NET Core и Entity Framework, отвечающих важнейшим требованиям государственного заказчика.
Программист C#/.NET 10/2024 – 04/2025
MCDIS (https://www.mcdis.ru ) Россия, Санкт-Петербург
Проект: Система для автоматической (на основе AI) проверки макетов уличной рекламы на соответствие законам РФ
Навыки: ASP.NET, EntityFramework, PostgreSQL, React.JS , Kafka, gRPC API and REST API
Programming languages: C#, SQL, Javascript
MCDIS — компания с высокой компетенцией в области искусственного интеллекта, которая также занимается разработкой программного обеспечения на заказ в других сферах. Меня пригласили принять участие в проекте для RUSS, крупного оператора наружной рекламы в России. Мы разрабатывали сервер для оценки соответствия макетов рекламных щитов российскому законодательству: запрещено использовать элементы с возрастным ограничением 18+, сцены курения или употребления алкоголя, рекламу азартных игр и многое другое.
Моя роль в проекте: я разработал API Gateway Server (APIшлюз)- сервер-посредник между корпоративной системой RUSS и продуктовым инференсом NVidia Triton (сервером для промышленного использования AI) для обеспечения асинхронной обработки запросов на анализ изображений. Моя разработка предоставляет REST API для внешних клиентов в соответствии с разработанным с моим участием техническим заданием и реализует взаимодействие с сервером Triton с помощью gRPC. Таким образом, внешние клиенты могут создавать задачи с помощью REST API, отслеживать их выполнение, подписываясь на сообщения Kafka, и получать информацию об ошибках или результатах с помощью REST API.
Программист C#/.NET 01/2012 – 05/2012
First Line Software Россия, Санкт-Петербург
www.firstlinesoftware.com
Проект: подсистема email-уведомлений клиентов CRM системы
Навыки: Silverlight, WPF, ASP.NET, MS SQL, REST API
Компания специализируется на разработке программного обеспечения на заказ. Меня наняли принять участие в подпроекте по созданию подсистемы email-уведомлений для CRM-системы.
Моя задача заключалась в разработке редактора «что видишь, то и получаешь» для создания XML-шаблонов для генерации электронных писем на основе HTML.
Этот инструмент обладал всеми типичными функциями визуального редактора, включая палитру визуальных компонентов, перетаскивание, контекстное меню и синхронизацию текстового/XML-представления и представления в виде формы.
Также я разработал серверную функциональность для сохранения/загрузки шаблонов и генерации HTML в соответствии с XML-шаблоном.
Ведущий программист C#/.NET 01/2010 – 01/2011
Spb StarsUp Россия, Санкт-Петербург
Проект: Order Management System (Система сквозного управления заказами) со встроенной CRM
Навыки: WPF, WCF, MS SQL, MySQL, REST API,
Небольшой стартап, созданный для поэтапной разработки системы сквозного управления заказами при трансграничной торговле автомобильными запчастями.
Меня наняли и как бизнес-аналитика, и как разработчика MVP (минимально жизнеспособного продукта) специализированной OMS для автоматизации бизнес-процессов по сопровождению заказов от получения заявки и до передачи доставленных деталей заказчику, а также реакции на жалобы.
Что потребовало сначала описать и проанализировать текущие бизнес-процессы и выявить их слабые и сильные стороны, затем предложить и согласовать новые бизнес-процессы – уже с использованием проектируемого продукта.
Как программист в рамках MVP я разработал:
- бэкенд с использованием WCF и MS SQL;
- клиент-серверное приложение на основе WPF для менеджеров по продажам, позволяющее отслеживать заказы в виде списков дел на основе заранее подготовленных шаблонов.
- серверное приложение на ASP.NET для взаимодействия через базу данных MySQL с веб-сайтом на базе LAMP.
- Модуль для руководителя, позволяющий отслеживать деятельность менеджеров по продажам и их ключевые показатели эффективности.
Разработка программного обеспечения на заказ 05/2012 – 09/2024
Санкт-Петербург
Контракты на разработку игр и приложений на заказ с российскими студиями и
зарубежными стартапами, а также работа в интернациональных командах через Upwork.com .
Языки программирования: C#, C++, GoLang, SQL
Platforms: все популярные платформы. в основном веду разработку на Windows под Android; при необходимости – после тестирования на Android собираю и проверяю под iOs. Делал проекты и под WebGl, и под Windows и Mac OS X, и даже под Flash (пока он поддерживался Unity3d как одна из платформ)
Бэкенды: обычно использую ASP.NET Core (как часть единой платформы с .Net 6)
Контракты на разработку игр и приложений на заказ, в том числе многопользовательских игр, как пошаговых, так и в реальном времени.
- пошаговые многопользовательские игры, такие как шашки и карточные батлеры.
- многопользовательские игры реального времени, такие как гонки и шутеры.
- игры с Игровые автоматов (азартные игры на игровые деньги) с определением результатов в серверной части по схеме “настоящих онлайн-казино” и отрисовкой на клиентской части.
- Игры и приложения для дополненной и виртуальной реальности, аттракционы.
Подборка некоторых из моих демо-роликов, связанных прежде всего с дополненной реальностью http://vimeo.com/khkcontact
- Симуляторы, требующие интеграции с необычными устройствами, такими как локальные системы позиционирования (marvelmind.com, indotraq.com), пользовательские контроллеры и исследовательские аппаратные прототипы на базе Arduino и Raspberry Pi для обратной связи с имитацией панели управления транспортным средством или аниматроникой.
Некоторые из проектов:
Название проекта: Sumo Tatami
страница игры на Steam: https://store.steampowered.com/app/3395290/SUMO_TATAMI/
Наниматель: Crazy Barbarian https://mmo13.ru/games/developer/crazy-barbarian-games )
Краткое описание проекта:
многопользовательский гибрид гонок и шутера: Unity3d
Бэкенд: .Net, sockets, PosgreSQL, Redis, ASP.NET Core
Функции бэкенда:
- игровой сервер: ретрансляция игровых событий и позиций игроков в пределах группы игроков (“комнаты”)
- хранение данных пользователя
- хранение и редактирование пользовательских трасс для гонок и информации о пользователях
- Балансировщик нагрузки: отслеживание загруженности процессора, физической памяти и сети на выделенных серверах с инстансами серверов и создание новых комнат на наименее загруженных инстансах
Мои роли на этом проекте:
- серверный программист
- senior Unity3d developer (клиент-серверное взаимодействие со стороны Unity3d, организация и проведение инспекций кода, установление политики использования Git и внедрение в работу практик Scrum, управление задачами для команды разработчиков из 3 человек, включая меня).
Название проекта: Summoner battles/Битвы призывателей
Краткое описание проекта:
Шаблон для многопользовательских карточных батлеров (игр с использованием специальных карт, у каждой из которых свои способности и сила)
Клиентская часть: Unity3d
Платформы: Android, iOs
Бэкенд: ASP.NET, PosgreSQL, SignalR, Redis
Функции бэкенда:
- детерминированный игровой сервер: формирование групп игроков, расчет результатов хода, рассылка игрокам комнаты игровых событий и результатах ходов.
- хранение информации об игроках: количество игровой валюты, набор карт, рейтинг, история боев…
- покупка карт в игровом магазине, аукционы
Моя роль на этом проекте:
Senior Full Stack developer - серверная часть и клиентская части разработаны в одиночку как шаблон для разработки идентичных игр. Разработана документация и проведено обучение штатного программиста заказчика, благодаря чему заказчик получил возможность выпустить серию free-to-play мультиплеерных игр с практически идентичным геймплеем, но под разными названиями и с разным дизайном.
Название проекта:“Ganjafarmer ”
Геймплей: https://www.youtube.com/watch?v=nbGE88gu-DY
Описание проекта:
2d симулятор фермы (жанр Tycoon)
Клиентская часть: Unity3d
Платформы: Android, iOs
Бэкенд: ASP.NET Core + PostgreSQL
Функции бэкенда: хранение сейвов игры независимо от устройства и информации пользователя.
Мои роли:
- разработчик Unity3D – выполнена глубокая переработка legacy кода из-за его нестабильности, добавлены новые фичи и доработан геймплея в соответствии с идеями заказчика.
- Разработчик бэкенда (ASP.Net Core) - в legacy бэкенда не было вообще: информация сохранялась только на самом устройстве. Но требовалось предоставить игроку возможность входить в свою игру с разных устройств.
Сначала я использовал backend-as-service Parse Platform, потом заказчик пожелал все же иметь собственный бэкенд на виртуальном выделенном сервере, и я разработал версию на ASP.NET Core.
Название проекта:“Tanks Online”
https://tankionline.com/en/
Наниматель: Alternativa Games
https://alternativa.games/
Краткое описание проекта:
Разработка на Unity3d клиентской части многопользовательского танкового шутера:
Платформы: Web, Android, Nintendo Switch
Бэкенд: Kotlin, Redis
Функции бэкенда “Tanks Online”:
- игровой сервер: ретрансляция игровых событий и позиций игроков в пределах группы игроков (“комнаты”)
- хранение данных пользователя
- хранение игровых карт и динамически загружаемого контента
- Балансировщик нагрузки: отслеживание загруженности процессора, физической памяти и сети на выделенных серверах с инстансами серверов и создание новых комнат на наименее загруженных инстансах
Описание проекта: “танчики” от пермской компании Альтернатива геймс (менее популярные, чем “World of Tanks” от белорусской компании Wargaming, но число пользователей тоже большое). Этот продукт разработан на языке Kotlin, но официальной поддержки у Nintendo Switch и Sony Playstation для Kotlin нет. Поэтому возникла задача переписывания игры на Unity3d так, чтобы игроки на консолях могли использовать те же сервера, что и игроки с ПК или Android.
Моя роль: разработка клиент-серверного взаимодействия с серверной частью с логикой, идентичной той, что реализована в оригинальном клиенте на Kotlin и полностью соответствует актуальной реализации игрового сервера (Kotlin).
В доработке игрового сервера я НЕ участвовал напрямую, но для разработки клиент-серверного взаимодействия я должен был изучить в достаточной мере.
Так что участие в этом проекте и в этой роли позволило мне на практике изучить подход к реализации высоконагруженного бэкенда коммерчески успешной динамичной игры в реальном времени (более 10,000 одновременных подключений и порядка 100000 одновременно играющих игроков в 2015)
- “мобильный интерактивный геогид с элементами дополненной реальности”: геопозиционное интерактивное повествовательное приложение с элементами дополненной реальности, бэкенд на ASP.NET
Проект “Виртуальный экскурсовод”
Бэкенд: ASP.NET, PostgreSQL, NpSQL, GoLang
Фронтенд: React.JS
Приложение: Unity3d
Платформы: Android
Наниматель: ООО “Точное машинное зрение”, компания входила в “Ланит-Терком”
https://lanit-tercom.ru/en/services/obrabotka-izobrazheniy-i-video
Заказчики: музейное объединение “Музей Москвы”, Эрмитаж
Описание проекта:
Это приложение представляло собой виртуального экскурсовод, который может прочитать лекцию про локацию, в которой находится пользователь или по объектам на маршруте, по которому пользователь идет (например, по улице Никольской в Москве) в соответствии с GPS пользователя и показать интерактивный контент и обычные видео/тексты и в безмаркерной дополненной реальности, используя для привязки к реальному миру оригинальный сервис, разработанный Ланит-Терком (и написанный на C++)
Функции бэкенда:
-Сервер динамически загружаемого контента
-Административная панель для управления динамически загружаемым контентом, в том числе сопоставление контента, подлежащего загрузке при посещении локации и идентификатора локации, которая была отсканирована для использования безмаркерной дополненной реальности.
Моя роль на проекте:
oРазработал бэкенд серверной части системы динамической загрузки (ASP.NET, PostgreSQL + NpSQL) и участвовал в разработке административной панели для размещения материалов в системе динамической загрузки (React.JS).
oРеализовал динамическую загрузку версионированных материалов для лекции в локальную библиотеку
oРеализовал визуализацию читающего лекции гида: 3d модель, которая читает лекции в соответствии с позицией GPS, синхронизируя движения губ со звуковым файлом, при этом воспроизводя анимации жестов и мимики в соответствии с файлом сценария лекции.
Социальное приложение с информированием о событиях с привязкой сообщений к GPS и элементами дополненной реальности:
Проект: “Flyy Metaverse” https://www.flyy.life/
Навыки: Unity3D, Zenject, Google ARCore,
Бэкенд: ASP.NET, PostgreSQL, NpSQL, GoLang
Платформы: iOs, Android
Моя роль: исправление системных проблем в клиенте Unity3d со скоростью и сбоями в получении информации с бэкенда и доработка бэкенда (ASP.NET, PostgreSQL, GoLang )
- “Grisly Manor Treasure Hunter” (заказчик Grisly Manor Studio, сейчас Dynamic Augmented Solutions https://www.dasxr.ai/projects)
Бэкенд: ASP.NET Core, MySQL (ADO.NET)
Платформы: iOs, Android
Навыки: Unity3d, Vuforia AR SDK, PHP, MySQL
Конструктор квестов в дополненной реальности. Игровой процесс предполагает, что сначала мастер квеста (например, родители) прокладывает путь, соединяя текстовые подсказки и 3D-модели с распечатанными AR-маркерами, а затем игроки(дети), следуя подсказкам, находят нужные маркеры в правильном порядке – и, при успехе, обнаруживают приятный сюрприз.
Я отвечал за клиентскую часть на Unity3d (сама игра), реализовал API Gateway на ASP.NET Core и MySQL для взаимодействия с клиентской частью при динамической загрузке контента, сотрудничая с разработчиком бэкенда и веб-интерфейса конструктора квестов на PHP и MySQL
- “ARWall” (“Tap2Art”) – прототип AR приложения для размещения картин на стене в своем доме и статуй у дома перед покупкой, для интеграции с интернет-магазином арт-галереи.
Видео прототипа:
https://vimeo.com/366897749?fl=pl&fe=sh
https://vimeo.com/360914289?fl=pl&fe=sh
Навыки: Unity3d, ARFoundation.
Серверная часть: – ASP.NET+MySQL Api Gateway Server веб-сайту интернет-магазина арт-галереи на PHP+MySQL и для сервиса загружаемого контента (Asset Bundles для 3d моделей и изображений картин).
Платформы: iOs, Android
Другие приложения с использованием дополненной реальности:
Навыки: Unity3D, Vuforia AR SDK, EasyAR SDK, ARFoundation, Apple ARKit,
Google ARCore
Платформы: iOs, Android
Бэкенд для хранения пользовательского контента и динамически загружаемого контента: ASP.NET Core, PostgreSQL, RabbitMQ, Amazon S3
Подборка видео некоторых из моих демо, связанных прежде всего с дополненной реальностью http://vimeo.com/khkcontact
- “Phantom finder Camera” (заказчик Grisly Manor Studio, сейчас Dynamic Augmented Solutions https://www.dasxr.ai/projects ):
Платформа: iOs
Навыки: Unity3D/C#, Vuforia AR SDK,
Бэкенд: никакого.
Приложение, позволяющее «видеть невидимое»: приложение для устройства на базе планшетного компьютера с ИК-камерой и ИК-лампой может распознавать в условиях недостаточной освещённости плакаты и детали интерьера как AR-маркеры для анимированных 3D-моделей и «порталов» в ад. Разработано мной по заказу студии Grisly Manor (сейчас Dynamic Augmented Solutions) для их шоу на фестивале Knott’s Scary Farm
https://fangirlnation.com/2015/10/24/interview-grisly-manor-studios-phantom-finder/
“ARZombi”. Шутер в дополненной реальности:
наниматель: Dynamic Augmented Solutions https://www.dasxr.ai/projects , ранее Grisly Manor Studio
Платформы: iOs 11+
Навыки: Unity3d, ARKit
Бэкенд: никакого
Один из обзоров этой игры: https://arcritic.com/550/arzombi-game-review/ , в тексте есть ссылка на видео геймплея
Сайт игры: https://www.arzombigame.com/
Возможно, это первый в мире AR-шутер, созданный на основе ARKit. Мы начали его разработку, когда ARKit был в стадии бета-тестирования, и опубликовали игру сразу после выхода ARKit в iOS 11.
В результате эту игру часто называли одной из первых игр, созданных на основе ARKit, и использовали как пример, демонстрирующий удивительные на тот момент возможности ARKit.
Моя роль в этом проекте: единственный разработчик Unity3d первой версии этой игры.
Обучил нового программиста, которому передал этот проект для дальнейшего развития перед следующим проектом “Space invaders” – проверкой реализуемости МНОГОПОЛЬЗОВАТЕЛЬСКИХ AR шутеров.
“Space invaders”
Платформы: iOs 11+
Навыки: Unity3d, ARKit
Бэкенд: ASP.NET, S3 - для хранения данных сканирования локаций,
Photon Unity Network в качестве игрового сервера
Прототип игры (”доказательство реализуемости”) в УНИКАЛЬНОМ жанре – МНОГОПОЛЬЗОВАТЕЛЬСКИЙ шутер в дополненной реальности. Разработан по заказу Dynamic Augmented Solutions https://www.dasxr.ai/projects ,
Я использовал Unity3D, Photon Unity Network, ARKit и Placenote SDK (сейчас уже устаревший) для синхронизации положения объектов между разными устройствами.
Перед первой игрой область игры должна быть отсканирована одним из игроков, результат сканирования получен и активирован остальными игроками, затем игроками должна быть произведена релокализация на локации. Для хранения результатов сканирования и их передачи другим игрокам и был предназначен бэкенд на ASP.NET
Видео многопользовательского геймплея в дополненной реальности можно увидеть по ссылке https://vimeo.com/262877704?fl=pl&fe=sh : в нем показано, как два игрока стреляют по одной и той же цели: они видят цель в одном и том же месте, видят траектории выстрелов друг друга, а модели оружия привязаны к мобильным устройствам друг друга.
Виртуальная реальность и экзотические жанры:
наниматель: Dynamic Augmented Solutions https://www.dasxr.ai/projects , ранее Grisly Manor Studio
Навыки: для игрового процесса в VR - Unity3D, Google Cardboard SDK, Samsung Gear VR, Bridge Mixed Reality Headset SDK (Apple)
Для разработки серверной части: обычно .Net Core
Для сервисов интеграции с устройствами и ретрансляции данных: C, C++, STL, Boost ASIO, Boost Threads
- проект “Поездка на реальном поезде сквозь астральный мир для парков развлечений”:
Бэкенд: .Net sockets, ASP.NET, PostgreSQL
Фронтенд администрирования: React.
Синхронизация движения в виртуальном и реальном мирах.
Для отслеживания движения поезда использовались устройства https://indotraq.com/ Суть проекта: пассажиры поезда в шлемах VR видят свое движение в виртуальном мире в полном соответствии с ощущениями от своего вестибулярного аппарата.
Функции сервера:
- хранение позиций “якорей” системы: устройств, расположенных на пути следования поезда и сочетающих функции радиомаяков для триангуляции и ретрансляторов сигнала WiFi.
- прием данных о позиции поезда в реальном мире
- пересчет позиции поезда из позиции в реальном мире в положение на трассе в виртуальном мире и рассылка данных в устройства VR пассажиров.
Панель администрирования: визуализация состояния и взаимного расположения “якорей” и движущихся “маяков”, и расстановка маркеров для событий.
- Прототип летающего скейта.
Бэкенд: .Net, C++
Функции бэкенда: изначально, просто приложение-эмулятор для тестирования и отладки в связи с ограниченным количеством собираемых вручную аппаратных контроллеров. Позволил записать на ПК потоки данных через BT от реального контроллера, а затем воспроизводить их через BT или WiFi и использовать при тестировании без подобного контроллера или перенаправлять реальный поток данных на монитор наблюдения (экран рядом с аттракционом для зрителей): чтобы зрители могли видеть то, что видит игрок через очки VR в реальном времени.
Суть проекта: использование тренажера по типу “диска здоровья” с датчиками вращения и наклона, чтобы управлять полетом в виртуальной реальности. Это тренажер в виде диска, закрепленного на подставке, способного вращаться вокруг своей оси стоящим на поверхности диска человеком за счет движений корпусом и бедрами. Есть вариации, заставляющие мышцы работать интенсивнее для удержания равновесия. В прототипе наклон и поворот диска в режиме реального времени считывались контроллером на основе Arduino и транслировались через BT на устройство VR, позже - на бэкенд с ретрансляцией клиентским приложениям.
- Многопользовательская гонка на велотренажерах:
Визуализация гонки на обзорном экране (PC) и на планшетах: Unity3d
Бэкенд: .Net sockets, PostgreSQL
Функции бэкенда:
- регистрация участников гонки, сбор данных от велотренажеров, расчет данных по позиции гонщика на трассе для визуализации гонки на обзорном экране и на индивидуальных планшетах
- расчет данных по потраченным калориям для их отображения на индивидуальных планшетах и внесения в профиль клиента тренажерного зала как тренировки специального типа
Используются велотренажеры в спортзалах с датчиками вращения педалей, чтобы тренирующиеся в зале с такими велотренажерами могли видеть на большом экране свое положение и положение своих соперников на трассе и вид от первого лица на экране планшета велотренажера.
- Симулятор скоростного катера:
Бэкенд: .Net sockets
Функции бэкенда:
-Реализация логики обратной связи с кабиной
-Предоставление возможности для тестирования клиентской части за счет программной симуляции кабины, взаимодействующей с бэкендом
Имитация кабины скоростного катера с тумблерами, индикаторами, штурвалом и рулями для управления движением катера от первого лица, кабина под управлением Raspberry Pi. По факту, вся кабина целиком интерпретировалась в игре на Unity3d как один нестандартный, работающий через WiFi игровой контроллер с обратной связью (можно было через Raspberry Pi менять состояние некоторых элементов кабины).
ОПЫТ РАЗРАБОТКИ НА C++ c 2005 по 2012
Программист C++ и LUA 01/2012 – 03/2012
G5 games Россия, Санкт-Петербург
https://www.g5.com/
Hidden objects, point-and-click quests:
Навыки: C++, LUA : кросс-платформенный игровой движок, разработанный на C++ со встроенным LUA
Работал на ИП по заказам от G5 Games, разрабатывая игры в жанрах Hidden Object на движке, разработанном in-house на C++ в G5 games и добавляя в движок новые фичи.
Для проекта в жанре point-and-click интегрировал в движок LUA как статически линкуемую библиотеку на C.
Программист C++ 01/2011 – 01/2012
BridgeQuest labs
Россия, Санкт-Петербург
Проект: IDE for AppBuilder project
Навыки: C++, MFC, STL
В тот период BridgeQuest входила в международную корпорацию BluePhoenix и занималась разработкой программного обеспечения, упрощающего поддержку и модернизацию старого ПО, написанного для мейнфреймов на COBOL, LISP и других языках, являющихся устаревшими, но для которых существует огромная кодовая база.
Я работал над проектом AppBuilder — набором инструментов для разработчиков (интегрированная среда разработки, трансляторы) для создания приложений с использованием специализированного языка, который позволял генерировать проекты на C, Java, Cobol и C#, компилируемые для целевых платформ с помощью специализированных инструментов. Всего над кросс-компиляторами и инструментами для отладки работали 15 разработчиков, и я был единственным, кто занимался IDE для Windows.
Достижения: Я унаследовал недокументированный сложный проект на C++ с запутанным кодом, серьезными проблемами в архитектуре и множеством багов.
Исправляя баги в этом Legacy, я постепенно переработал его в модульную архитектуру с низкой связанностью и высокой согласованностью, а также разработал документацию по проектированию программного обеспечения.
В результате значительно сократилось время, необходимое для внесения изменений и отладки IDE и ее взаимодействия с другими элементами AppBuilder, а время адаптации новых разработчиков уменьшилось в три раза.
Программист C++ 06/2007 – 03/2010
Корпорация Alcatel Российский центр разработки в Санкт-Петербурге
Проект: интегрированная программно-аппаратная система, производимая Alcatel для колл-центров на базе аппаратного обеспечения Alcatel (PBX - Private Branch eXchange, “офисная АТС”) для колл-центров и программного обеспечения производства компании «Genesys Telecommunication Laboratories», которая на тот момент принадлежала Alcatel.
Alcatel-Lucent inc, Saint Petersburg R&D center Россия, Санкт-Петербург
Я участвовал в разработке сервиса SSBD – многопоточного событийно-ориентированного сервиса взаимодействия между аппаратным уровнем и высокоуровневым бэкендом и в разработке подсистемы генерации интерактивных отчетов (файлы Excel с дополнительной встроенной функциональностью, написанной на Visual Basic For Application) на бэкенде
Навыки:
Сервис “SSBD”: C++, STL
Подсистема генерации отчетов: MS SQL, VisualBasic for Applications (Excel)
Моя зона ответственности:
Сервис “SSBD” (“Synchro Server BiDirectional”) – Многопоточное приложение для обеспечения взаимодействия аппаратного обеспечения и серверного приложения колл-центра (Java)
Навыки: C++, STL
Подсистема генерации отчетов программного обеспечения колл-центра (Genesis):
Навыки: MS SQL/T-SQL, Visual Basic For Applications (Excel)
Сервис SSBD представлял собой многопоточное сервисное приложение, работающее на сервере колл-центра под управлением Windows и взаимодействующее с аппаратным обеспечением АТС колл-центра для управления настройками АТС, отслеживания событий и действий. Это приложение было разработано без использования STL, вместо этого его авторы создали собственную библиотеку классов даже без использования шаблонов. Сервис работал крайне нестабильно, с частыми аварийными завершениями из-за проблем, связанных с работой с памятью и ошибок при работе с потоками.
Собранная мною статистика по исправленным мною проблемам показала, что более половины “корневых причин” всех исправленных проблем была связана с использованием именно in-house библиотеки для работы с памятью – списков, стеков, очередей и прочих объектов.
Кроме того, SSBD был явно перегружен функционалом и содержал множество неиспользуемых возможностей, унаследованных от экспериментальных решений, принятых на ранних этапах проекта.
На самом деле в начале моей работы он был гораздо ближе к альфа-версии, разработка которой еще не закончена.
В результате многие ошибки имели нестабильные сценарии воспроизведения и были связаны с утечками памяти и нарушением потокобезопасности.
При этом анализ дампов памяти аварийных остановок, затем анализ кода в попытках выяснить проблемные места, которые могли привести к критическому сбою, который могло быть проблематично воспроизвести, был процессом трудоемким и малополезным для достижения обеспечения надежной работы этого сервиса 24x7.
Потому первым этапом была реализация подсистемы расширенного логгирования в соответствии с правилами, принятыми в Motorola, и добавление возможности проводить автоматическое тестирование при помощи имитации взаимодействия с PBX с одной стороны, и сервисом Genesis, с другой. Благо, для Genesis существовала система автоматизированного тестирования и наборы тестов.
После того, как удалось снизить трудоемкость проведения регрессионных тестов SSBD за счет автоматизации тестирования, я упростил архитектуру этого приложения, убрал поддержку уже отклоненных функций (похоже, оставленных в коде по причине “а вдруг все же понадобится”) и перевел его на автоматическое тестирование без привязки к конкретному оборудованию уже официально, через отдел QA.
Многие проблемы этого приложения были связаны с игнорированием STL и использованием старой небезопасной для потоков in-house библиотеки классов для таких объектов, как списки. Я заменил эту библиотеку на потокобезопасную версию с активным использованием STL и шаблонов, что позволило существенно сократить объемы кода, поскольку без использования шаблонов авторам этой библиотеки приходилось выстраивать сложные цепочки наследования и плодить классы-оболочки .
В результате этой доработки и интенсивного использования автоматизированного тестирования для регрессионных тестов с улучшенной системой логирования, мне удалось устранить 100 % обнаруженных тестировщиками сбоев в режиме реального времени, проблем с выделением памяти и многопоточностью в приложении SSBD. И, конечно же, я прокомментировал код и разработал необходимые проектные документы, чтобы упростить передачу знаний.
Система отчетности: в соответствии с бизнес-требованиями необходимо было создавать различные отчеты в виде файлов Excel, заполненных данными из Java-приложения.
Я изучил работу Java-бэкенда и предложил решение некоторых проблем, основанное на накоплении информации в таблицах, адаптированных под нужды системы отчетности, и ее накоплении с помощью триггеров на таблицах для регистрации событий АТС и спроектировал систему хранимых процедур, упрощавших подготовку нужных данных.
Чтобы упростить создание отчетов в Excel и сделать их использование более удобным для конечных пользователей, уже использовались макросы прямо в файлах Excel, которые служили шаблонами для отчетов.
Я расширил и усовершенствовал этот подход: необходимые данные загружались из REST API в формате XML и использовались для заполнения страниц с данными с помощью VBA, которые служили источником данных для страниц с таблицами, диаграммами и т. д.
Технический руководитель 10/2005 – 05/2007
Rhonda Software ltd, contractor of Motorola inc Россия, Владивосток
https://www.rhondasoftware.com/
https://russoft.org/participant/rhonda/
Интересные факты о компании:
До кризиса 2008 года Rhonda Software была одним из трех российских центров разработки программного обеспечения компании Motorola, являясь контрактором в подчинении офису в Санкт-Петербурге
Компания Rhonda Software была сертифицирована по стандарту CMM (Capability Maturity Model) на уровень 4 “Quantitatively managed” (ведется сбор метрик по подпроцессам и выполняются корректирующие акции) и проводила реинжиниринг процессов разработки на уровень 5 “Optimizing” (“Непрерывное совершенствование” – отлажены процессы постоянного наблюдения за ходом работ, сбор информации о недостатках и предложений по совершенствованию рабочих процессов, их оценка и планирование улучшений). Я принимал участие в этом процессе по направлению “Управление проектами”.
А “головной” филиал в России имел только уровень 3, “Defined level”: т.е. рабочие процессы спроектированы и описаны, а персонал мотивированно им следует.
Мои Активности в роли технического руководителя:
1.Разработка ПО (50%) прошивок (firmware) для сотовых телефонов компании Motorola под управлением платформы P2000 (P2K).
Языки программирования: C, C++
2.Менеджмент (50%):
2.1 Руководство группой разработчиков: 5 программистов,
Адаптация новичков, проведение и модерация “peer-to-peer code review” на каждом серьезном изменении. Эта практика очень полезна для повышения качества кода, но еще важнее она для того, чтобы члены команды знакомились с работой друг друга и расширяли свои компетенции.
Нечто похожее я организовывал в качестве руководителя группы разработчиков в других компаниях, поскольку был знаком с ней по описаниям в литературе как с управленческой практикой из раздела “управление знаниями” (Knowledge management), но здесь столкнулся с ней в ее зрелом и привычном для сотрудников воплощении и осознал ее полные возможности. В том или ином виде внедрял в разных командах не раз – и каждый раз эта практика БЫСТРО показывала превосходные результаты как при проведении мной onboarding для новых членов команды, так и для повышения слаженности команды в целом и снижения количества багов, найденных при регрессионном тестировании.
2.2Контроль за распределением задач на совете по внесению изменений (Control Change Board Triage): анализ запросов на внесение изменений и их распределение между соответствующими экспертами в зависимости от области специализации и загруженности, отслеживание обработки запросов на внесение изменений и соблюдения стандартного процесса.
2.3Роль «лидера стандартных процессов» (“Standard Process champion”): стабилизация процесса «распространения запросов на изменение», в рамках которого изменения, запрошенные для одной модели телефона, применяются к другим моделям, если они полезны для этих моделей. То есть суть роли - отслеживание жизненного цикла запросов на изменение для снижения количества нарушений организационных правил со стороны персонала.
2.4Участие в подготовке к сертификации по стандарту CMM уровня 5. В мои обязанности входила область “управление проектами”: анализ текущих процессов и практик, а также известных стандартов (прежде всего PMBOK – Project Management Body of Knowledge) разработка новых руководств и процессов. Я разработал корпоративное руководство “Управление содержанием проекта” (Project scope management) и примеры Process Tailoring под конкретные команды: “мультимедиа” (частью именно этой команды была группа, находившаяся под моим руководством)
ПРЕДЫДУЩИЙ ОПЫТ: использование других технологий (1998 - 2005)
Руководитель локальной группы разработки 10/2004 – 10/2005
Polyoptimum Russia, Vladivostok
https://polyoptimum.com/en-us/
Project: “ProAct”: программное обеспечение для управления человеческими ресурсами, составление смен дежурств с учетом потребностей больных и планов лечебных процедур, анализ загруженности специалистов и регистрация потребности в специалистах для госпиталей Канады, США и Австралии.
Мои обязанности: управление небольшой местной командой во Владивостоке (2 разработчика, 1 тестировщик и я), разработка программного обеспечения в роли ведущего программиста.
Навыки:
- разработка ПО (70 %): Visual Foxpro, MS SQL
- менеджмент (30%): руководство командой, управление задачами, управление знаниями (было необходимо максимально быстро выйти на производительность филиала в Санкт-Петербурге), code review
Достижение:
- филиал создан (причем я принимал участие в поиске подходящего места для офиса, закупке техники и так далее – а также удалось решить проблему с отсутствием официального оформления в этой компании)
- рабочие процессы установлены (для своей команды мы использовали вариацию Feature-Driven Development и некоторые другие управленческие практики из статей об организации разработки программного обеспечения). Практика ежедневных и еженедельных собраний для инспекции кода, взаимной передаче знаний и документирования кода и архитектуры себя показала отлично, выведя за полгода на производительность ВЫШЕ питерской команды, разработавшей этот продукт.
Руководитель отдела 01/2002 – 10/2004
Применения информационных технологий в учебном процессе
Владивостокского Государственного
Университета Экономики и Сервиса
(Сейчас Владивостокский Государственный Университет) Россия, Владивосток
Навыки: руководство командой, управление проектами, организационное развитие (organizational development).
Я был руководителем небольшого отдела (2 менеджера, 1 разработчик программного обеспечения, 1 инженер-электронщик и я сам), который входил в состав Управления Информационно-Технического Обеспечения. Основной задачей моего отдела было выполнение функций проектного офиса при руководстве Управления и проректоре по информационным технологиям. Мы прорабатывали связанные с информационными технологиями идеи, заинтересовавшие высшее руководство Университета: формализовывали их, детализировали и оценивали реализуемость, декомпозировали ожидаемые результаты и работы, рассчитывали затраты и необходимые ресурсы, планировали работы, координировали взаимодействие подразделений ВУЗа между собой и с внешними подрядчиками и проверяли результаты, разрабатывали организационную документацию.
Часть технических работ выполнялась сотрудниками отдела, но основные активности были информационно-аналитическими и административными.
Интересно то, что именно в этом университете я получал свое второе высшее образование (по менеджменту) и защищал диплом по оптимизации бизнес-процессов работы предприятия за счет внедрения программного обеспечения.
Старший программист, технический руководитель проекта 02/2001 – 10/2001
Владивостокский Судоремонтный Завод Россия, Владивосток
Проект: Информационная система для управления проектами по ремонту судов.
Навыки: управление проектами, анализ бизнес-процессов, Borland C++ Builder, Borland Delphi, MS SQL
Этот проект был разработан мною с нуля, от анализа имеющихся бизнес-процессов по документообороту, связанному с проектами по ремонту судов, составлению смет на ремонт судов, приемке выполненных работ
Основные цели спроектированной мною, разработанной и внедренной с моим участием как программиста и под моим руководством системы:
- ускорить оценку проектов по ремонту судов,
- уменьшить ошибки в оценках
- упростить отслеживание хода работ, используемых ресурсов и других расходов.
Система позволяла
- вести архив проектов, сохраняя все ключевые факты, связанные с проектами, и помогая находить подписанные бумажные документы, относящиеся к проекту (в бумажном архиве).
Внедрение серьезно ускорило и упростило планирование проектов:
Система позволяла:
-Проводить декомпозицию работ на стандартные для судоремонта пакеты работ, стоимость которых известна опытным прорабам, соотнося пожелания заказчика с набором требуемых пакетов работ и позволяя оценить себестоимость выполнения пожелания заказчика с учетом минимальной маржи.
-быстро оценить подпроекты и весь проект при каждом изменении пожеланий прямо в процессе обсуждения работ с заказчиком.
- хранить и дополнять библиотеку шаблонов стандартных пакетов работ и их стоимостных оценок, основанных как на опыте прорабов, так и на статистике стоимости пакетов работ по предыдущим проектам.
-Регистрировать все затраты и используемые ресурсы по проекту и собирать статистику для улучшения дальнейших оценок.
Эта концепция была разработано мной: я описал и проанализировал сложившиеся на предприятии бизнес-процессы и документооборот, а затем разработал концепцию этой информационной системы и подход к оценке проектов с использованием библиотеки известных пакетов работ в качестве деталей конструктора. Затем я разработал эту систему с помощью начинающего разработчика, разработал проектную документацию и инструкции пользователя, и организовал обучение персонала и внедрение.
В результате этого проекта время, необходимое для составления смет, сократилось в несколько раз, и появилась возможность отслеживать ход работ в режиме реального времени.
Однако САМЫЙ ВАЖНЫЙ результат внедрения этой системы, я считаю, находился в области ПЕРЕДАЧИ ЗНАНИЙ: главным достижением является формализация и сохранение в виде, пригодном для использования другими людьми многолетнего опыта опытных прорабов как специалистов по оценке, передача их знаний и снижение рисков потери важных компетенций, а также сбор данных, пригодных для использования статистических методов, что позволяло постоянно повышать качество оценки.
Система позволяла составить детальное описание работ со ссылками на аналогичные план/факт в прошлом, которое достаточно просто быстро проглядеть эксперту и внести корректировки при необходимости – при этом избавляя от долгой и нудной работы по пересчету сумм даже при незначительных корректировках.
Повышение точности оценки проектов также привело к большей предсказуемости затрат, а значит, регулярные закупки могут быть более точными с точки зрения ассортимента и количества продукции, что позволяет заключать более выгодные контракты с поставщиками.
Старший разработчик программного обеспечения, технический руководитель проекта 01/1998 – 02/2001
Управление Федеральной почтовой службы Приморского Края Владивосток
Проект: Автоматизация подписки на газеты и журналы
Навыки: управление проектами, анализ бизнес-процессов, FoxPro, Borland C++ Builder, MS SQL
Этот проект охватывал все этапы обработки заказа, начиная с момента оплаты клиентом подписки на журнал и заканчивая отправкой консолидированного заказа для всего региона в издательства. Это был мой первый крупный проект, в ходе которого я анализировал потребности бизнеса, а также занимался внедрением и поддержкой системы. Эта система использовалась во Владивостоке и более чем в 30 городах региона не менее 10 лет, пока Министерство связи не заменило ее на новое программное обеспечение.
Я работал над этим проектом параллельно учебе на факультете менеджмента в Университете экономики и сервиса (экстернат), и использовал его в качестве практической части своей дипломной работы по оптимизации бизнес-процессов.
Это очень помогло мне развить управленческие навыки в сфере разработки программного обеспечения.