On influencing change

Some of the things I think about when asked how to influence change in teams/orgs as a Principal/Staff engineer:

  • Invest time in building relationships before (big) course-correcting. In the start: a productive relationship is more important than being right. Spend time working together with people and sharing the constraints they are facing day-to-day, it will help you understand their context which makes your future interventions more likely to be useful.
»
Author's profile picture Dragan Stepanović

TBD + TDD + mob programming is way less YOLO

than working on an isolated, long-lived feature branch, with a delayed review, integration feedback, and a lack of tests.

»
Author's profile picture Dragan Stepanović

Change failure rate is a lagging indicator of lead time to change

If you halve the change size, your deployment frequency goes up twice, and now in order to keep the same change failure rate % as before you have to have twice as many failures per change.

»
Author's profile picture Dragan Stepanović

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ć