In a perfect world developers would have an infinite amount of time to create the most elegant, perfect, scalable and enterprise-quality architecture/solution ever. This, my friend, would rival the airplane. Heck, it might even rival God's greatest creation. Well, sorry to be the bearer of bad news: this is not a perfect world. Time, in anything we do in life (development included), will always be a constraint. You will never have enough time.
Time is a good constraint.
When we embrace time as a constraint, we take the first step of being real with ourselves. If we truly don't have enough time to implement what has been asked for, we have to be open about
it. We
have to be real about deadlines. We have to get real about project management and cut scope, change the design, or reprioritize requirements. Or we have to get more time.
If the functionality is important enough, they (customers, bosses, etc.) will find the time.
This is when we can throw all excuses out the window and begin thinking creatively in order to work within our constraints. As developers, this is where we live. Time is a constraint that we should embrace as an opportunity to be creative. So, the next time you hack together a piece of functionality, don't use time as an excuse. Be real with yourself: what truly caused you to make that decision?