Dominik Czerwiński

Solution Architect | .NET | Distributed Systems | Cloud

I am a Solution Architect working primarily in the .NET ecosystem. I design business systems so they can evolve without accumulating unnecessary complexity - using DDD, modular architecture, and an approach matched to the scale and context of the system.

I am currently focused on building a practical AI-assisted software delivery model - AI as an integral part of the full development lifecycle.

Photo of Dominik Czerwiński

What I do

System architecture
I design backend system architectures - from modular monoliths to distributed systems. I focus on clear boundaries, consistency and long-term evolution.
Requirements and system boundaries
I translate business requirements into domain boundaries, APIs, and component responsibilities - working with stakeholders before the design decisions are made.
.NET and Cloud
I build solutions using .NET and Azure, focusing on scalability, reliability and maintainability in production environments.
AI-assisted SDLC
I build practical AI-assisted software delivery models - AI integrated across the full development lifecycle, from specification through to production.
Integrations and APIs
I design and develop APIs and system integrations. I maintain contract consistency, stability and the ability to evolve without frequent breaking changes.
Team alignment
I help define responsibility boundaries between frontend, backend, APIs and integrations so teams work from a consistent model.

How I think about architecture

I choose technologies that fit the problem, not the ones that happen to be trending
I match the architecture to the scale of the problem - I avoid over-engineering where a simpler model is sufficient
I design systems with long-term evolution, cost of change, and maintainability in mind
I make conscious trade-offs instead of aiming for a theoretically perfect solution

How I work

Understanding the problem
I start by understanding the business problem, system constraints, and where the current solution stops scaling or becomes too costly to change.
Architectural decisions
I design based on actual constraints, requirements, and scale - not on diagram-driven assumptions. I name the consequences of architectural decisions explicitly.
Simplifying systems
I reduce unnecessary complexity, define clear responsibilities and focus on consistency. I design so that adding a new feature next year doesn't require significant rework of existing components.
Staying close to the implementation
I stay involved beyond the design phase. I conduct design reviews, support the team on difficult cases, and make sure architectural decisions are reflected in production code.

Responsibilities

  • Designing backend, integration, and API architectures
  • Owning architectural decisions from problem analysis through to production
  • Translating business requirements into system boundaries, APIs, and component responsibilities
  • Maintaining architectural consistency across teams and system layers
  • Mentoring developers and technical leads on architecture, DDD, and system design

Get in touch

If you're looking for a Solution Architect or Tech Lead who takes ownership of technical direction - get in touch.

Experience

CSHARK

Mar 2023Present

Domain: sales and order processing, SAP-integrated enterprise platform for a global industrial company

Senior Software Engineer (Technical Leadership / Architecture)

Mar 2023Present

Leading technical direction for sales and order processing capabilities.

  • Designed architecture for order intake, order change and order management flows
  • Introduced modular structure aligned with business domains and process boundaries
  • Designed consistent APIs for internal, frontend and external integrations
  • Clarified responsibilities and flows between backend, frontend, integrations and source systems
  • Coordinated technical decisions across teams
  • Improved documentation, onboarding and long-term maintainability
  • Developing practical AI-assisted development workflows supporting analysis, specification, implementation and review

Sente IT Systems

Feb 2013Feb 2023

Domain: enterprise financial platform with ERP and CRM modules, covering product sales, financial settlements, accounting, and broader business operations

Lead Architect

Sep 2016Feb 2023

Led architecture of a large-scale financial system under legacy constraints, high domain complexity, and limited architectural capacity across the organization.

  • Owned architectural direction for the entire system
  • Led transformation from legacy database-driven system to distributed architecture
  • Designed migration strategy using microservices and strangler pattern
  • Introduced DDD, CQRS, and event-driven architecture
  • Built internal frameworks and engineering standards
  • Coordinated architecture across 60+ developers and multiple teams
.NET Developer

Feb 2013Aug 2016

Development of a financial system using .NET and Firebird.

Education

Wrocław University of Science and Technology

2009 – 2014

Master of Science, Computer Science

IT Systems Design

2013 – 2014

Grade: Very Good
Bachelor of Engineering, Computer Science

2009 – 2013

Grade: Excellent

Key Projects

Legacy System Transformation

Sente IT Systems

Legacy system based on database logic and Firebird, with scalability issues and increasing operational risk.

Approach

  • Migration using the strangler pattern.
  • Gradual decomposition of the monolith into microservices.
  • Moving parts of the processing to real-time.
  • Introducing DDD as the foundation for domain modeling.

Impact

  • Reduced operational risk by decoupling new service logic from high-risk legacy database code.
  • Gave teams the ability to extend and replace individual modules without affecting the rest of the system.
  • Consistent module structure and integration patterns across a 60+ developer project.
Sales and Order Management Domain Redesign

CSHARK

System with fragmented business logic, inconsistent APIs, and growing integration needs.

Approach

  • Domain-driven modularization and clarification of responsibilities.
  • API redesign focused on consistency and external integrations.
  • Separation of logic between backend, frontend, and source systems.
  • Alignment of technical decisions across teams.

Impact

  • New order processing flows can be built on established domain boundaries without redesigning existing ones.
  • Stable API contracts reduced breaking changes for frontend and external integration teams.
  • Clearer responsibility boundaries reduced cross-team coordination overhead per change.
AI-Assisted Software Delivery Flow (Pilot)

CSHARK

Building a practical process for using Generative AI in team work: from project knowledge and specification through implementation to review.

Approach

  • Designed a structured SDLC workflow with defined AI roles: spec writer, implementer, reviewer, and decision support.
  • Built role-based agent configurations and instruction sets for GitHub Copilot and Claude Code.
  • Applied the workflow on a real commercial project - iterating on knowledge base organisation, spec structure, and review cycles.
  • Documented the methodology as a public blog series (ongoing, EN/PL) and published an open-source reference implementation.

Impact

  • Process in active daily use on a real commercial project.
  • Open-source reference implementation at github.com/dczerwinskipl/ai-sdlc-from-scratch.
  • Blog series documenting practical lessons, tooling decisions, and control mechanisms for AI-assisted software delivery.

Tech stack

.NET / C#
Distributed Systems
System Architecture
Azure Cloud
Architecture & Design
MicroservicesModular MonolithDomain-Driven DesignCQRSEvent-Driven ArchitectureClean ArchitectureLegacy ModernizationEvent SourcingStrangler PatternC4 / UML
Backend & APIs
.NET / C#ASP.NET CoreREST API DesigngRPCEntity FrameworkAspire
Cloud & Infrastructure
AzureDockerKubernetes / AKSCI/CDAzure DevOpsGitHub Actions
Messaging
RabbitMQKafkaAzure Service BusNATS
Data
PostgreSQLSQL ServerMongoDBCosmosDBEventStoreFirebird
Frontend
TypeScriptReactReact NativeNext.js
AI
GitHub CopilotAI‑assisted development workflowsInstruction design for AI coding tools

Projects and writing

Alongside commercial work, I maintain personal projects and write. I use them to validate architectural approaches, tooling, and workflows before applying similar solutions in commercial projects.
Open Source

nevo

A .NET testbed for experimenting with CQRS, DDD, and Event Sourcing. I validate architectural patterns here before applying them in production. Stack: .NET, EF Core, PostgreSQL

ai-sdlc-from-scratch

Reference implementation of an AI-assisted SDLC: knowledge gathering, spec, implementation, and review workflows built from scratch. Stack: TypeScript, Node.js

nevo-ui

Monorepo with React component system and experiments with AI-assisted development. Focus: frontend architecture, design system and developer experience. Stack: React, Next.js, TypeScript, Turborepo
Writing