In the course of developing ChemWriter, we've experimented with many tools and approaches for managing complexity as the capabilities of the software increased. Below is a short list of what we've found essential:
- Test-First Development. If you don't yet test your code first, the single best point I can make is that it greatly reduces time and frustration in debugging sessions.
- Autospec. Having to re-run tests is no fun. More importantly, it's easy to forget to do. A far better workflow is to write software while having tests run automatically (on a separate monitor) after every file save. Thanks to a little Ruby, I've been using this approach for several months now.