While working to build software products for early stage startups, I have seen two very common schools of thought that define an approach to application design. 

Those 2 paradigms typically include designing an application predicated on an "extendible codebase” or a "throw away codebase".

What factors should one consider/measure to identify their approach to application design? What are alternatively ways to think about application design?

Some factors suggested to date include:

* the amount of time available to build the product.
* the total amount of budget available.
* the level of quality.