Test-driven programming guidelines