i love analogies and this is a great one
“Ultimately, programming is hard. Often, we are smart, so we succeed. TDD is there to help us out when we’re not so smart.
we can use the metaphor of lifting a bucket of water out of a well with a rope
when the well is not deep and the bucket isn’t very full then it is easy
the point is that you get tired after a while
tdd is like having a ratchet that lets you save your progress, take a break, and makes sure you never slip backwards
this way you don’t have to be smart all the time
from: Test-Driven Development by Kent Beck