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