Lastly, a clearly defined scope of work is as important as having a relevant (as in recent) tech stack. If you treated planning your project like planning an overnight hike, you would make sure you had a map handy with your route and destination plotted out. You would have all the supplies you need (water bottles, tent and sleeping bags, etc.) and in good condition.
Continuing with our example, it’s easy to see if you were to expand on the duration of the hike, you would likely need to take on extra supplies to mitigate any newly incurred risk. Likewise, using old and outdated equipment could cause unforeseen headaches down the road. When it comes to project planning, consider if your frameworks/libraries/packages included need a version update. This should be obvious, but it’s important to perform any updates having fixes for security vulnerabilities in your code.
Allowing scope creep (or not having a sense of scope at all) to go unmitigated will certainly come at a cost of time, resources and quality. Not having a definition of “done,” or some kind of designated endpoint, can make it difficult to design a component and complicate maintenance activities around it.
That’s why not only is it best to have an idea of scope clearly defined at the beginning of your project, but also to have procedures in place to assert the impact of scope changes along with risk mitigation. If changes to scope are asked, then the cost of the change will be known ahead of time and you can decide whether to go ahead while minimizing the risk to timeline, quality, and cost.
Also, always take the time to assess the stability and sustainability of your code base. All things break down on a long enough timeline in the real world, and code is no exception. Periodically reviewing your code (and tests, too) will give you some insight on what looks good to keep, what can be improved upon, and what can be retired. Think of it as spring cleaning for your code base. Not only will your product improve as time goes on, but your engineers will be more engaged and gain an expert level understanding of it.