TDD as a Means to Explore New Platforms
On of my motivations behind the iRow project was to try a 100% TDD approach on a real world project. Being familiar with features of .net testing frameworks (my favorite is MbUnit), my baseline expectations on the way such a framework should work and integrate into my development environment where set. Unfortunately, I was soon disappointed by the frameworks available. I have written about my research on iPhone unit testing frameworks before, so I won’t list their shortcomings here. In retrospective, working with a testing framework gave me unique opportunities to gain insight into the new platform.
The concrete advantages I experienced were:
- learn about platform specific build systems and deployment details
- forced to develop components in a loosely coupled fashion from the ground up
- explore unique mechanisms of the language, that might require new or make known patterns redundant
- fast compile-test cycle, less time spent in front of the debugger
- combined with source control: painless experiments
- combined with isolation framework: implementation shows how runtime manipulations can be made
- testing framework implementation shows how code meta-data can be leveraged (or not leveraged)
I can imagine taking this approach to learning new platforms in the future. Plus, I think knowing how to verify the own code is an essential skill on every platform.