What bugs me about "you are not the user" is the implied corollary: You engineers do not understand the user, but we designers do.

I've seen designers take too many decent usable designs and make them worse, for no apparent reason other than chasing the latest design trend. The latest Android Gmail app is a case in point. Its changes include:

* Garish distracting colors where the old one used muted colors that were easy on the eye.

* Thin spindly gray text for read messages in list view, where the old version used much more readable thicker dark text.

* When you pull a list view down to refresh it, a spinning circle appears that covers up part of the topmost message in the list. The old version used an unobtrusive thin animated bar at the top of the list.

Or take the general OVERUSE OF UPPERCASE in modern design, such as the UPPERCASE MENUS in Microsoft Office and Visual Studio. When developers overwhelmingly complained that they hated the uppercase menus in comments on the Visual Studio blog, Microsoft circled the wagons around uppercase:

http://blogs.msdn.com/b/visualstudio/archive/2012/06/05/a-de...

Ironically, this was a clear situation where the designers were not the user, and didn't understand what the user really wanted, but the designers ruled the show nonetheless.

The funny part is that the complaints from developers weren't just based on aesthetics. Most of us work in case-sensitive languages most of the time. And in all of those languages, File and FILE are not the same thing! The uppercase menus aren't just ugly, they cause a speed bump for anyone who has trained themselves to look for accidental case mismatches.

Developers may not be "the user" in most cases, but I don't think designers are either.

Not that I can claim to be any kind of visual designer myself! But I do have a good sense of usability and I know bad design when I see it. I value the times when I've worked with good designers who know that not all their ideas will be right and listen to feedback about them.

It's harder to work with designers who think they always know best or that their user tests and focus groups always tell the whole story, and don't want to listen to developers - their job is just to implement the designs. These designers get support from management who doesn't have a clue about design. Management knows that the designers must be right because after all, they are the professional designers and they have all these impressive studies to cite. What could a mere coder know about design?

It's a crazy situation, but I've been in the midst of it too many times.

The weirdest part is when companies who claim to do "agile" development are really following a waterfall model:

1. The designers build the design.

2. The design is approved.

3. The developers implement the design.

The designers don't even need to know what's feasible to implement! They don't work in the same tools as developers. They use Photoshop and various kinds of movie makers to make beautiful animated demos - with no idea of what can and can't be done in the actual operating environment where the code will run.

So they spec out things that just ain't gonna happen - and if they do happen it's a huge development effort and only after that do you find out that the animations are janky and can't be fixed and it ruins the whole experience.

Or you do get it done and it works well after a major effort - but you've lost development time that could have gone into features your customers actually want.

And all the SCRUM meetings your dev team holds won't fix the problem that the Big Up Front Design was broken from the start.

How agile is that?