There is no doubt that tests are super critical and we must write it. However, I am curious about your approach to it, do you follow TDD religiously? Or you write tests after writing actual code. What's your experience with TDD, have you found it to be effecting the design of your code in any way?