This probably rings familiar to any developer who has worked on a sizable project:
In the beginning, anything is possible. New features and content is added at a rapid pace. Months pass. The project grows. Developing new features becomes slower. More and more time is spent testing, handling problematic special cases, and fixing interaction problems between different features, content and subsystems.
There are many reasons why development slows down. Two major reasons are increased complexity and accrued technical debt. We want to avoid this slowdown; in fact, a significant portion of our development philosophy can be summarized as “maintain high development velocity”. All the tools in our toolboxes should be evaluated in the eternal struggle against slow and frustrating situations when working on a project.
We have experienced it many times before. Fortunately, we have learned from our mistakes. Here are some guidelines of ours. We rely on these to keep the situation at work painless. Some of these might also apply to your project.