The paradox of automated tests as a safety net - as the testability of a codebase goes up, the ROI for test automation goes down?!

Automated tests as a safety net are most valuable in codebases with high risk when making a change. Those are conflated, coupled codebases where: 1) the average rate of change per element (method/class) is high and 2) the risk of introducing problems with a change is high (too much coupling). The latter is a consequence of the former, and codebases with long methods and classes inherently exhibit these characteristics.

»
Author's profile picture Dragan Stepanović

You can force yourself to tease out domain logic

by intentionally not adding integration tests.

»
Author's profile picture Dragan Stepanović

When the cost of trying out an idea is high

the idea of a person with the highest positional power usually wins.

»
Author's profile picture Dragan Stepanović

Teams doing XP

A: “Teams doing XP produce tremendously fewer bugs and have way less rework compared to traditional teams you mostly see in our industry” B: “That’s great, but at what cost?”

»
Author's profile picture Dragan Stepanović

If I had a $ for every time I heard

“pair/mob programming cannot substitute PR code review process. We still need a fresh pair of eyes to look at the changes” I’d have a million € now.

»
Author's profile picture Dragan Stepanović

Tests need to speak domain.

If, say, product managers are not able to understand those tests, then I’d say they don’t speak domain enough.

»
Author's profile picture Dragan Stepanović

Coding without tests

and exponentially increasing the risk of something going wrong as you add more functionality is pretty extreme programming compared to TDD if you ask me.

»
Author's profile picture Dragan Stepanović

It's true that

with async code reviews you’ll often get way less feedback and less ability to build in quality than with continuous code reviews (pair/mob programming), but at least you’ll also choke the flow and delay delivery.

»
Author's profile picture Dragan Stepanović

If you try to eliminate rework you’ll maximize it

Here’s an interesting phenomenon when it comes to the concept of rework in knowledge work. You can only minimize rework, but you cannot eliminate it. If you try to eliminate it, you’ll maximize it.

»
Author's profile picture Dragan Stepanović

The paradox of people not wanting to write tests

because they are confident their code works and “tests slow me down”, and then accumulating cruft and things taking ages to implement because they are scared to change the code because there are no tests.

»
Author's profile picture Dragan Stepanović