Recently I was assigned to a project which was already in its midway. It was TDD environment. Everyone was following right principle of Code Unit Test First and Implementation
Testing before implementation is always encouraged. Aside from actually fixing bugs that may have been existing in your software it helps weed out what bits of your code are necessary as an engineer may have the tendency to 'over code'.
What I always tell myself "If i was writing software for a plane auto-pilot, what would I do to make assure myself that that piece of software would never fail?" Would these people doing it in reverse put their family on auto pilot before testing the software? Thinking like this helps give a disciplined approach to software engineering.