Каратаев Дмитрий Александрович

Backend Software Developer (C#) · Москва, м. Коломенская

Контакты: +7 (923) 047-13-55 (предпочтительно Telegram) · dkarataev1990@gmail.com · Telegram @Krawler · GitHub · Сайт

Гражданство: Россия · Опыт в разработке: 8+ лет

Формат: удалённая работа · полная / частичная / проектная занятость · Локации (удалённо): Канада, Минск, Норвегия, США · командировки не рассматриваю

Возможные форматы трудоустройства: трудовой договор, самозанятость, ГПХ

Кратко

Backend-разработчик на C# / .NET (8+ лет): микросервисы, REST API, SOA, GraphQL, инженерные и документооборотные системы. Опыт полного цикла SDLC, рефакторинга и перевода монолитов к сервисной архитектуре, внедрения DI, unit-тестов, Agile-практик (DoR/DoD/AC), документации и баз знаний.

Параллельно c основной работой строю инфраструктуру для AI-агентов: серия открытых MCP-серверов (Model Context Protocol), дающих ИИ-ассистентам доступ к компилятору, отладчику, системе сборки и мультимодальным вводам. Автор методологии agent-first-learn — практического руководства по продуктивной работе с AI.

Помимо кода: настройка процессов, работа с требованиями, техническая экспертиза, нетривиальная отладка (дампы памяти, анализ потоков, Reflection).

AI-assisted engineering: 1.5+ года практического применения (Cursor IDE, MCP-серверы собственной разработки).

Опыт работы

ООО «НОВА ЭНЕРДЖИС» (Москва) — эксперт по технической экспертизе и поддержке

Сентябрь 2023 — настоящее время · удалённо

Энергетика · системы управления инженерными данными; по типу задач — сопоставимо с опытом контура Harvester и корпоративного веб-портала EDW (сбор, обработка и публикация данных, контур цифрового двойника EPC). Тимлид задаёт приоритеты и общее направление команды; ниже — личный вклад и два кейса (Harvester, веб-портал EDW).

Задачи

  1. Разработка и сопровождение сервисов по сбору, обработке и публикации инженерных данных.
  2. Разработка и сопровождение решений по публикации инженерных данных в контексте цифрового двойника EPC: документы, теги, атрибуты, связи и смежные сущности.
  3. Анализ архитектуры, предложения по улучшению; развитие функционала и сопровождение системы в production.
  4. Внедрение Dependency Injection, развитие unit-тестирования; ведение документации (модули, онбординг, база знаний техкоманды).
  5. Внедрение практик Agile: DoR, DoD, acceptance criteria; участие в выстраивании предсказуемого процесса поставки.

Мой вклад — система Harvester (кейс, STAR)

Ситуация: унаследованная система (в интерфейсе и на IIS продукт именуется Harvester): модули писались в разных стилях и подходах, развитие эволюционное; требования часто противоречили друг другу и менялись по ходу работ. Нужна была устойчивость и производительность на больших объёмах данных (порядка ~1 млн объектов, связей и документов с атрибутикой). При переключении между задачами и модулями росла когнитивная нагрузка; документация и комментарии к коду отсутствовали или устарели.

Цель: ускорить ввод новых и доработку существующих фич, снизить когнитивную нагрузку при смене контекста, повысить прозрачность работы с системой для пользователей и стабильность контура подготовки → валидации → публикации в корпоративный веб-портал.

Действия:

Результат:

Мой вклад — веб-портал EDW (кейс, STAR)

Ситуация: после ухода ряда западных вендоров с рынка прекратилась поддержка продуктов в линейке AVEVA (в т.ч. NET Portal, AVEVA ISM). Для непрерывности работы с инженерными данными потребовалась замена и снижение зависимости от недоступной поддержки и обновлений.

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

Действия:

Результат: пользователи продолжают вести проекты, загружать и актуализировать инженерную информацию несмотря на прекращение поддержки прежних продуктов и внешние ограничения на поставку ПО; цепочка интеграция → база портала → интерфейс закрывает сценарии просмотра и обновления данных в привычном для EPC виде.

Итоги команды (помимо кейсов выше; под руководством тимлида)

Снижение рисков vendor lock-in и рост модульности; развитие тестирования и CI/CD; улучшение производительности и использования ресурсов на отдельных контурах после профилирования и целевых доработок.

Wissance — Co-founder / Senior Backend Developer (.NET)

Февраль 2022 — сентябрь 2023 (1 год 8 месяцев)

ООО «Электрон-сервис» — техник-программист

Август 2020 — февраль 2022 (1 год 7 месяцев)

Газпром нефть — Цифровые решения — ведущий разработчик .NET

Сентябрь 2017 — март 2020 (2 года 7 месяцев)

Сфера: система электронного хранения документов (ЭХД) на базе IBM Document Manager; решение закрывало полный цикл: от сканирования первичной документации (бухгалтерские и смежные документы) — собственное ПО вокруг TWAIN и потоковых сканеров — до интеграции с SAP и контроля проведения документов в учётной системе.

Задачи

  1. Разработка и сопровождение модулей ЭХД: WCF-службы, интеграции, по мере развития — выделение микросервисов из монолитов.
  2. Рефакторинг, приведение кода к SOLID; многопоточность (сканирование, загрузки, фоновые сценарии).
  3. Использование .NET Reflection для нетривиальной отладки и архитектурных обходов (в т.ч. взаимодействие с драйвером сканера и UI-потоками).

Архитектура (контекст)

Стек: .NET Framework 2.0–4.8, MongoDB, Quartz.NET. На MongoDB и Quartz был выстроен конвейер обработки документов: в коллекциях создавались задачи, фоновые сервисы переносили их между коллекциями, продвигая пакеты по бизнес-процессу.

Кейс: назначение «куратора» пакета документов (STAR)

Ситуация: у пакета документов есть ответственный (куратор) по срокам обработки; нужно было вычислить этого человека по оргструктуре: для линейного сотрудника — куратор его непосредственный руководитель; если руководителя нет — взять следующий уровень вверх по иерархии.

Цель: корректное определение куратора по дереву подчинённости без дублирования логики при появлении нового клиентского интерфейса.

Действия:

Результат: команда сэкономила время на повторной реализации бизнес-правил; единая логика куратора осталась в одном месте.

Кейс: собственный просмотрщик пакетов и unit-тесты (STAR)

Ситуация: со временем стало ясно, что исходный UX платформы сильно ограничивает сценарии: появилось требование, чтобы пакет документов мог содержать не только файлы (в т.ч. PDF), но и вложенные пакеты — встроенными средствами высокоуровневого API ECM это было неудобно или невозможно в нужном виде.

Цель: уйти от опоры на высокоуровневое API и реализовать свой настольный просмотрщик пакетов поверх низкоуровневого API хранилища (того же контура, что описан в архитектуре выше), с приемлемым UX под новые правила композиции пакетов.

Действия:

Результат: управляемая архитектура UI и тестируемость вместо «только ручных прогонов»; основа для дальнейшего развития клиента без жёсткой привязки к деталям COM/API в коде представления.

Кейс: зависание, дамп памяти и Reflection (STAR)

Ситуация: сканирование строилось на библиотеке TWAIN.NET (обёртка над TWAIN), вызовы шли из фонового потока. Приложение начало зависать «в никуда»: в логах тишина, исключений нет, стабильно воспроизвести на месте не получалось; первым подозревали свежие изменения в коде. Оформлен инцидент наивысшего приоритета; расследование тянулось несколько дней.

Цель: установить причину взаимоблокировки и убрать её без многомесячного «угадывания».

Действия: предложил снять дамп памяти зависшего процесса и разобрать стеки потоков. По дампу вскрылось: через цепочку зависимостей приложение подписывалось на уведомления об изменении пользовательских настроек Windows; по документации WinAPI такие сообщения должны обрабатываться главным (UI) потоком, а фактически цепочка приводила к тому, что обработка оказывалась не там — и при наступлении события всё стопорилось. Подписку удалось найти через .NET Reflection и отключить несколькими строками (отписка от обработчика).

Результат: зависание устранено. Воспроизведение оказалось неочевидным: достаточно было включить слайдшоу обоев рабочего стола — при смене картинки система посылает нужное уведомление, и баг проявлялся стабильно.

Итоги (помимо кейсов)

Рефакторинг монолитов и движение к микросервисной модели там, где это оправдано; опыт интеграции ECM (Java) с .NET, фоновых пайплайнов на MongoDB / Quartz и учётных контуров (SAP); настольный клиент пакетов с MVVM, Rx.NET и unit-тестами на базе Microsoft Fakes и абстракции над COM-доступом к API хранилища; отладка по дампу памяти, сочетание многопоточности, WinAPI/UI-потока и Reflection для поиска скрытых подписок в стороннем коде.

Образование

Омский государственный университет им. Ф.М. Достоевского, Омск.

Математический факультет — до 2019

Прикладная математика и информатика · неоконченное высшее

Физический факультет — до 2017

Прикладная математика и физика · неоконченное высшее

Факультет компьютерных наук — до 2013

Вычислительные машины, комплексы, системы и сети · неоконченное высшее

Навыки

Языки и платформы: C# (8+ лет), .NET Framework 2.0–4.8, .NET Core, .NET 9, ASP.NET Core, ASP.NET MVC, Blazor WebAssembly, Entity Framework / EF Core, ADO.NET, LINQ, SQL

Архитектура и практики: микросервисы, SOA, REST API, GraphQL (HotChocolate), WCF, SOLID, Design Patterns, DDD (элементы), feature-based архитектура, Dependency Injection, unit / integration тестирование, Agile (DoR / DoD / AC), BPMN

Данные и интеграции: SQL Server, MongoDB, Dapper, RepoDb, Linq2db, RabbitMQ, CSV / XML / XSD пайплайны, SAP-интеграции

AI и инструментарий агентов: разработка MCP-серверов (Model Context Protocol), Roslyn API, Debug Adapter Protocol (DAP), Whisper-интеграция, prompt engineering, structured context management, AI safety guardrails

Отладка и системный уровень: анализ дампов памяти, thread debugging, .NET Reflection, COM interop, TWAIN, фоновая обработка (Quartz.NET), реактивное программирование (Rx.NET / System.Reactive), MVVM

Инструменты: Git, GitHub, GitLab, Docker (базово), CI/CD, PowerShell, Cursor IDE, VS Code, Visual Studio

Языки: русский — родной; английский — B2 (средне-продвинутый)

Открытые проекты (MCP)

Публичные репозитории на GitHub — серверы Model Context Protocol (MCP) для Cursor и совместимых сред: дают ИИ-ассистенту доступ к инструментам (сборка, отладка, семантика C# и т.д.), а не только к тексту файлов.

Схема карточек (Purpose / Motivation / Vision и подсказки для агента): open-projects/README.md.

Лицензии и детали — в README соответствующих репозиториев.

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

Медицинская информация (прозрачно для работодателя): инвалидность I группы (ДЦП; передвижение с костылем под локоть). На выполнение трудовых обязанностей разработчика не влияет — пишу заранее, чтобы не было сюрпризов на этапе оффера.

Помимо разработки могу помочь с: