Which is test-first development. The key idea is that any program
feature that doesn't have an automatic test simply does not exist. If
there is a feature, you need to write a test for the
feature before. So, what developers do is to create unit tests for
each such piece of functionality even before the functionality is implemented.
And of course, when you run this test, they will fail. But
the beauty of it is that, as you write your code and
you add more and more fractionality to the feature that you're developing,
these test cases are going to start to pass.
And that's extremely rewarding because it gives you immediate
feedback, again feedback on the fact that you're
developing the code in the right way. As soon
as you write it, you will know. And if you write a piece of code and the
test says still fail, that means that the
code is not doing what it's supposed to do.