Code that’s hard to write tests for tends to be code that’s too tightly coupled and lacking proper interface boundaries.