Focus

Software Quality

Articles, podcasts, talks, and more about Software Quality.
Blog Post

Using the space, not optimizing the treadmill

Features per unit of time is not a meaningful metric. What counts is whether they satisfy a real user need and contribute to a desired outcome. Agentic development opens up the space to finally take that seriously.

Blog Post

Understanding AI Coding Patterns Through Cognitive Load Theory

AI coding assistants either severely harm learning or enhance it beyond manual coding—depending entirely on interaction patterns. A recent study reveals six distinct patterns with dramatically different outcomes. We’ll examine why through cognitive psychology and explore the study’s limitations.

Blog Post

AI and Elaboration: Which Coding Patterns Build Understanding?

Developing with AI through the cognitive Lens

Blog Post

Speed vs. Skill

Every AI coding tool promises the same thing: unprecedented speed, effortless productivity, freedom from tedious work. The pitch is compelling. But what if feeling more productive and being more capable aren’t the same thing? Research shows that automation makes us feel more productive while eroding our skills. Let’s examine this tension through the lens of cognitive psychology.

Blog Post

Context Engineering: Managing AI-Generated Code Complexity

AI tools make developers more productive at writing code, but can overwhelm code reviewers with massive changes. Learn practical strategies for managing context in AI-assisted development to keep your code comprehensible, your reviews manageable, and your team’s productivity genuinely improved. Small scope was always good practice—with AI, it’s essential.

Blog Post

Git Clarity: Building Meaningful Commits and Linear History

A personal workflow for intentional development and cleaner Git logs

Blog Post

A Governance Framework for Digital Sovereignty

In an increasingly connected world where digital infrastructure forms the backbone of our economy and society, the topic of digital sovereignty is gaining more and more attention. For decision-makers in German-speaking countries, this goes far beyond merely selecting a cloud provider. It’s about strategic agency, resilience, and the ability to actively shape one’s digital future. This article explores how a robust governance methodology can help organizations not only understand digital sovereignty but also put it into practice—without sacrificing convenience or innovation.

Blog Post

Technical and other Debt in IT Systems

This article explores the many hidden forms of technical debt that silently slow down IT teams—far beyond just messy code.

Blog Post

Internal Development Platforms

Shift Down Instead of Shift Left

Blog Post

Rules, Tools, and Teamwork

Static code analysis. A necessary evil? A lifesaver? A constant struggle? Let me show you a few important things that might make your life with code analysis easier.

Blog Post

Rate Limiting with Spring Boot, Bucket4j, and Redis

Let’s implement rate-limiting protection for multiple Spring Boot server instances using bucket4j and redis to have the solution on application level.

Blog Post

Rate Limiting with Spring Boot

Blog Post

Testing your GitLab CI/CD pipeline

If you develop a pipeline as a service for other development teams you should treat it as a product and establish product development processes, a versioning strategy, etc. around it. Besides that, as potentially many teams will use and rely on your pipeline you want to make sure that new features don’t break existing functionality. This ensures that your customer base remains happy and able to deliver business value. Therefore you need some sort of testing and we will demonstrate a way to (integration-) test your GitLab CI/CD pipeline.

Blog Post

Shortcomings of ISO 25010

Published in 2011, the ISO 25010 standard on software product quality lacks pragmatism and practical applicability. Terms like scalability, deployability, energy efficiency, safety, or code quality are missing. This article explains these shortcomings and shows that even the (draft) update from 2022 still needs polishing…

Blog Post

Software quality in the context of value chains and evolution

Mapping of quality attributes on a Wardley Map for a more informed assessment of software systems

Blog Post

Quality Driven Software Architecture - Revised

Quality is the raison d’être for software architects: Our systems should be reliable, performant, scalable and user-friendly. Systems should be build and maintained cost-effective and future-proof. Every IT professional knows that this combination of characteristics means hard work. The article shows how you can methodically construct quality.

Blog Post

Test organization and naming

As our system grows, so will our test suites. For our production code, we have learned techniques to keep it maintainable. For example, we try to structure our logic into sub-aspects, put them in specific locations and give the units meaningful names. We want to achieve the same for our tests. One of the main goals is that a developer - or generally speaking, the person who has to maintain the test - knows where to find which test. We also want to understand as quickly as possible what the test is for and what might be the reason for a failing test.

Blog Post

Test Strategy

Blog Post

What’s in a Name: Quality

We use the word quality colloquially for something “good” – but we usually leave open what exactly we mean by it. This article illustrates that we should be a little more precise in this regard.

Blog Post

Tests Granularity

In two previous posts we discussed the benefits of automated tests and the properties of a good test. So far we were trying to avoid differentiating the tests in any way. This time we want to address one way how tests can be classified: tests granularity.

Blog Post

Anatomy of a Good Test

Blog Post

Why you should write automated tests

This blog post gives an overview of the most common benefits gained by writing automated tests. It starts in a place where most of the projects we’ve seen so far are: tests are written as a last step of the development process. Then it shows additional benefits that could be gained if we all gave the tests a bit more focus and care.

Blog Post

Visualizing the progress of a refactoring into a hexagonal architecture using jQAssistant

In my last project, we decided to refactor the inner structure of one of our services into a Hexagonal Architecture. It was clear that this was no task that could be done within a couple of days. During this long-running refactoring, we wanted to make our progress visible. Where are we now? What did we already have achieved? What do we still have to do? In this blog post, I describe the approach we took and how it helped us with our task.

Case Study

HILFE FÜR JUNGS (“Help for Boys”): Reliable software for mobile consultations