Test-driven development is increasingly widespread and there is good empirical evidence that it's a beneficial practice. TDD reduces the number of bugs in production and improves code quality. In other words it makes code easier to maintain and understand. Also, it provides automated tests for regression testing.