Some years ago, Harlan Mills proposed that any software system should be grown by incremental development. That is, the system first be made to run, even though it does nothing useful except call the proper set of dummy subprograms. Then, bit by bit, it is fleshed out, with the subprograms in turn being developed into actions or calls to empty stubs in the level below. . . .
Nothing in the past decade has so radically changed my own practice, and its effectiveness. . . .
One always has, at every stage, in the process, a working system. I find that teams can grow much more complex entities in four months than they can build.