Recent Posts

Effective IntelliJ: Part 1

4 minute read

There are some features in IntelliJ that I consider rather foundational, but I often see the average developer not using them and doing things the hard (and ...

Intro to Mutation Testing

3 minute read

Mutation testing is a technique for analyzing the quality and effectiveness of your tests. Despite being very simple to set up (at least in Java) and able to...

The Myth of the Inverted Test Pyramid

1 minute read

Every time I see someone advocating for inverting the test pyramid, or testing everything with slower, more flaky higher level tests, it’s well intended but ...

What is a DevOps Team?

less than 1 minute read

A DevOps team is a development team that practices DevOps. It is not an operations team that handles deployments and build pipelines, monitoring, infrastruct...

Refactoring (Mis)understood

11 minute read

People refer to all kinds of changes to existing code as refactoring, which is a common case of semantic diffusion.

Shaders – Part 1: Post-processing

20 minute read

In this series, we will look into what games and game engines do to create those neat graphics effects that add to a game’s realism and/or aesthetics: Effect...

Code Review: Text-based Monopoly in Java

25 minute read

Originally posted on Code Review Stack Exchange on 07.09.2021. Question asked by user “DexMax” and licensed under CC BY-SA 4.0. Answer provided by me and lic...

StringBuilder Cargo Cult

2 minute read

This post is based on an answer I posted on Stack Overflow. The code example was submitted as part of the question by Bruno Rozendo under CC BY-SA 3.0. Note:...

Render Javadoc/KDoc within IntelliJ

less than 1 minute read

Did you know that IntelliJ can render documentation directly within the IDE? I discovered this a few weeks ago and have used it since. I think it’s a vastly ...

Cargo Cult in Software Development

5 minute read

The phenomenon of cargo cult is very common in the software industry. With this article I want to raise awareness for the problem of cargo cult and provide s...

Not an Acronym

less than 1 minute read

People in the tech industry infamously like acronyms. So much indeed that they sometimes turn perfectly normal words into something that looks like an acrony...

Clean Code is Not a Style Guide

1 minute read

The term is sometimes used to refer to a specific and opinionated way of writing code, the one described in the popular book “Clean Code” by Robert C. Martin...

The Purpose of Getters and Setters

2 minute read

First of all, I don’t advocate for getters and setters at all. Don’t use them (especially setters) if you find an alternative. There usually is a better desi...

SOLID Principles: Common Misconceptions

8 minute read

The SOLID principles for software design can be a helpful thinking and communication tool of a software developer, even if perhaps just as a reason to think ...

Effective Git: Beyond the Basics

6 minute read

We all have to start somewhere. For most of us, our Git journey begins with about 5 commands and the mental model of a file-sharing tool like Dropbox or OneD...

The CI/CD Misconception

5 minute read

The terms CI (continuous integration), CD (continuous delivery), and the umbrella term CI/CD are often misunderstood and misused. Many think that continuous ...

Taste Your Own Soup

2 minute read

Imagine this scenario: A restaurant cook learned from their grandmother the secret of her tasty soup. “Always put a tablespoon of salt in your soup”. And so ...

Technical Leadership Beyond the Default

3 minute read

Based on my observations and experiences others told me about regarding different kinds of technical leads or lead developers (including myself in some small...

Code Review: Common Beginner Mistakes

4 minute read

After a long time, I once again did a few code reviews on Code Review Stack Exchange. One of them (a beginner’s implementation of a rock-paper-scissors game)...

SRP Misunderstood

1 minute read

The Single Reponsibility Principle (SRP) is commonly misunderstood1. Often you might hear explanations like “a class should do only one thing”, sometimes eve...

Best Practice: Code Review Review

less than 1 minute read

Your team is doing feature branching and pull requests, but the code quality is still subpar? What many people don’t know: The code reviewers are simply appr...

Git Tip: Word Diff

less than 1 minute read

If you use Git in the command line, when using commands like git diff and similar ones, it does a line-by-line diff by default. This is also what most pull r...

Intentional Commits: Continuous Feedback

10 minute read

Intentional commits is the term I use for habits and workflows that help with creating Git commits1 exactly the way we intend to. The opposite are incidental...

Technical Empathy

2 minute read

Technical empathy is one of those concepts that seemed so obvious once I was aware of them, and yet it was quite a revelation when I first heard of it from M...

Do Unit Tests Make Refactoring Harder?

3 minute read

This is probably one of the most common narratives against TDD (test-driven development) that I hear. It’s often stated by developers who may have shortly tr...

Help, I’m Drowning in Emails!

3 minute read

When pair programming, I occasionally see software developers with a full inbox. Like, literally hundreds or even thousands of unread emails amassed over mon...

On Line Length Limits

7 minute read

At the beginning of a new project, when the team (or the team lead) chooses a coding style, a common approach is to use a popular style guide for the program...

Accessibility for Color Blindness

3 minute read

Did you know that roughly 1 in 12 men are affected by red-green color deficiency? That’s about 8 percent of men and between 4 and 5 percent of the population...

On Formatting Commit Messages

4 minute read

Many developers are unaware that there is a quasi-standard convention for commit messages originating from Git itself and the Linux kernel. Following this co...

The Commit Scope Matrix

6 minute read

Commits should be atomic, but the common advice to only separate refactorings from new functionality does not cover the whole spectrum. I use four main categ...

Git is not an Acronym

1 minute read

“Git,” the name of the popular version control system, is not an acronym but an English slang term chosen by developer Linus Torvalds. Many incorrectly spell...

The SRP is not SoC

3 minute read

You might be familiar with the Single Responsibility Principle (SRP), one of the SOLID principles coined by author Robert C. Martin. The SRP states that “A m...