Dmitry Aleksandrovich Karataev

Backend Software Developer (C#) · Moscow, Kolomenskaya metro

Contact: +7 (923) 047-13-55 (Telegram preferred) · dkarataev1990@gmail.com · Telegram @Krawler · GitHub · Website

Citizenship: Russia · Experience in software development: 8+ years

Format: remote work · full-time / part-time / project-based · Remote locations: Canada, Minsk, Norway, USA · business travel not considered

Possible employment arrangements: employment contract, self-employment, contract work

Summary

Backend developer in C# / .NET (8+ years): microservices, REST API, SOA, GraphQL, engineering and document-management systems. Full SDLC experience, refactoring and moving monoliths toward service architecture, introducing DI, unit tests, Agile practices (DoR/DoD/AC), documentation, and team knowledge bases.

Alongside my main job I build infrastructure for AI agents: a series of open-source MCP servers (Model Context Protocol) that give AI assistants access to the compiler, debugger, build system, and multimodal inputs. Author of agent-first-learn — a practical guide to productive work with AI.

Beyond coding: process setup, requirements work, technical expertise, non-trivial debugging (memory dumps, thread analysis, Reflection).

AI-assisted engineering: 1.5+ years of daily practice (Cursor IDE, MCP servers of my own design).

Work experience

NOVA Energies LLC (Moscow) — Technical Expert & Support Engineer

September 2023 — present · remote

Energy sector · engineering data management systems; by task shape — comparable to Harvester and a corporate EDW web portal (collect, process, and publish data, EPC digital-twin context). The team lead sets priorities and direction; below is my contribution and two cases (Harvester, EDW web portal).

Responsibilities

  1. Development and maintenance of services for collecting, processing, and publishing engineering data.
  2. Development and maintenance of solutions for publishing engineering data in the EPC digital-twin context: documents, tags, attributes, relations, and related entities.
  3. Architecture review and improvement proposals; feature work and production support.
  4. Introducing dependency injection, growing unit testing; documentation (modules, onboarding, engineering knowledge base).
  5. Agile practices: DoR, DoD, acceptance criteria; helping build a predictable delivery process.

My contribution — Harvester system (case, STAR)

Situation: a legacy system (in the UI and on IIS the product is named Harvester): modules written in different styles; evolutionary growth; requirements often conflicted and changed mid-flight. We needed stability and performance on large volumes (**1M** objects, relations, and documents with attributes). Switching tasks/modules raised cognitive load; documentation and code comments were missing or stale.

Goal: speed up new features and changes, reduce mental load when picking up others’ work, improve transparency for users, and stability of the prepare → validate → publish path into the corporate web portal.

Actions:

Result:

My contribution — EDW web portal (case, STAR)

Situation: after several Western vendors left the market, support ended for products in the AVEVA line (including NET Portal, AVEVA ISM). To keep working with engineering data we needed a replacement and less dependence on unavailable support and updates.

Goal: per agreed plan — MVP of a corporate web portal: view documents, tags, and relations, search and file handling (incl. preview) so users could continue without the original vendor.

Actions:

Result: users keep running projects, uploading and updating engineering information despite end of support for prior products and external software constraints; integration → portal DB → UI covers EPC-style viewing and update scenarios.

Team outcomes (beyond the cases above; under the team lead)

Reduced vendor lock-in risk and higher modularity; more testing and CI/CD; better performance and resource use on some paths after profiling and targeted fixes.

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

February 2022 — September 2023 (1 year 8 months)

Electron-Service LLC — software technician

August 2020 — February 2022 (1 year 7 months)

Gazprom Neft — Digital Solutions — Lead .NET Developer

September 2017 — March 2020 (2 years 7 months)

Domain: electronic document management (EDM) on IBM Document Manager; the solution covered the full cycle: from scanning primary documents (accounting and related) — custom software around TWAIN and production scanners — through SAP integration and control of posting documents in the accounting system.

Responsibilities

  1. Development and maintenance of EDM modules: WCF services, integrations, and over time extracting microservices from monoliths.
  2. Refactoring toward SOLID; multithreading (scanning, uploads, background flows).
  3. Use of .NET Reflection for non-trivial debugging and architectural workarounds (including scanner driver interaction and UI threads).

Architecture (context)

Stack: .NET Framework 2.0–4.8, MongoDB, Quartz.NET. MongoDB and Quartz powered a document processing pipeline: jobs in collections, background services moved them between collections along the business process.

Case: assigning a document package “curator” (STAR)

Situation: each document package had a responsible curator for processing deadlines; we needed to compute that person from the org chart: for a line employee — their direct manager; if missing — walk up the hierarchy.

Goal: correct curator from the reporting tree without duplicating logic for each new client UI.

Actions:

Result: the team saved time reimplementing rules; curator logic stayed in one place.

Case: custom package viewer and unit tests (STAR)

Situation: the platform UX increasingly limited scenarios; we needed document packages to hold not only files (including PDF) but nested packages — the high-level ECM API made that awkward or impossible.

Goal: move off high-level API and build a custom desktop package viewer on low-level storage API (same layer as above), with acceptable UX for the new composition rules.

Actions:

Result: manageable UI architecture and testability instead of “manual only”; foundation to grow the client without COM/API details in the view layer.

Case: hang, memory dump, and Reflection (STAR)

Situation: scanning used TWAIN.NET (wrapper over TWAIN) from a background thread. The app hung “nowhere”: silent logs, no exceptions, hard to reproduce locally; highest-priority incident; investigation lasted several days.

Goal: find the deadlock and remove it without months of guessing.

Actions: suggested a memory dump of the hung process and thread stack analysis. The dump showed: through a dependency chain the app subscribed to Windows user settings change notifications; per WinAPI docs those must run on the UI thread, but the chain led handling off-thread — on the event everything froze. Found the subscription via .NET Reflection and unsubscribed in a few lines.

Result: hang fixed. Repro was subtle: enable desktop wallpaper slideshow — on image change the OS sends the notification and the bug triggered reliably.

Outcomes (beyond cases)

Refactoring monoliths toward microservices where it made sense; ECM (Java) ↔︎ .NET integration, background pipelines on MongoDB / Quartz and accounting (SAP); desktop package viewer with MVVM, Rx.NET, unit tests via Microsoft Fakes and abstraction over COM storage API; memory-dump debugging, multithreading, WinAPI/UI thread, and Reflection to find hidden subscriptions in third-party code.

Education

Omsk State University named after F. M. Dostoevsky, Omsk.

Faculty of Mathematics — until 2019

Applied mathematics and computer science · incomplete higher education

Faculty of Physics — until 2017

Applied mathematics and physics · incomplete higher education

Faculty of Computer Science — until 2013

Computers, complexes, systems and networks · incomplete higher education

Skills

Languages and platforms: C# (8+ years), .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

Architecture and practices: microservices, SOA, REST API, GraphQL (HotChocolate), WCF, SOLID, design patterns, DDD (elements), feature-based architecture, dependency injection, unit / integration testing, Agile (DoR / DoD / AC), BPMN

Data and integrations: SQL Server, MongoDB, Dapper, RepoDb, Linq2db, RabbitMQ, CSV / XML / XSD pipelines, SAP integrations

AI and agent tooling: MCP server development (Model Context Protocol), Roslyn API, Debug Adapter Protocol (DAP), Whisper integration, prompt engineering, structured context management, AI safety guardrails

Debugging and systems: memory dump analysis, thread debugging, .NET Reflection, COM interop, TWAIN, background processing (Quartz.NET), reactive programming (Rx.NET / System.Reactive), MVVM

Tools: Git, GitHub, GitLab, Docker (basics), CI/CD, PowerShell, Cursor IDE, VS Code, Visual Studio

Languages: Russian — native; English — B2 (upper intermediate)

Open-source projects (MCP)

Public GitHub repositories — Model Context Protocol servers for Cursor and compatible environments: they give the AI assistant access to tools (build, debug, C# semantics, etc.), not just file text.

Card schema (Purpose / Motivation / Vision and agent hints): open-projects/README.md.

Licenses and details are in each repository’s README.

Additional information

Medical context (transparent for employers): Group I disability (cerebral palsy; mobility with elbow crutches). Does not affect the ability to perform developer duties — I state this upfront to avoid surprises at offer stage.

Beyond development I can help with: