Design patterns are useful because they improve.. design. I mean application and code design. They model a recognizable structure. You are right: they have been sold as the ace of all trades in CS books and courses and they are not. That lead to the ' factories of factories of metafactories ' situation. Experience and intelligence are the real 'ace of all trades'. On the other side chaos is not good for anyone. Instead having a common lingo to identify code structure and common solutions to local architectural challenges is a good thing.