Skip to content

Menu

Software engineering

I am an agile and pragmatic software engineer and technology consultant with a passion for driving innovation and excellence.

My role often transcends traditional boundaries, embodying the essence of an enabling team consultant, tech lead, architect, full stack developer, and QA.

Software engineering is a multifaceted discipline that has to integrate technology, social team dynamics, and business strategy. This makes software engineering a complex domain and many decisions are tradeoffs.

The only constant is change. Coding agents have moved the bottleneck from writing code to specifying intent and verifying results — and as review itself becomes automatable wherever the code is simple and well-tested, the constraint settles back onto intent. The work shifts from conductor to orchestrator: from pairing in dialogue to dispatching tasks that run autonomously for hours.

Technology

At the core of software engineering lies a robust set of technical practices encompassing programming, testing, debugging, and architectural design.

  • Clean code
  • Test-driven development (TDD)
  • Continuous integration and delivery (CI/CD)
  • Automated builds
  • Domain driven design (DDD)
  • Extreme programming (XP)
  • Shift security left with threat modeling
  • Object-functional programming
AI-assisted development

Working with coding agents does not remove the need for discipline — it relocates it. Rigor moves out of the code itself into the specifications, tests, and scaffolding that surround the agents. The mode shifts from conductor to orchestrator: from pairing in dialogue to dispatching tasks that run autonomously for hours — a double diamond (discover, define, develop, deliver) verified by AI agents, trustworthy only when the specs, the harness, and the QA gates are good enough.

  • Spec-driven development (SDD): the specification as the primary artifact, code as a derived one — intent is now the bottleneck
  • Engineer for reviewability: simple components and high branch coverage with BDD-style tests, so review can increasingly be automated
  • Context engineering: agent-readable conventions, steering files, and living documentation
  • AI as adversarial reviewer of requirements, designs, and code — not just as a generator
  • Keep humans in the loop where compliance, security, or business risk demands it
  • Vibe coding for prototypes and spikes, structured workflows for production
  • The durable craft is human: clear communication, abstract thinking, mental modelling
Team collaboration

The success of software projects often hinges on the dynamics within development teams. Agile methodologies promote iterative cycles of planning, prioritization, and execution, fostering a collaborative environment where communication and fast feedback is key.

  • Pair programming
  • Team topologies
  • Four key metrics ("Accelerate"/DORA)
Operations

A strong DevOps culture, which blends development and operational activities, enhances the efficiency and reliability of software by fostering closer collaboration and integration between teams.

  • The three ways of the DevOps handbook: flow, feedback, continuous learning
Architecture

A decentralized approach to architectural decision-making is important, to empower teams to make choices based on their specific contexts and challenges.

  • Evolutionary architecture
Business alignment

The strategic aspect of software engineering involves aligning projects with the organization's broader goals and objectives. The overarching aim is to ensure that software engineering efforts support the organization's direction and add value.

  • Fast feedback, e.g. sprint reviews
  • Enterprise Architecture
  • Lean thinking

Standalone websites built with AI, one software engineering topic per site:

Software Development with AI — six essays on user stories, specs, and agentic practice

Software Development with AI

Software engineering

Six essays on what AI actually does to the practice of building software: writing code is no longer the bottleneck — the work moved to communicating intent upstream and verifying output downstream.

The Ten-Year Note — a 2026-2036 timeline for software development and consulting

The Ten-Year Note

Software engineering

A ten-year timeline (2026–2036) for software development and consulting, priced on one thesis: the artifact got cheap, the accountability didn’t. A claims audit and a nine-metric dashboard state in advance what would force a re-price.

Lights On, Lights Off — a tutorial on AI software factories, lit and dark

A textbook on AI software factories: “lit” ones keep a human reading the diff, “dark” ones let machines verify machines. Its advice is to earn the dark with evidence, one narrow loop at a time.

Ubiquitous — an eight-module introduction to Domain-Driven Design

Ubiquitous

Software engineering

An eight-module introduction to Domain-Driven Design — Ubiquitous Language, strategic design, tactical building blocks — taught through a single running order-fulfillment example.

Claude Code for Java Developers — a hands-on course for pairing with Claude Code on the JVM

A hands-on, eight-module course teaching Java and JVM developers to pair effectively with Claude Code — from first session to team-wide adoption, with Maven, Gradle, Spring, and JUnit examples throughout.

Articles about Software Engineering

The seven wastes of software development
Jan 13, 2026 software-engineering

The seven wastes of software development

Lean Thinking is more than just a set of management tools; it is a philosophy centered on maximizing customer value while relentlessly eliminating waste. At its core, it challenges us...

#agile #project-management #quality-assurance
Read more
Nov 11, 2025 software-engineering

AI Crosses from Exploration into Engineering

The Thoughtworks Technology Radar has always been more than a list of tools. It captures what happens when technology moves from experimentation to everyday practice. In its 33rd edition, one...

#ai #gen-ai #thoughtworks
Read more
Nov 01, 2025 software-engineering

Announcing NKP 0.1: Static Analysis for Kotlin Projects

I’m excited to share the first MVP release of NKP (aNalysis of Kotlin Programs), a command-line tool for analyzing Kotlin codebases and uncovering architectural insights.

#jvm #architecture #kotlin #object-functional #quality-assurance
Read more
Java in the Technology Radar
Sep 03, 2025 software-engineering

Java in the Technology Radar (JavaSpektrum)

I’ve written a new article for JavaSpektrum: “Java im Technology Radar – Totgesagte leben länger”. The piece looks back at Java’s journey through the eyes of the Thoughtworks Technology Radar...

#java #article #jvm #thoughtworks
Read more
Structured Concurrency in Java 24
Mar 31, 2025 software-engineering

Structured Concurrency in Java 24 (JavaSpektrum)

I’ve written an article for JavaSpektrum 2/2025 about Structured Concurrency in Java 24. The article covers JEP 499, Java’s fourth preview of Structured Concurrency, which aims to make concurrent programming...

#java #concurrency #article #jvm #parallelism
Read more
Coroutines in Kotlin at KKon 2021 Warmup
Apr 23, 2021 software-engineering

Coroutines in Kotlin at KKon 2021 Warmup

In my talk “Nebenläufigkeit mit Koroutinen strukturieren” at the KKon 2021 Warmup I explained how to structure and organize concurrent programs with coroutines in Kotlin.

#kotlin #parallelism #concurrency #talk #slides
Read more