Engineering principles

What you can hold us to.

Twelve commitments we build by — each one backed by something you can read on this website. Not a mission statement, but verifiable practice.

01

Software ages well or not at all.

We design for the cost of every change over the years, not for the day of acceptance. Longevity is the purpose, not a side effect.

Backed by: Software That Still Runs in Ten Years →
02

Reversibility over prediction.

We don't predict the future; we keep change cheap. Irreversible decisions we make slowly — and we write down the why.

Backed by: Entity: Reversibility →
03

Complexity follows necessity.

Simplicity has to be designed; complexity emerges on its own. We don't add structure until a concrete problem demands it.

Backed by: Perspective: Premature abstraction →
04

Business logic belongs in the domain.

The rules that define the business stay independent of the framework — the framework is infrastructure, not the place for the rules.

Backed by: Business logic doesn't belong in controllers →
05

Every recommendation states its price.

There is no recommendation without a trade-off, a cost and the case in which we would decide differently. If you can't name the counter-case, you haven't understood the recommendation.

Backed by: All Reference Guides →
06

We test where failures are expensive.

The value of a test is the change it makes safe — not a coverage number. We test the expensive core, not the trivial parts.

Backed by: When Tests Really Pay Off →
07

Observability is part of the design.

You can only operate what you can see. Observability is a design property from day one, not an add-on after the first incident.

Backed by: Perspective: Observability as architecture →
08

We start with the modular monolith.

A single deployable with clear boundaries is the reversible default. We extract services only when a specific, named force demands it.

Backed by: Modular Monolith vs. Microservices →
09

Mature technology over fashion.

We choose based on context and longevity, not hype — because the limits of mature technology are known, and someone will still understand it in five years.

Backed by: Laravel or Symfony →
10

We run what we build.

Software doesn't end at launch. We design for failure, ship in small reversible steps and stay with the system.

Backed by: Software maintenance & operations →
11

Your code belongs to you.

The project-specific source code and the agreed project artifacts are handed over, together with the knowledge to operate them. You stay technically independent — of every vendor, including us.

Backed by: About Batunet →
12

One point of contact: our management.

Throughout the project, our management coordinates communication and technical decisions. No sales layer in between.

Backed by: Contact →

Principles are there to be tested.

If you see it differently — or have a specific problem — talk directly to our management. Technical, no sales pitch.