Test driven development is simply the process of defining what you expect to happen first before coding. This presents the opportunity for you to code only that which is required to pass the test.
You only need to code enough. Enough is the most precise word we have in the English language. It is never too much or too little. It is always simply enough!
Test driven development is a path to doing enough.