Science.
with documentation. Of course, Version Control Software (VCS) is essential to tracking the development process, and McFee et al. recommend GitHub for this purpose, and for managing releases. McFee et al. advocate also for automated software testing, which improves robustness and ensures utility.