Often new software-projects start as a prototype. And even more often these projects turn into "real", fast-growing projects....and there we have the problem. Typically theses kind of projects are developed under "difficult" circumstances and with a high pressure of time and the first aim is to present quick results to the customer. And exactly that is what brings all the classic problems to us. Dirty-Code, no concept for the UI at all and the application-architecture only exists on the little yellow scratch pad next to your keyboard.