One thing that really threw me for a loop was back when I started learning about TDD. I tried to apply it to literally everything I coded. This caused a lot of paralysis because I was worried about whether I was testing the right way. Over time I came to a compromise. Basically, if I have a good understanding of the design and what I want to build and I know it is going into Production I use TDD. If I&#x27;m not entirely sure what I am building or I&#x27;m exploring an idea or spiking&#x2F;prototyping something then I just write the code with little regard for things like speed or design patterns.