Why don't you write tests?

Mar 25, 2025

Most projects I’ve worked on had only a handful of tests — if they had any at all. For me personally, those projects were harder to work with than the few where tests were considered a must.

Over time, I’ve put together my own list of reasons why developers don’t write tests. Let’s dive in:

1. We don’t have time

This is probably the most common excuse. Tight deadlines push developers to focus solely on delivering features and skip writing tests. I’ve heard things like:

“Our code changes so fast… we can’t afford to spend time rewriting tests every time we change the code.”

But without tests, these changes feel risky, don’t they? When we add new features, fix bugs, refactor, or optimize, we want to keep the existing behavior intact. existing-vs-new (“Working Effectively with Legacy Code”, Michael C.Feathers)

Without tests, we’re often afraid to change code because we have no idea what might break. As a result, we make changes slowly, cautiously, and often redo the same work multiple times. So… is the lack of time really the problem?

2. Lack of experience

In my opinion, this is the most honest reason. And it’s fine — at least for junior developers. It’s perfectly normal for someone just starting out to not know how to write unit or integration tests.

But what about senior developers? They rarely admit they don’t know how to write tests. Instead, they’ll find countless “reasons” why there are no tests in the project.

3. Tests are for QA engineers

This was exactly what I thought at the beginning of my career. Unfortunately, some developers still think this way.

Sure, some QA engineers do write automation tests using tools like Selenium (often in a separate repository), but writing unit and integration tests is still the developer’s responsibility. These tests live right next to your production code — and nobody knows that code better than you do.

4. Legacy code

I love this quote from “Working Effectively with Legacy Code” book:

legacy code is simple code without tests

It’s short and painfully accurate. And here’s the vicious cycle: we don’t write tests because the legacy code is too complex, and the legacy code is so complex because we never wrote tests in the first place. The book I just mentioned gives great practical strategies for breaking this cycle.

5. Lack of testing culture

If management or senior developers don’t value testing, the rest of the team probably won’t see it as a priority either. You might have heard about the post from a former Booking.com engineer who said:

I am not allowed to write tests.

What? 😅 Even though some people later claimed it wasn’t entirely true, it’s clear from many stories that tests are scarce and largely ignored.

Sure, Booking.com still works fine — it’s possible to run a business without tests. But it’s harder, more stressful, and definitely less enjoyable. With tests, you simply enjoy your work more.