I think the article is not bad. It just mentions some patterns and compares them. of course they can be composed.<p>While I agree an &quot;architectural astronaut&quot; approach to software engineering is wrong, we still have to understand the main underpinnings of software engineering. data, separation of concerns, composability, state vs non stateless.<p>recognizing patterns in granular code as well as in system composition is important. And naming them makes communication easy. PubSub, Visitor, Mvc, etc are still useful names.<p>What I think is funny is that the java implementations are often big compared to the same solution in functional languages.<p>Static OO languages often need &quot;software patterns&quot; such as wrapper objects, where they are nonexistent in functional languages. imho