The proper term is iterative development. You start with a basic working foundation which you then add features to, testing like hell every step of the way, until you have a finished program. This works no matter who, or what, is writing the code.