Skip to content

About

Architecture in service of product development

Software engineer with ten years' experience designing and evolving complex software systems. Experienced across software architecture, distributed systems, technical strategy and product development in both high-growth startups and large-scale engineering organisations.

I believe the best technical decisions are the ones engineers no longer need to think about. Throughout my career I've used engineering judgement, software architecture and technical strategy to remove incidental complexity, create coherent technical direction and build platforms that remain easy to understand, evolve and extend as organisations grow.

Principles

How I try to work

Architecture earns its keep when it removes decisions from the critical path of product work.

01

Build reusable capabilities

Prefer coherent platform capabilities over a collection of bespoke solutions.

02

Preserve autonomy

Reduce coupling so teams can make progress without coordinating every change.

03

Evolve incrementally

Improve systems in safe, deliberate steps instead of defaulting to disruptive rewrites.

04

Connect direction to need

Tie technical choices to the product and business outcomes they make possible.

05

Simplify the default

Judge success by whether the organisation’s normal way of working becomes easier.

Technologies

What I work with

Roughly grouped by where they sit in a system.

Languages

TypeScriptJavaScriptC#Python

Backend

Node.jsNestJS.NETASP.NET CoreFastAPIGraphQLREST APIs

Frontend

ReactNext.jsTailwind CSS

Cloud & Infrastructure

AWS (Lambda, ECS, EC2, IAM, S3, DynamoDB, OpenSearch, Kinesis)KubernetesDockerTerraform

Distributed Systems & Data

PostgreSQLPrismaKafkaDebeziumCQRSEvent sourcingMassTransit

Also

A few other things

Languages

English (Native), Polish (Basic)