I’ve been writing HTML for 18 years and CSS for 13 years. I lived through the browser wars, watched the web embrace the standards movement, was witness to the rise of Content Management Systems and am currently enjoying the huge jump forward the web is witnessing due to the advancements in HTML5, CSS3 and working solutions for real embedded type on the web. Those advancements require equal progress in the way we approach our work.
No longer is it alright to simply design a page in Photoshop and call yourself a web designer. Our process needs to support design systems, rather than designed pages, and our work is not done until it is rendered in a browser window.
In discussions of web design, too often the focus is on the visual aspect of the design. However, the visual layer is just one of three layers that make a truly effective web site design. You need to ensure the interaction of the site is intuitive and pleasing; That you create little moments of pleasure that transcend color and typography. You need to ensure the execution of the site takes into account all the constraints of the modern web like unknown screen sizes, variable internet connection speeds, user accessibility restrictions and an ever growing collection of browser technologies (to name just a few).
Designing for the web is about embracing the constraints of the medium and using them to your advantage. I often refer to this as designing for failure. When you think you have the perfect design solution is when the real work begins. That is when you begin to work through all of the ways that the fragility of the web can (and will) break your design and strengthen the system to live up to stand up to even the worst case scenarios.