Joseph Wilk 4.21
During an hour of programming what do you learn about your performance? How did that last refactoring go? How does that hour compare to the previous hour? How about against last week or last month? How are your habits as a programmer improving? How does your refactoring pattern differ from a masters like Martin Fowlers?
Professional Tennis players learn from detailed statistics about how they performed in a game and use this information to become better players.
Why don't we do the same in Programming? I want to demonstrate how we can, especially how we as individual programmers can help limit the time we spend in the red (failing tests) while developing. How long we spend in the red and how often can reflect on how we are working as programmers. Joshua Kerievsky created "The Limited Red Society", a group of practitioners that have learned how to effectively reduce red time while test-driving and refactoring code. I want to introduce this society to the Ruby world and some of the tools and ideas I have been working on.
We can gain detailed insight into your programming patterns while using a TDD flow by recording the state of your tests every time you run them. From these detailed metrics we can start to visualise how you work. How long did we spend in the red with that failed test? Was that test we wrote too big a step leaving us stuck in the red for too long? Did we spend a long time in the red because we were shaving a Yak? How many unit tests did we just break with that last change?