Simplify, Simplify, Simplify - and remember one simple rule if you are working on a website... Visitors go to websites for the CONTENT, not the goofy graphics you hang AROUND the content.
It's why I've flipped my design process around 180 degrees from the 'industry norm' as sitting their goofing around in photoshop making a PSD is not web design, it's sitting there drawing pretty pictures that may or may not even fit the final content - may or may not have anything to do with accessibility guidelines, and may or may not even make sense from a document structure standpoint.
I find that starting out with semantic markup of the content FIRST, then bending that markup to my will with CSS adding as few extra sandbags and wrapping DIV as possible, and THEN starting up the graphics program to hang images on the layout speeds up my development cycle greatly.
Part of that simplification comes from the use of semantic markup and sensible containers... Just as George Carlin said not every ejaculation deserves a name, not every element needs a DIV around it or a class on it. I see developers falling into that trap all the time where inside a UL they'll waste time slapping the same classes on every LI and anchor - completely forgetting what the 'cascading' in CSS means. If all your LI inside a UL are getting the same class, they don't need a class... if all your P inside a div are getting the same class, they don't need a class.
In that way, it's about learning not just how to use the tools at hand, but also learning when NOT to use them.
Simplify, Simplify, Simplify!