Continuity in Long term projects
Feature-rich, scalable, secure products are built over a long time period. They are built as a number of progressive versions. They also go thru technology changes and user interface upgrades to keep up with the business requirements. It is a challenge to engineer these products.
The key to managing these long-term software projects is planning for the continuity from start.
Architecture – The foundation of the product is the architecture; the whole product stands on it. The architecture should be designed in well-insulated layers, designed for scale. The golden rule is to design with no constraints. The constraints could be in execution but should not be part of the design. Such architecture would lead to a stable and long-term product. If not, you will have to start from scratch midway which is a waste of time and resources.
Documentation: Everyone thinks that they will always remember how a particular setting works or the configuration is done, but memory is a fickle thing! Documenting the decisions, configurations, and procedures is very important. And yes keeping the documents updated as things change over the period is as important.
Repository: Well-designed and the documented repository is the insurance policy against murphy’s law! Don’t forget to put all the artifacts like web pages, images, documents in the repositories, not just the code.
Team: Lastly the team is the most important factor in making a long-term project a success. The team not only possesses technical know-how but also product knowledge- a very valuable commodity. One must always appreciate the team’s contribution. Putting in module owners with planned redundancy is a good practice. Also designing product-centric induction for the new team members makes them productive in a shorter time period. Which is a daunting task for any member taking up responsibility in a big project that has run for the long term.