Here is a design that requires disobedience of the fundamental rule in a sport: don’t point your gun at someone you don’t plan to shoot. Blogger Mark Shead posits it might be due to a lack of domain knowlege by the designer and extends the analogy to software design.
Mistakes in software design aren’t always as easy to spot, but often it comes down to the same thing. To design something you must have at least a basic level of domain knowledge. That doesn’t means you have to be a world famous chef in order to write a recipe webapp, but you need to make sure you at least know the basics.
Read the full post discussing this design.