I have heard of developers who work with code which is a complete mess because originally the code was quickly developed and the quality was not there in the first place. Its always good to get maintainable, reusable code but I was wondering if it was best to sacrifice some of this due to time constraints. A common problem I come up against is over engineering something and wasting a lot of time. We all know in the real world due to time constraints its going to be very difficult to get near perfect code.I was wondering if there was a general rule for getting good quality if there is not much development time? Do you find this a common problem in development balancing code quality and time? 
Quality vs Time
quality;code reuse;time
The problem with over-engineering is that, just like with optimizations, developers tend to over-engineer completely irrelevant pieces. And those are usually never going to be touched through 10 revisions of the product.While if the business requirements change, the over-engineered solution needs an extra engineering anyway.So you really need to find a balance to write extensible, stable and readable code. Striving to implement every thing you've ever read in the books is, IMHO, bad.And this is where architectural planning phase comes in. Find core objects, find core relations, find what are the likely business changes in the near future, and design an extensible skeleton from what you have found.