I keep seeing the same advice for design patterns: learn the catalog, then match a pattern to your problem. After two weeks of actually asking working engineers, I don't buy it. One engineer's words stuck: "you don't choose design patterns, they choose you." Another: the failure isn't picking the wrong pattern, it's overuse - adding an abstraction that stops fitting the code you actually have. So the hard part may not be picking a pattern. It's not knowing which parts of your system lean...