Flat design is a new favorite punching bag on Twitter, and I've been hearing quite a lot of criticism (and by criticism, I mean flippant remarks masking a seething hatred of questionable proportions).
I should state up front that I join the ranks of being unimpressed by many of the flat designs I see. That is no reason, however, to ignore the trend or fail to understand why it exists.
The goal of flat design is straightforward: The history of HCI design has been a long, slow march to transform the experience of using toggle switches into a more palatable form. But the experience of using a computer is flat to begin with, as it has almost always taken the shape of the human being stationary in front of a flat screen, unmoving and fixed in place. Designers have worked hard to provide us with an evolving virtual reality of layers, depth and skeuomorphisms (gasp!) to ease the burden of being hooked up to a machine all day.
Flat design is an approach from the other end of things. It makes the assumption that you are using your computer and existing in the "real world" at the same time. When machines are no longer constrained to a desk, some of the desire to be cloaked in the blanket of a windowing system goes away. New computers are smaller, aware of our 3D space and less reliant on hardware abstractions (like a pointing device). Mobile computer use is simply less isolating and emphasizes speed of action over completeness of metaphor.
The promise of flat design is that it requires less physical and mental acuity for operation. Of course, in practice, I find the opposite to be true. Lack of visual hierarchy and an unclear interaction model are the biggest problems. Understanding what the design asks of the user, and how the user should expect the system to react are the two fundamentals that seem to be missing in any flat design I've used.
Additionally, in the cases of newer Google and Microsoft designs, I've also seen a decided anti-contrast philosophy, which is mystifying at best. When talking about Windows 8 Style (formerly Metro), we see an unfortunate partitioning of information into uniform boxes (screens rarely need more constrained boxes), and all of it seems to embrace the idea that the entire surface area of the screen should be filled with information; all of which is important and equally urgent, fracturing any ability to focus -- only made worse by the complete lack of governing behind animations and moving parts.
I don't think flat design is all bad, in fact I tend to appreciate the borderless (and canvas-less) nature of it, and the treatment given to typography. However, as a design philosophy, it fails to really achieve much, and in many cases, takes us back too far.
If I was to postulate on flat design's popularity among companies and hatred among the design rabble, I think it's pretty evident: flat design looks fantastic on flat material. It looks extremely compelling in static images, mock-ups and advertising banners. In controlled demo environments it appears smooth and easy to use. It sells itself really well. The ultimate problem is that it breaks apart under real world use where OS software isn't custom tailored to the precise tasks outlined in the demo, and needs to interoperate nicely with the things people actually need to do with it.
In other words, flat design seems like the brain-child of someone who has watched too many Hollywood interpretations of computer systems.