These payoffs rely on the assumption that I’ve adhered to the 3 laws of tdd.
|1. Start||You must start by writing the test and making it fail.|
|2. Minimal||You must write the minimal amount of code to pass your failing unit test.|
|3. Closure||You must stop when the test has passed.|
Here’s a quick list of my top 10 TDD Payoffs.
|Courage & Change||I can make changes without having to keep track of every step of progress I’ve previously made.|
|Continuity & Flow||When I’m working off a descriptive unit test I know where I’m at. I can see from the trail of unit tests what I’ve been focused on recently.I can deal with distractions without getting stressed. I don’t need to juggle my work.|
|Design||Writing unit tests affects the way I write production code. It affects the design of the classes, functions, data structures and properties I create. I encourages me to create easier to read more decoupled solutions.|
|Testing First & Iteration||Writing my tests first means they actually get done. When I write the tests after I’m done writing the code I tend to only write the primary cases. Working on one unit test at a time means I don’t have to write a large collection of tests after a large dump of code. Iterating through a small test by implementing a small amount of code sounds slow but it means never getting lost in spaghetti dependency.|
|Communication & Talking||When I talk to colleagues it’s much easier to describe what I’m working on if I can show them a failing unit test|
|Workflow & Relaxation||Finding an organised way of thinking about my work makes it easier to estimate and express my progress. Using the red, green, refactor loop is an relaxing workflow.|
|Collaboration & Source control||I find it easier to share the workload if each of my colleagues are working on various unit tests. It’s an easy way to prevent a road block / collision.|
|Speed & Reduced repetition||TDD is fast. It’s faster that no using tdd. Running unit tests automatically, rather than running firing up the application and testing it manually, makes me infinitely more efficient.|
|Book keeping||Knowing that something works from two angles is awesome. Double entry book keeping. It’s a universal financial account practice that works well. It’s consider appropriate due diligence.|
|QA & Professionalism||When QA find an issue I write a unit test that matches their concern and then I fix it. I can track my progress inline with their efforts.|
"I know of no better way than to ensure my code works than to practice the 3 laws of test driven development." -Uncle Bob.