Test driving: Taking small steps
After a while, it is easy to become overly confident in a particular programming language and TDD, and as a result you can fall into the trap of taking larger steps when writing code. The issue is when the steps are too large, the tests can start to fail for reasons that you were not anticipating which then may require a deeper analysis of the code you were just writing, or instead may have to resort to using a debugger.
Being strict in taking small steps whilst you are coding should result in your tests only failing for reasons that you are absolutely aware of. You should be able to foresee every failure/error.