Oskar Dudycz

Pragmatic about programming

Software Architecture Consulting

Get focused, practical help with architecture decisions, Event Sourcing, consistency boundaries, distributed processes, and event-driven systems.

I help teams make difficult architecture decisions before they become expensive production problems. My consulting is practical and collaborative: we work with your requirements, model, code, and operational constraints rather than applying a generic architecture blueprint.

If you are considering Event Sourcing or an event-driven architecture, already using them in production, or trying to untangle a system that has become harder to change, we can work through the problem together.

Book a free introductory call

The first conversation is free. We will clarify the problem, the context, and whether I am the right person to help. You will leave with a suggested next step even if we decide not to work together.

Book a free introductory consulting call

You can also send me a message.

How I can help

Architecture review and decision support

We review the current architecture, its constraints, and the decisions creating the most risk. You receive concrete recommendations, trade-offs, and an implementation path rather than a diagram that cannot survive contact with production.

Typical topics include:

  • service and module boundaries,
  • consistency and concurrency guarantees,
  • synchronous versus asynchronous communication,
  • distributed workflows and failure handling,
  • message delivery, ordering, retries, and idempotency,
  • event contracts, schema evolution, and observability.

Event Sourcing adoption or recovery

I can help you decide whether Event Sourcing fits your problem, design a focused adoption path, or review an existing implementation that is becoming difficult to operate or evolve.

We can work on event modelling, stream boundaries, business logic, projections, testing, event versioning, migrations, privacy, and production operations. The goal is not to introduce more ceremony. It is to preserve useful business information while keeping the system understandable.

Modelling and consistency workshops

For complex business processes, we can run a focused workshop with developers, architects, product owners, and domain experts. We move from requirements through process and temporal modelling to technical boundaries and executable examples.

This is especially useful when a team needs to validate:

  • where consistency boundaries should be drawn,
  • which operations may run concurrently,
  • what must happen synchronously,
  • how messages move between parts of the system,
  • which guarantees the business actually needs.

Hands-on implementation support

I can work directly with your team on code and design: reviewing pull requests, pairing on a vertical slice, creating a production-oriented reference implementation, or helping establish testing and operational practices that the team can continue independently.

Ways of working

The engagement can be shaped around the problem:

  1. Focused advisory session — resolve a specific decision or review a proposal.
  2. Architecture or code review — inspect the system and deliver prioritised findings and recommendations.
  3. Team modelling workshop — build shared understanding and turn it into technical decisions.
  4. Ongoing advisory support — work with the team through implementation and rollout.
  5. Private training — adapt one of my practical workshops to your system and team.

I work remotely with teams worldwide and can also run on-site workshops by arrangement.

Consulting can be combined with hands-on learning when the team needs both a decision and the skills to carry it forward:

Why work with me?

I have spent more than 18 years building software close to the business as a developer, technical leader, and architect. I maintain the Emmett open-source toolkit and publish practical material about Event Sourcing, CQRS, modelling, and event-driven architecture.

My approach is deliberately pragmatic. Event Sourcing, messaging, and distributed systems are tools—not goals. I will challenge an unnecessary architecture as readily as I will help implement a useful one.

You can read more about my background, browse my articles by topic, or watch my conference talks and videos.

Let’s discuss your problem

You do not need a polished brief. Bring the problem, constraints, and questions you are struggling with.

Book your free introductory call or contact me by message.