adjust accordingly.<p>I believe design patterns are <i>patterns</i>: the reason iterator, builder, adapter etc. exist is because they often simplify your code. That doesn’t mean applying them always simplifies your code.<p>Different languages are better for different scenarios, e.g. Rust is better than Lua for performant apps but worse for embedded scripts. Similarly different paradigms are better for different scenarios, e.g. mutable/OOP is usually better than immutable/FP for games / simulations with lots of state, but usually worse for distributed computing.