Red-Green-Refactor = Add-Add-Remove
Are there just three steps to TDD enlightenment?
Step 1. Add code:
Write a test. Run it. Watch the bar go red.
Step 2. Add more code:
Write just the method or class implementation needed to make the new test pass. Concentrate on making the smallest number of changes and resist the urge to keep the code clean. Run the tests. Watch the bar go green.
Step 3. Remove code:
Improve the code by refactoring. This will almost certainly involve removing code, either by deleting duplication or simplifying complexity. Re-run the tests. Watch the bar go green. Repeat this step as needed or return to step 1.
Reflection: when you refactor do you find yourself removing code? do you like or dislike removing code? does the answer depend on whether "your" code is being removed by others or by yourself? should it?