• I often look back at code that I've written (sometimes very recently) and cringe, because I know it could be better. However, as I'm sure all of us do, we do the best job we can with the knowledge we have at the time and within the time/budget constraints of the project. Our knowledge is (or should be) continuously growing, so of course we know better ways to do it now versus then. Phil is correct - when you're looking at someone else's code, you have no idea what happened at the time to help it get to its current state. I have a small, simple project that had a good db design and decent code. Until the customers decided they wanted significant changes that really didn't fit well with the original design, but would not go for a redesign...

    There is definitely a difference between constructive criticism and just plain criticism. Rather than discussing how horrible something is, it is a good opportunity to say "we know different and/or more effective ways to do this now."

    And before you try to say that if the budget/time constraints don't allow you to do a good job, then you shouldn't do it at all, let me just remind you that some of us have families to feed and cannot turn customers away simply because they can't afford to pay for the latest & greatest that technology has to offer. Granted, the latest is typically easier/quicker than the old way of doing it, but sometimes you can help yourself by taking code from those older projects. And then you just hope that at some point you'll have time to refactor...