Test-driven development - write failing test first, then minimal code. Use before implementing any feature or bugfix.