TDD: Test Driven Development
I am a TDD convert, when I heard about it, I thought it was a good idea but never really practised, after some practice I can say that it's the best way to develop, and this can be subjective and objective.
I do find that it can be easy for less experienced developers to be either be stuck on how to write tests, forget the refactoring stage, and keeping the discipline of only writing code that is tested.
But I find that after some pairing with people who do TDD well and practising a bit with some katas, it's hard to go back.
One criticism of TDD is that sometimes, you're just exploring, so you really don't know what to test for. My reply to that is that yes, I agree that for those scenarios, I do prefer not to do TDD for that scenario, playing around with APIs or doing prototypes/exploratory work. Some people would say that you can still TDD for those scenario (which is true), but it may be because I'm not disciplined enough, or that it's just my default way of coding, but I prefer to just try things out and see the output before writing my tests.