Having the experience now of building dozens of different web sites over the years I have come to the conclusion that there are some major flaws in how web design is done and the underlying assumptions have proved inadequate to make web design better.
Another web design gotcha that is easily overlooked is that the web has different constraints from paper. A static design spec put to a snapshot pdf or image of the final design is only 2 dimensional. Web design reality is that there is at least 3 dimensions and sometimes 4 or more to implement. This puts the onus of implementing missing design onto the developer. How the page should behave at widths of 300px up to 2000px? What interactions should exist? What animations are there? Responsive design cannot be done with Photoshop and so these rendered design mockups represent perhaps only half of the design.
I would like to see one of two things happen:
- Make changes to the CSS tools so that it can be managed in much the same way that Photoshop does. Fulfil the promise of putting design implementation into the hands of the designers by making the tools used to craft it similar to the tools they’re already familiar with.
- In cases where engineers have to do the design implementations provide a method that is more familiar to them. It should allow for unit testing, it should be designed to reduce the likelyhood of regressions as the design changes. Debuggers and linters should identify unused code.
I think what we have with CSS is a bad compromise. It is too technical, daunting and uninteresting for most designers to want to work with it, and it’s too unstructured, untestable and imprecise for engineers to have much love for it. As a result CSS exists in a no mans land where few people have an aptitude.
The future looks interesting though. Will there be a next generation language after SaSS that improves things for the lives of developers, and how will the React.js approach impact the future direction of web design.