In my team, people have tendency to develop a POC (which is very close to actual deliverable in terms of features) which takes good amount of time to be created. And then spend a significant time to refactor the POC so that it matches the design principles using all required design patterns, sometimes naming etc...
One advantage everyone in team says is you have the confidence to meet deadlines one so called POC is ready, then you can spend time on design.
Just curious about, is it really good to refactor code after developing it in quick mode or we should spend time initially to work on architecture and design of the code?
EDIT: After reading the answers I realized that, as most of guys said, what I am talking of is more than POC and as rightly put by Carl is an "evolutionary prototype." This is definitely not a throwaway code. Intention of the output is always to go to production.
Before go-live of feature, it has to follow certain coding standards so that it remains maintainable, reusable and scalable; hence design pattern implementation done.
Agree on design patterns should be introduced in initial phase of development but whole team does the other way and that's the pain and forced me to get views of others in community.
– Maheep Nov 04 '11 at 08:39