Software like many things in life, is one of those things that the further down a path you go, the harder it is to back out. When I think of a software project I think of a piece of string. The longer the project, the longer the string. The string is the perfect length to reach the end. Each and every time we make a poor design decision or a bad implementation we effectively add a knot in the string. One or two of these and we might still be able to stretch it to reach the end but most likely if we want to reach the end, we are going to need to unravel the knot we created. I see it over and over again in projects, both my own knots and the knots of colleagues. We make these knots knowingly, thinking we can come back later, or thinking they can slip by but they always hold things up somewhere. If they don't force you to come back and undo them later, they slow the velocity of the project, negating any time you may have saved in implementation time.
Bottom line. Don't take shortcuts. I am not saying it has to always be the very best implementation but it should always be something elegant. Dirty hacks always fester eventually.