What's wrong with test driven development? Seems to encourage modular code