Making Too Much of TDD
If you take a program with structure A and want to transform it to structure B, how large are the steps you have to take to get there? In a low-level language you can make many small changes to get from A to B, but as the level of the language rises, it’s often easier to rewrite some bit of code than to refractor it into a different shape. […] To me, this is granularity. When you use lower level constructs, you have more waypoints. I don’t think this is good or bad necessarily, but it does make the work different. When the grain of a language is coarse, we may have fewer steps when refactoring, but we may also have a bit more work to do to see the next step. When the grain is fine, we can often have more confidence that we are going to get to the structure we’d like to arrive at and we’re tempted to take it a little slower, with many more intermediary steps.