As a former designer, I cannot overstress how stupid this sounds. It's the equivalent of a designer walking up to a bunch of programmers and saying "what's the big deal with functions?" Some things are opinion, and some things are just wrong. This is the latter.
Here's the longer response:
Grids are fundamental to good design. Have you ever wondered why some sites just look right? GRIDS. Ever noticed how many people try to emulate famous designs but never seem to get it quite right? What are they missing? GRIDS. If you start designing without a grid, guess what? You've already resigned yourself to mediocrity, even if you don't realize it. Here's an analogy: you are building a house, and you decide to "just wing it" with the foundation and fix it as required as you go along. You have already failed before you even started. The grid is the design equivalent of a home's foundation. Everything you design will build on top of that grid.
When you say things like
> I see it advocated too, but not by design gurus
there's really no coherent response you will get except NO. STUPID STUPID STUPID.
Edit: Here's what one of my designer friends responded with: "And it's always good to write a line of code (at least) twice, in case it isn't noticed the first time."
And no, I won't show you an example of a guru who advocates grids. Stay ignorant.
Sounds about right!
* http://departments.risd.edu/registrar/web/1112cat.pdf (a number of classes focus on grid systems. this is one of the most respected design programs in the country)
* http://graphicdesigntheory.net/Images/DT/Armstrong_GDTsyllabus.pdf
* http://pacificgraphicdesign.wordpress.com/courses/graphic-design-ii-2/graphic-design-ii-syllabus/Regardless of whether you use bootstrap or not you are always going to be specifying CSS classes which describe the presentation of elements, not sure how else it can be done?
Screen reader software will generally ignore anything that it doesn't understand or deem irrelevant.
Whenever I have tried screen readers they will say "ok, there's 3 divs with content here. Let's read them out one at a time or just read the headings and wait for the user to select one". How they are arranged in a grid will be irrelevant to the software.
Does bootstrap present some particular problem for screen readers?
You are yet to explain what you think best practices should be here.
http://coding.smashingmagazine.com/2012/06/19/classes-where-...
>Screen reader software will generally ignore anything that it doesn't understand or deem irrelevant.
Yes, that's the problem. Putting useful information in places where software has no way to understand it.
>Whenever I have tried screen readers they will say "ok, there's 3 divs with content here. Let's read them out one at a time or just read the headings and wait for the user to select one".
And if you had the appropriate tag instead of a meaningless div, it would know what to do. That's the point. Google for semantic html.
You aren't putting "useful information" in the classes, you are putting presentation related information in there, if you are displaying the content non-visually it is irrelevant and can be safely ignored.
Writing semantic HTML is nice for bots and browsers, but there is nothing stopping you from doing this whilst using bootstrap or whatever. Another thing to consider is that bootstrap aims for backwards compatibility so you are going to be restricted by tags that can be supported by old versions of IE etc.
Even if you could write perfect semantic HTML I don't see how that would make it bad practice to organise your pages using grids?
"This is navigation" is not just presentation, it is real, meaningful information.
>Writing semantic HTML is nice for bots and browsers, but there is nothing stopping you from doing this whilst using bootstrap or whatever
The contortions it would take to make bootstrap work with proper markup would consume far more time than simply writing correct CSS to begin with.
Here is one of the sample bootstrap pages: http://twitter.github.com/bootstrap/examples/hero.html
If you disable CSS in your browser you can still view the page and it is still perfectly functional and should work fine with a decent screenreader.
I'm hugely confused by what you mean by "proper markup", bootstrap does not do markup itself, you create the markup and apply bootstrap's CSS classes to make it look a certain way.
Could you provide a link to a page that you would use as an example of how it should be "done right"?
From a software perspective, perhaps. From an aesthetic design perspective, grids are a common tool used widely outside of web based design.
by tightly coupling content and presentation.
CSS has always been a hack that disallows completely or properly separating content and presentation, except in toy cases. Thus, frameworks like Bootstrap.
Yes, we're not in 1996 anymore. We're beyond the "lets pretend the web is print" phase finally. That means separation of content and presentation matters.
>CSS has always been a hack that disallows completely or properly separating content and presentation
What? People (deliberately?) not understanding how to use CSS correctly certainly caused problems like that. And I'm certainly open to blaming much of that on the design of CSS. But it by no means disallowed it separating content and presentation, that is the entire point of it. Stop littering your markup with classes and you can get the benefits of that separation.