The problem I had was that I knew were I needed to go, but instead of taking small steps, I kept trying to take one big leap at once. Which brings me to the analogy of Agile to good programming habits (and TDD would be one of them). One of the advantages in Agile development that I really like is the small steps (iteration) we do in order to reach our goal.