TDD as a concept is simple, but TDD is difficult

Test-driven development as a concept is easy.

Before you write any code, you write a failing test and then write enough code to get it to pass.

But implementing test-driven development is harder.

As well as overcoming the initial reluctance to write the tests first, it takes time to learn how to use it well.

Code katas are great for practising TDD, but it can take time to progress from that to using it in a full application with more pieces.

As with many things, practice and perseverance are key.