The Benefits of Test-Driven Development Explained