During the design and implementation of larger programs/projects (like our Capestra Order Entry program), one best practice is to work on portions of the program incrementally. We get each increment up and running, tested, and somewhat polished before moving on to the next increment. This provides a way to ensure that the program really is meeting requirements before the final program has been completed.
This incremental approach provides an additional advantage. If it turns out that we need to develop or flesh out the design and implementation of a portion of the final program, we can do so—and we can accomplish this separately from the main path. This provides an opportunity to focus on aspects of the design and development without being encumbered with the details of the entire project.
Note that incremental development is an essential ingredient in modern software implementation using all of the Agile methodologies. Agile has largely replaced the old Waterfall approach that your parents may have used. The essence of incremental development is to “keep the application running at all times” and “never take a break until the current update(s) work properly.”
Yet another advantage of doing incremental development is that each increment can serve as a “milestone.”