Chris Powers is the Director of Engineering at Thinkful. He's been spending a bit of time lately thinking about the costs of decisions as software projects evolve and grow. In other words as an application evolves from a small, niche application to a widely used, multi-tenant application. Or, as the team building it changes from a handful of developers in the same room to multiple teams working remotely on the same codebase.
As those changes occur, how do different testing practices, architectural decisions, and clean coding practices of the past prepare the application for or cause headaches during the development of the present?