Software that works.
In production.

A software consultancy in Stockholm helping teams ship better software using Test-Driven Development, Behaviour-Driven Development, Clean Code, and Continuous Delivery.

Continuously deploying to production for more than 15 years, underpinned by a thorough safety net of tests.


Latest from the blog

Thoughts on testing, craftsmanship, and getting software into production.

2026-07-01

A Revival for Test First, If We Don't Waste It

Using a coding assistant might turn out to be the best thing that has happened to Test-Driven Development (TDD) so far. This is the seventh post in my series about coding with an assistant.

For more than twenty years the objection to TDD was always some version of the same thing. No time. Too much typing. We will add the tests later. The assistant removes that objection. It types the test for you in seconds and it does not get bored doing it. On top of that, the path of least resistance with an assistant now runs straight through the test. I made that case in Fitness Functions for an AI Coding Assistant. To get useful work out of the assistant you have to tell it what done looks like, and a description of done that a machine can check is a test. TDD stops being the disciplined choice and becomes the efficient one.

A small case from the other day. We have our own frontend abstraction in TypeScript for calling the backend. It adds the authentication and context every call needs. A colleague had written a plain fetch to download a file. It added those details correctly, but it went around our convention of taking the call mechanism from a context, and that convention is what lets us drop in a mock and test the component. The plain fetch could not be tested that way. Before, I would have mumbled, filed a tech debt issue, and then taken the same shortcut myself to keep moving. This time I asked the assistant to file the issue, add the missing API, and use it in the component I was working on. The component went back to being testable, and doing it right stopped being the expensive option.

I want to believe a revival of test first is coming. I am not sure it is. This post is me being pessimistic about developers, myself included, and hoping I turn out to be wrong.

AI BDD Coding assistant TDD
2026-06-24

Fitness Functions for an AI Coding Assistant

This is the sixth post in my series about working with an AI coding assistant. The earlier posts covered getting started, observations, rules, results, and communication. This one is about the gap between a rule the assistant might follow and a constraint it cannot get around.

AI Coding assistant TDD
2026-06-15

Pipe Suggestions Straight to the Clipboard

My AI assistant suggests commit messages. For a while I copied each one out of the terminal by hand, selecting the text with the mouse and pasting it into my git client. It works, but selecting text in the terminal drags the line breaks along with it. The terminal wraps the text to fit its width, and those wraps come through as real line breaks in whatever you paste into. Then you have to clean them out.

AI Coding assistant
View all posts

Training

Hands-on courses on testing, automation, and getting software into production. All available upon request.

Behaviour-Driven Development

Building shared understanding through conversations and concrete examples. 2 days.

</>

Test-Driven Development

Red, green, refactor. Testing as a design discipline, not an afterthought. 2 days.

Web Testing with Selenium

Maintainable browser automation that catches regressions before your users do. 2 days.

Web Testing with Playwright

Fast, reliable, cross-browser testing for modern web applications. 2 days.

Specification-Driven Development with AI

BDD and TDD meet AI assistants. A renaissance for specifications. 2 days.

Fullstack Testing

From React to database and back. Test every layer with confidence. 2 days.

Continuous Deployment

From idea to production in hours. Build the pipeline and the discipline. 2 days.

Testable Architecture

Hexagonal architecture. Easy to test, easy to change, easy to deploy. 1 day.

🔧

Refactoring and Simple Design

The four rules of simple design. Safe, incremental improvements that pay off technical debt. 2 days.

All courses

We speak about

Available for conference talks, meetups, and team workshops.

</>

Test-Driven Development

A pragmatic guide to writing tests first and letting them drive your design.

Behaviour-Driven Development

It's not about the tools. Building shared understanding through examples.

Continuous Integration

Ship with confidence. Automate your build, test, and deployment pipeline.

All speaking topics

Upcoming speaking engagements


Recent speaking engagements

2026-05-14
Presentation

Pairing with Claude: My Experience Using AI for Test-First Development

GeeCON Krakow, 2026 — Krakow, Poland
2024-10-22
Presentation

The four rules of simple design

JDD, 2024 — Krakow, Poland
2024-05-15
Presentation

Celebrating twenty years of The four rules of simple design

GeeCON Krakow, 2024 — Krakow, Poland
2023-10-19
Presentation

Let’s dive into the topic of testability

GeeCON Prague, 2023 — Prague, Czech
2023-06-14
Presentation

A pragmatic quick guide to TDD

The Developers, 2023 — Cluj, Romania
2023-04-19
Presentation

A pragmatic quick guide to TDD

GeeCON Krakow, 2023 — Krakow, Poland
All events