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.