5. Test-driven development