The design that programmers do will always be compromised by a powerful conflict of interest. They must decide between accommodating the user and accommodating their own ease of programming. They can never be expected to make an impartial call, and their design will always force the user to compensate for weaknesses in the code, rather than the other way around. Most software, including web sites, behaves very rudely to human users. Many non-technical managers don't realize that there is another, better way, so they allow the bad interaction to persist.
Programming is to concrete as design is to forms for pouring concrete.
Once the coding process begins, the effectiveness of design is attenuated a thousand-fold. In early 1988 I invented a visual programming language called Ruby that I sold to Bill Gates. However, I designed the language in such a way that it could be easily upgraded. Bill exchanged the entire language with his then moribund QuickBasic product, and Visual Basic was born. One of the most impressive lessons from VB is the power of a good design.