When it comes to flow, the biggest problem inherent to systems based on async work is that they make the cost of starting new work effectively zero (the other side doesn’t have to be available in order to start new work)
If you reduce the transaction cost in the system but don’t see a follow-through behavior of reducing the batch size, consider ways of, even artificially, increasing the holding cost in order to incentivize that batch size reduction.
I noticed that teams that use a process that makes reviews expensive (PRs and async code reviews are one of those) also tend to have refactoring as a separate task or a separate PR.
when people have a chance to get immediate answers compared to when there’s a delay involved.
And the difference are the questions that enable curiosity, building relationships, and trust.
Over the years, I came to realize that usage of some test doubles and popular patterns in test code can actually be an indication of a deeper design problem in production code.