In a world where most ship dates are dictated by business needs, programmers usually ship code that works. Often, structure and efficiency of code being shipped become moot when you know code works. Unless production quality is specified (api to an algorithm for example), for code running into few hundred lines, shippable code equals code that works.
My question is this: Give an ETA for a feature, would you code until feature works and be done? Or would you get it to work as quickly as possible and refactor for release quality?
My inclination is towards the latter though it sounds like more work. When code that works is taken apart for algorithmic efficiency and patterns, it is a joyful experience putting it all together. Besides, it gets all that non-functional love - less bugs, performant, extensible, secure.. I don't think I am good at writing the best code first time. So this approach works well for me.
I'd like to know which one is preferred and why? I am not looking for industry-wide approach, just individual propensities so I can gauge likeness of thought.