<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Soufiane Dakir</title>
    <description>The latest articles on Forem by Soufiane Dakir (@soufiane_dakir_dd4431ead1).</description>
    <link>https://forem.com/soufiane_dakir_dd4431ead1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F722809%2F6251c85c-c070-4c5f-8be6-b7229a688b80.jpg</url>
      <title>Forem: Soufiane Dakir</title>
      <link>https://forem.com/soufiane_dakir_dd4431ead1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/soufiane_dakir_dd4431ead1"/>
    <language>en</language>
    <item>
      <title>Design Patterns Are Overrated — And That’s Exactly Why You Still Need Them</title>
      <dc:creator>Soufiane Dakir</dc:creator>
      <pubDate>Sun, 08 Feb 2026 13:56:03 +0000</pubDate>
      <link>https://forem.com/soufiane_dakir_dd4431ead1/design-patterns-are-overrated-and-thats-exactly-why-you-still-need-them-51il</link>
      <guid>https://forem.com/soufiane_dakir_dd4431ead1/design-patterns-are-overrated-and-thats-exactly-why-you-still-need-them-51il</guid>
      <description>&lt;p&gt;Are design patterns in OOP still relevant in modern software development?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Short answer: yes — but not in the way most developers think.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For years, design patterns were treated like sacred rules. Knowing the "Gang of Four" (GoF) by heart was considered the ultimate sign of seniority. Today, in 2026, that rigid mindset causes more harm than good.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why This Topic Still Matters in 2026?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Search for “&lt;em&gt;Are design patterns still relevant?&lt;/em&gt;” and you’ll find two extremes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;“Design patterns are dead, functional programming won.”&lt;/li&gt;
&lt;li&gt;“You must use design patterns to write 'clean' code.”&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Both are wrong&lt;/strong&gt;. Design patterns didn’t disappear; they became &lt;strong&gt;infrastructure&lt;/strong&gt;. They moved from being something you implement to something you consume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Design Patterns Existed in the First Place?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Classic design patterns solved the "missing features" of languages in the 90s:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No lambdas or first-class functions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No built-in dependency injection&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Weak module systems&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No reactive primitives&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Patterns like Factory, Observer, or Singleton filled these gaps. Fast forward to today: Languages evolved, frameworks absorbed the patterns, and cloud architecture reshaped our priorities. Most patterns didn't age badly, they just became implicit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI Factor: Patterns as the New "Boilerplate"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In 2026, we can't ignore the elephant in the room: &lt;strong&gt;AI-assisted coding.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub Copilot and LLMs are experts at boilerplate. If you ask an AI to "&lt;em&gt;implement a Strategy Pattern for payment providers,&lt;/em&gt;" it does so in milliseconds.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Trap:&lt;/strong&gt; It’s now easier than ever to over-engineer. AI will happily help you build a "Multi-Level Abstract Factory" for a simple "if" statement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Shift:&lt;/strong&gt; Seniority is no longer about how to implement a pattern, but when to reject it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI makes code generation cheap, which makes architectural simplicity expensive.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend Development: OOP Patterns Rarely Apply&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hot take:&lt;/strong&gt; Classic OOP design patterns are mostly irrelevant in modern frontend development. Modern frameworks (React, Vue, etc.) favor &lt;strong&gt;Composition over Inheritance and Declarative UI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Patterns that actually matter:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Observer: (Signals, state subscriptions)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Strategy: (Feature flags, conditional component rendering)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adapter: (API abstraction layers to keep the UI "pure")&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Decorator: (Middleware, HOCs, or Interceptors)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Patterns that usually hurt:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Singleton: (Often leads to state bugs in SSR/Hydration)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deep inheritance: (A nightmare for component reusability)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re forcing GoF-style patterns into frontend code, you’re likely fighting the framework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend &amp;amp; Microservices: Scaling the Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Backend systems still benefit from patterns, but the focus has shifted from Code Patterns to System Patterns.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Level:&lt;/strong&gt; Use &lt;strong&gt;Strategy&lt;/strong&gt; for business rules and &lt;strong&gt;Adapters&lt;/strong&gt; for external integrations. Stop re-implementing &lt;strong&gt;Dependency Injection&lt;/strong&gt; manually — your framework already does it better.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;System Level:&lt;/strong&gt; In distributed systems, &lt;strong&gt;Circuit Breakers&lt;/strong&gt;, &lt;strong&gt;Sagas&lt;/strong&gt;, and &lt;strong&gt;CQRS&lt;/strong&gt; are the real "design patterns" that keep you from getting paged at 3 AM.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Design Patterns in Interviews: What Really Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many interviews still ask: “&lt;em&gt;Which design pattern would you use here?&lt;/em&gt;” That question often misses the point.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Strong candidates&lt;/strong&gt; talk about coupling, cohesion, and trade-offs. They justify simplicity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Weak candidates&lt;/strong&gt; name-drop GoF terms and optimize for textbook correctness.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Patterns are a vocabulary — not proof of competence&lt;/strong&gt;. They help us talk about code faster, not write better code by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Rule Senior Engineers Actually Follow&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Learn them:&lt;/strong&gt; So you recognize them in existing systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internalize them:&lt;/strong&gt; So you understand the problems they solve (Decoupling, Open-Closed Principle).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ignore them:&lt;/strong&gt; Until a real problem exists that simple code cannot solve.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Final Thought:&lt;/strong&gt; Design patterns are not obsolete. They just stopped being the "&lt;em&gt;point&lt;/em&gt;" of software engineering. They are tools in a box, not the blueprint of the house.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And that’s a sign that our industry is finally maturing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What's your take? Are you still seeing "Pattern Overkill" in your PRs, or has AI-generated boilerplate taken over the mess? Let's discuss in the comments!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>softwareengineering</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
