In 2000, I ventured into teaching at City College. To be honest, I'd missed the dot com boom and didn't know anything about the web. I was really nervous, so checked out every book the school library had about web development, and studied (and learned) thoroughly. Since then, I built quite a few web sites for people, non-profits and businesses, and developed a certain amount of dexterity with CSS. CSS has evolved a bit in the last ten years, but this firm foundation of understanding of the cascade and such has served me well.
Not to go off into a rant, but lots of CSS ends up a mess. I always felt like it, like C++, needed more restrictions and guidelines to turn out maintainable. I tried to enforce various guidelines with my teams.
In the last year, there's been a renewed interested in CSS and the tooling around it. With the advent of tools like SASS, it's starting to receive the engineering attention it's always deserved.
I was a little hesitant to endorse Sass (or even try it). CSS already has too many "degrees of freedom"-- more flexibility seemed like a bad idea. It would make the problem worse. I poo-pooed it.
Okay, stop laughing.
It was a bit of an idea that I just throw out, but over the weekend I pursued a spike implementation of what it would look like. Using test driven design, it came together much faster than I had anticipated. It was a usable tool. Alex at C5 coached me through fixing some of the color functions, and as near as I can tell it equals or exceeds Sass's feature set.
In the last couple weeks I've used it extensively in my current project and it's great. Being in a real programming language really does make CSS nice.
Check out the main project page on github.