<?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>DEV Community: Micah Breedlove (druid628)</title>
    <description>The latest articles on DEV Community by Micah Breedlove (druid628) (@druid628).</description>
    <link>https://dev.to/druid628</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2849279%2F10202746-fcd7-4ef0-8709-d604e64feeb4.png</url>
      <title>DEV Community: Micah Breedlove (druid628)</title>
      <link>https://dev.to/druid628</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/druid628"/>
    <language>en</language>
    <item>
      <title>Archetype: The Blacksmith</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Wed, 08 Jul 2026 17:02:00 +0000</pubDate>
      <link>https://dev.to/druid628/archetype-the-blacksmith-3jjg</link>
      <guid>https://dev.to/druid628/archetype-the-blacksmith-3jjg</guid>
      <description>&lt;p&gt;Some engineers look at an aging system and immediately start planning its replacement.&lt;/p&gt;

&lt;p&gt;Blacksmiths usually pause for a moment.&lt;/p&gt;

&lt;p&gt;Then they ask a different question.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Before we replace it, let's understand it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question isn't driven by nostalgia.&lt;/p&gt;

&lt;p&gt;It's driven by curiosity.&lt;/p&gt;

&lt;p&gt;Every long-lived system has a story. Every strange workaround, every awkward abstraction, every design decision was made by someone solving a problem that existed at the time.&lt;/p&gt;

&lt;p&gt;The Blacksmith wants to understand that story before deciding what comes next.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Engineers Who Restore Confidence
&lt;/h2&gt;

&lt;p&gt;One of the easiest ways to recognize a Blacksmith is by the work they volunteer for.&lt;/p&gt;

&lt;p&gt;While other engineers gravitate toward new projects, Blacksmiths often find themselves drawn toward the systems everyone else quietly avoids.&lt;/p&gt;

&lt;p&gt;They're curious about the service that only one engineer knows how to deploy. They want to understand why the build takes twenty minutes, why the database has become everyone's favorite punchline, or why an application has developed a reputation for being "too fragile to touch."&lt;/p&gt;

&lt;p&gt;Most teams see those systems as liabilities.&lt;/p&gt;

&lt;p&gt;Blacksmiths see opportunities.&lt;/p&gt;

&lt;p&gt;Not opportunities to rebuild everything from scratch, but opportunities to restore confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modernization Begins With Understanding
&lt;/h2&gt;

&lt;p&gt;People sometimes mistake Blacksmiths for engineers who dislike change.&lt;/p&gt;

&lt;p&gt;In my experience, the opposite is usually true.&lt;/p&gt;

&lt;p&gt;Most Blacksmiths enjoy modernization.&lt;/p&gt;

&lt;p&gt;They simply believe that good modernization begins with understanding rather than demolition.&lt;/p&gt;

&lt;p&gt;Legacy systems rarely survive by accident.&lt;/p&gt;

&lt;p&gt;Some have quietly supported critical business processes for decades. Others still handle millions of dollars in transactions every year. Even systems that have accumulated significant technical debt often contain years of hard-earned business knowledge.&lt;/p&gt;

&lt;p&gt;A Blacksmith knows that replacing software is easy.&lt;/p&gt;

&lt;p&gt;Replacing understanding is much harder.&lt;/p&gt;

&lt;p&gt;Before deciding what should be modernized, extracted, rewritten, or retired, they want to understand why the system has continued delivering value for so long.&lt;/p&gt;

&lt;h2&gt;
  
  
  Craftsmanship Over Replacement
&lt;/h2&gt;

&lt;p&gt;One of the things I admire most about Blacksmiths is that they see modernization as a craft rather than a project.&lt;/p&gt;

&lt;p&gt;Sometimes preserving value means upgrading an aging framework.&lt;/p&gt;

&lt;p&gt;Other times it means breaking a monolith into services one capability at a time.&lt;/p&gt;

&lt;p&gt;Occasionally it means deleting thousands of lines of code because the healthiest system is the simplest one.&lt;/p&gt;

&lt;p&gt;And yes, sometimes it means replacing an entire subsystem.&lt;/p&gt;

&lt;p&gt;The decision isn't driven by fashion.&lt;/p&gt;

&lt;p&gt;It's driven by judgment.&lt;/p&gt;

&lt;p&gt;The goal isn't to preserve old software.&lt;/p&gt;

&lt;p&gt;The goal is to preserve the value that software still provides while making it healthier for the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  They Leave Systems Better Than They Found Them
&lt;/h2&gt;

&lt;p&gt;Blacksmiths don't just repair software.&lt;/p&gt;

&lt;p&gt;They restore trust.&lt;/p&gt;

&lt;p&gt;After they've spent time with a system, deployments become more predictable. New engineers can understand the code more quickly. Monitoring improves. Documentation appears. Long-standing bugs disappear. The codebase slowly stops feeling like something people fear.&lt;/p&gt;

&lt;p&gt;That's one of the clearest signs a Blacksmith has done their job.&lt;/p&gt;

&lt;p&gt;The system isn't merely functioning again.&lt;/p&gt;

&lt;p&gt;The team believes in it again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hardest Decision
&lt;/h2&gt;

&lt;p&gt;There's a misconception that Blacksmiths always want to save legacy systems.&lt;/p&gt;

&lt;p&gt;The best ones know better.&lt;/p&gt;

&lt;p&gt;Not every system deserves another decade of life.&lt;/p&gt;

&lt;p&gt;Some architectures have reached the end of their usefulness. Some codebases have become so constrained by earlier decisions that starting over genuinely is the better choice.&lt;/p&gt;

&lt;p&gt;The difficult part isn't knowing &lt;em&gt;how&lt;/em&gt; to modernize.&lt;/p&gt;

&lt;p&gt;It's knowing &lt;em&gt;when&lt;/em&gt; modernization has reached the point of diminishing returns.&lt;/p&gt;

&lt;p&gt;Blacksmiths understand that stewardship sometimes means rebuilding.&lt;/p&gt;

&lt;p&gt;The key is making that decision deliberately instead of emotionally.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Danger of Becoming Too Attached
&lt;/h2&gt;

&lt;p&gt;Like every archetype, the Blacksmith has a blind spot.&lt;/p&gt;

&lt;p&gt;Because they see value where others see decay, they can sometimes invest too much effort trying to save systems that no longer justify the investment.&lt;/p&gt;

&lt;p&gt;Craftsmanship can become perfectionism.&lt;/p&gt;

&lt;p&gt;Stewardship can become attachment.&lt;/p&gt;

&lt;p&gt;Healthy Blacksmiths recognize that their responsibility isn't to save every system.&lt;/p&gt;

&lt;p&gt;Their responsibility is to exercise good judgment about which systems are worth saving.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Quiet Craftsmen
&lt;/h2&gt;

&lt;p&gt;Organizations naturally celebrate new products, new technologies, and ambitious initiatives.&lt;/p&gt;

&lt;p&gt;Far less attention is given to the engineers who quietly ensure yesterday's successes continue serving tomorrow's customers.&lt;/p&gt;

&lt;p&gt;Yet without them, every organization eventually accumulates brittle systems, fragile deployments, and institutional knowledge that exists only inside someone's head.&lt;/p&gt;

&lt;p&gt;Blacksmiths prevent that from happening.&lt;/p&gt;

&lt;p&gt;They modernize instead of merely replacing.&lt;/p&gt;

&lt;p&gt;They strengthen instead of merely repairing.&lt;/p&gt;

&lt;p&gt;They leave systems—and the teams responsible for them—healthier than they found them.&lt;/p&gt;

&lt;p&gt;The best Blacksmiths don't preserve the past.&lt;/p&gt;

&lt;p&gt;They carry its value into the future.&lt;/p&gt;

&lt;p&gt;In the next article, we'll meet &lt;strong&gt;The Bear Killer&lt;/strong&gt;—the engineers who thrive when everyone else is simply trying to survive.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>softwareengineering</category>
      <category>engineeringleadership</category>
      <category>engineeringculture</category>
    </item>
    <item>
      <title>Archetype: The Gardener</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Tue, 23 Jun 2026 14:16:00 +0000</pubDate>
      <link>https://dev.to/druid628/archetype-the-gardener-1og8</link>
      <guid>https://dev.to/druid628/archetype-the-gardener-1og8</guid>
      <description>&lt;p&gt;Some engineers seem to come alive when they're handed a blank page.&lt;/p&gt;

&lt;p&gt;No legacy constraints, aging systems, or years of accumulated decisions. Just possibility.&lt;/p&gt;

&lt;p&gt;Where many engineers see uncertainty, the Gardener sees opportunity.&lt;/p&gt;

&lt;p&gt;They are often the first to ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What if we tried this?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I wonder what would happen if we built it differently."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gardeners are naturally drawn toward growth. Not growth in the organizational-chart sense. Growth in the sense of creating something that does not yet exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Engineers Who Cultivate Possibility
&lt;/h2&gt;

&lt;p&gt;Gardeners are often easy to recognize because they're constantly exploring possibilities.&lt;/p&gt;

&lt;p&gt;They're the people who walk away from a meeting and say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Oh, I have an idea."&lt;br&gt;
"Give me a couple days. I'll have you something."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A few days later they're back with a prototype, a proof of concept, or an entirely new way of looking at the problem.&lt;/p&gt;

&lt;p&gt;Not every idea succeeds.&lt;/p&gt;

&lt;p&gt;The Gardener understands that.&lt;/p&gt;

&lt;p&gt;They're simply willing to plant more seeds than most people.&lt;/p&gt;

&lt;p&gt;One of the easiest ways to recognize a Gardener is by their relationship with uncertainty.&lt;/p&gt;

&lt;p&gt;Many engineers become uncomfortable when requirements are vague. When nobody is entirely sure where they're headed or how they're going to get there, Gardeners often have the opposite reaction.&lt;/p&gt;

&lt;p&gt;Uncertainty feels like open ground. A place where experimentation is possible and where new ideas can take root.&lt;/p&gt;

&lt;p&gt;That doesn't mean Gardeners are reckless.&lt;/p&gt;

&lt;p&gt;The best Gardeners are thoughtful experimenters. They know not every seed will grow. They're simply willing to plant more of them than most people.&lt;/p&gt;

&lt;h2&gt;
  
  
  Growth Requires Cultivation
&lt;/h2&gt;

&lt;p&gt;People often imagine innovation as a lightning strike. A sudden moment of brilliance.&lt;/p&gt;

&lt;p&gt;In reality, most successful ideas emerge through cultivation.&lt;/p&gt;

&lt;p&gt;They begin as rough concepts.&lt;/p&gt;

&lt;p&gt;Then prototypes.&lt;/p&gt;

&lt;p&gt;Then experiments.&lt;/p&gt;

&lt;p&gt;Then small successes.&lt;/p&gt;

&lt;p&gt;Then larger wins.&lt;/p&gt;

&lt;p&gt;Gardeners thrive in this process.&lt;/p&gt;

&lt;p&gt;They enjoy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;exploration&lt;/li&gt;
&lt;li&gt;iteration&lt;/li&gt;
&lt;li&gt;discovery&lt;/li&gt;
&lt;li&gt;experimentation&lt;/li&gt;
&lt;li&gt;continuous refinement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What excites them isn't necessarily the finished product.&lt;/p&gt;

&lt;p&gt;It's watching something grow from an idea into a reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gardeners Create Momentum
&lt;/h2&gt;

&lt;p&gt;One reason organizations need Gardeners is that growth rarely happens by accident.&lt;/p&gt;

&lt;p&gt;Someone has to be willing to venture into the unknown. Teams need someone to challenge assumptions.  There has to be someone who will ask whether there might be a better way.&lt;/p&gt;

&lt;p&gt;Gardeners create momentum.&lt;/p&gt;

&lt;p&gt;They push ideas forward.&lt;/p&gt;

&lt;p&gt;They discover opportunities.&lt;/p&gt;

&lt;p&gt;They help organizations avoid becoming trapped by their existing successes.&lt;/p&gt;

&lt;p&gt;Without Gardeners, many organizations become excellent at preserving what already exists and terrible at discovering what comes next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Growth Needs Foundations
&lt;/h2&gt;

&lt;p&gt;At first glance, Gardeners and Masons can look remarkably similar.&lt;/p&gt;

&lt;p&gt;Both are usually excited by what comes next.&lt;/p&gt;

&lt;p&gt;Both prefer creating over maintaining.&lt;/p&gt;

&lt;p&gt;Both spend much of their time thinking about the future.&lt;/p&gt;

&lt;p&gt;The difference lies in what they're trying to create. A Gardener cultivates growth while a Mason creates stability.&lt;/p&gt;

&lt;p&gt;A Gardener sees an empty field and imagines what could grow there.&lt;/p&gt;

&lt;p&gt;A Mason sees the same field and wonders whether the ground can support it.&lt;/p&gt;

&lt;p&gt;Neither perspective is sufficient on its own because growth without foundations becomes fragile.&lt;/p&gt;

&lt;p&gt;Foundations without growth become monuments to unrealized potential.&lt;/p&gt;

&lt;p&gt;The strongest organizations understand the importance of both.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Danger of Endless Planting
&lt;/h2&gt;

&lt;p&gt;Like every archetype, Gardeners have failure modes.&lt;/p&gt;

&lt;p&gt;A Gardener can become so excited about new possibilities that they lose interest in tending existing ones.&lt;/p&gt;

&lt;p&gt;The next idea is always more exciting than the current implementation.&lt;/p&gt;

&lt;p&gt;The next project is always more interesting than maintenance.&lt;/p&gt;

&lt;p&gt;The next experiment is always more appealing than refinement.&lt;/p&gt;

&lt;p&gt;Left unchecked, this can create organizations filled with unfinished initiatives and abandoned experiments.&lt;/p&gt;

&lt;p&gt;Healthy Gardeners understand that growth requires more than planting.&lt;/p&gt;

&lt;p&gt;It also requires cultivation.&lt;/p&gt;

&lt;p&gt;The goal isn't to start everything.&lt;/p&gt;

&lt;p&gt;The goal is to help the right things grow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future Doesn't Build Itself
&lt;/h2&gt;

&lt;p&gt;One reason I wanted to include the Gardener in this series is because growth-oriented engineers are often misunderstood.&lt;/p&gt;

&lt;p&gt;Organizations frequently celebrate outcomes while overlooking the people who discovered the opportunity in the first place.&lt;/p&gt;

&lt;p&gt;The product gets celebrated.&lt;/p&gt;

&lt;p&gt;The revenue gets celebrated.&lt;/p&gt;

&lt;p&gt;The success gets celebrated.&lt;/p&gt;

&lt;p&gt;What often goes unnoticed is the person who first looked at an empty patch of ground and imagined something growing there.&lt;/p&gt;

&lt;p&gt;Somewhere inside every successful organization, you'll usually find a few Gardeners.&lt;/p&gt;

&lt;p&gt;They're asking uncomfortable questions.&lt;/p&gt;

&lt;p&gt;Exploring uncertain paths.&lt;/p&gt;

&lt;p&gt;Planting ideas that may not bear fruit for months—or years.&lt;/p&gt;

&lt;p&gt;Most won't succeed.&lt;/p&gt;

&lt;p&gt;A few will change everything.&lt;/p&gt;

&lt;p&gt;In the next article, we'll look at The Blacksmith—the engineers who restore durability and strengthen systems that others might be ready to abandon.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>engineeringleadership</category>
      <category>engineeringculture</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Archetype: The Mason</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Wed, 17 Jun 2026 17:18:40 +0000</pubDate>
      <link>https://dev.to/druid628/archetype-the-mason-419b</link>
      <guid>https://dev.to/druid628/archetype-the-mason-419b</guid>
      <description>&lt;p&gt;Some engineers look at an aging system and immediately start planning its replacement.&lt;/p&gt;

&lt;p&gt;Blacksmiths usually pause for a moment.&lt;/p&gt;

&lt;p&gt;Then they ask a different question.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Before we replace it, let's understand it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question isn't driven by nostalgia.&lt;/p&gt;

&lt;p&gt;It's driven by curiosity.&lt;/p&gt;

&lt;p&gt;Every long-lived system has a story. Every strange workaround, every awkward abstraction, every design decision was made by someone solving a problem that existed at the time.&lt;/p&gt;

&lt;p&gt;The Blacksmith wants to understand that story before deciding what comes next.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Engineers Who Restore Confidence
&lt;/h2&gt;

&lt;p&gt;One of the easiest ways to recognize a Blacksmith is by the work they volunteer for.&lt;/p&gt;

&lt;p&gt;While other engineers gravitate toward new projects, Blacksmiths often find themselves drawn toward the systems everyone else quietly avoids.&lt;/p&gt;

&lt;p&gt;They're curious about the service that only one engineer knows how to deploy. They want to understand why the build takes twenty minutes, why the database has become everyone's favorite punchline, or why an application has developed a reputation for being "too fragile to touch."&lt;/p&gt;

&lt;p&gt;Most teams see those systems as liabilities.&lt;/p&gt;

&lt;p&gt;Blacksmiths see opportunities.&lt;/p&gt;

&lt;p&gt;Not opportunities to rebuild everything from scratch, but opportunities to restore confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modernization Begins With Understanding
&lt;/h2&gt;

&lt;p&gt;People sometimes mistake Blacksmiths for engineers who dislike change.&lt;/p&gt;

&lt;p&gt;In my experience, the opposite is usually true.&lt;/p&gt;

&lt;p&gt;Most Blacksmiths enjoy modernization.&lt;/p&gt;

&lt;p&gt;They simply believe that good modernization begins with understanding rather than demolition.&lt;/p&gt;

&lt;p&gt;Legacy systems rarely survive by accident.&lt;/p&gt;

&lt;p&gt;Some have quietly supported critical business processes for decades. Others still handle millions of dollars in transactions every year. Even systems that have accumulated significant technical debt often contain years of hard-earned business knowledge.&lt;/p&gt;

&lt;p&gt;A Blacksmith knows that replacing software is easy.&lt;/p&gt;

&lt;p&gt;Replacing understanding is much harder.&lt;/p&gt;

&lt;p&gt;Before deciding what should be modernized, extracted, rewritten, or retired, they want to understand why the system has continued delivering value for so long.&lt;/p&gt;

&lt;h2&gt;
  
  
  Craftsmanship Over Replacement
&lt;/h2&gt;

&lt;p&gt;One of the things I admire most about Blacksmiths is that they see modernization as a craft rather than a project.&lt;/p&gt;

&lt;p&gt;Sometimes preserving value means upgrading an aging framework.&lt;/p&gt;

&lt;p&gt;Other times it means breaking a monolith into services one capability at a time.&lt;/p&gt;

&lt;p&gt;Occasionally, it means deleting thousands of lines of code because the healthiest system is the simplest.&lt;/p&gt;

&lt;p&gt;And yes, sometimes it means replacing an entire subsystem.&lt;/p&gt;

&lt;p&gt;The decision isn't driven by fashion.&lt;/p&gt;

&lt;p&gt;It's driven by judgment.&lt;/p&gt;

&lt;p&gt;The goal isn't to preserve old software.&lt;/p&gt;

&lt;p&gt;The goal is to preserve the value that software still provides while making it healthier for the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  They Leave Systems Better Than They Found Them
&lt;/h2&gt;

&lt;p&gt;Blacksmiths don't just repair software.&lt;/p&gt;

&lt;p&gt;They restore trust.&lt;/p&gt;

&lt;p&gt;After they've spent time with a system, deployments become more predictable. New engineers can understand the code more quickly. Monitoring improves. Documentation appears. Long-standing bugs disappear. The codebase slowly stops feeling like something people fear.&lt;/p&gt;

&lt;p&gt;That's one of the clearest signs a Blacksmith has done their job.&lt;/p&gt;

&lt;p&gt;The system isn't merely functioning again.&lt;/p&gt;

&lt;p&gt;The team believes in it again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hardest Decision
&lt;/h2&gt;

&lt;p&gt;There's a misconception that Blacksmiths always want to save legacy systems.&lt;/p&gt;

&lt;p&gt;The best ones know better.&lt;/p&gt;

&lt;p&gt;Not every system deserves another decade of life.&lt;/p&gt;

&lt;p&gt;Some architectures have reached the end of their usefulness. Some codebases have become so constrained by earlier decisions that starting over genuinely is the better choice.&lt;/p&gt;

&lt;p&gt;The difficult part isn't knowing &lt;em&gt;how&lt;/em&gt; to modernize.&lt;/p&gt;

&lt;p&gt;It's knowing &lt;em&gt;when&lt;/em&gt; modernization has reached the point of diminishing returns.&lt;/p&gt;

&lt;p&gt;Blacksmiths understand that stewardship sometimes means rebuilding.&lt;/p&gt;

&lt;p&gt;The key is making that decision deliberately instead of emotionally.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Danger of Becoming Too Attached
&lt;/h2&gt;

&lt;p&gt;Like every archetype, the Blacksmith has a blind spot.&lt;/p&gt;

&lt;p&gt;Because they see value where others see decay, they can sometimes invest too much effort trying to save systems that no longer justify the investment.&lt;/p&gt;

&lt;p&gt;Craftsmanship can become perfectionism.&lt;/p&gt;

&lt;p&gt;Stewardship can become attachment.&lt;/p&gt;

&lt;p&gt;Healthy Blacksmiths recognize that their responsibility isn't to save every system.&lt;/p&gt;

&lt;p&gt;Their responsibility is to exercise good judgment about which systems are worth saving.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Quiet Craftsmen
&lt;/h2&gt;

&lt;p&gt;Organizations naturally celebrate new products, new technologies, and ambitious initiatives.&lt;/p&gt;

&lt;p&gt;Far less attention is given to the engineers who quietly ensure yesterday's successes continue serving tomorrow's customers.&lt;/p&gt;

&lt;p&gt;Yet without them, every organization eventually accumulates brittle systems, fragile deployments, and institutional knowledge that exists only inside someone's head.&lt;/p&gt;

&lt;p&gt;Blacksmiths prevent that from happening.&lt;/p&gt;

&lt;p&gt;They modernize instead of merely replacing.&lt;/p&gt;

&lt;p&gt;They strengthen instead of merely repairing.&lt;/p&gt;

&lt;p&gt;They leave systems—and the teams responsible for them—healthier than they found them.&lt;/p&gt;

&lt;p&gt;The best Blacksmiths don't preserve the past.&lt;/p&gt;

&lt;p&gt;They carry its value into the future.&lt;/p&gt;

&lt;p&gt;In the next article, we'll meet &lt;strong&gt;The Bear Killer&lt;/strong&gt;—the engineers who thrive when everyone else is simply trying to survive.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>engineeringleadership</category>
      <category>engineeringculture</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>The Five Engineering Archetypes</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Tue, 02 Jun 2026 20:51:34 +0000</pubDate>
      <link>https://dev.to/druid628/the-five-engineering-archetypes-290e</link>
      <guid>https://dev.to/druid628/the-five-engineering-archetypes-290e</guid>
      <description>&lt;p&gt;The software industry has a strange habit of pretending there is only one correct kind of engineer.&lt;/p&gt;

&lt;p&gt;Depending on the era, we call them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rockstar&lt;/li&gt;
&lt;li&gt;ninjas&lt;/li&gt;
&lt;li&gt;10x developers&lt;/li&gt;
&lt;li&gt;staff-plus unicorns&lt;/li&gt;
&lt;li&gt;AI-native engineers&lt;/li&gt;
&lt;li&gt;or whatever the latest LinkedIn post insists will save civilization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But after more than two decades in software, I've become increasingly convinced that healthy engineering organizations are not built around a single ideal engineer.&lt;/p&gt;

&lt;p&gt;They are built around complementary strengths.&lt;/p&gt;

&lt;p&gt;Some engineers excel at building foundations.&lt;/p&gt;

&lt;p&gt;Some cultivate growth.&lt;/p&gt;

&lt;p&gt;Some restore aging systems.&lt;/p&gt;

&lt;p&gt;Some thrive during crises.&lt;/p&gt;

&lt;p&gt;Others bring order and cohesion to growing complexity.&lt;/p&gt;

&lt;p&gt;The longer I've worked in this industry, the more I've noticed that these engineers often resemble older craft archetypes more than modern corporate titles.&lt;/p&gt;

&lt;p&gt;Not because software engineering is "just like blacksmithing."&lt;/p&gt;

&lt;p&gt;But because civilizations have always depended on different kinds of specialists.&lt;/p&gt;

&lt;p&gt;Builders.&lt;/p&gt;

&lt;p&gt;Cultivators.&lt;/p&gt;

&lt;p&gt;Repairers.&lt;/p&gt;

&lt;p&gt;Protectors.&lt;/p&gt;

&lt;p&gt;Organizers.&lt;/p&gt;

&lt;p&gt;Modern software organizations are no different.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the Mythical Engineer
&lt;/h2&gt;

&lt;p&gt;One of the recurring themes in engineering culture is the search for a mythical engineer.&lt;/p&gt;

&lt;p&gt;The person who can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;innovate&lt;/li&gt;
&lt;li&gt;architect&lt;/li&gt;
&lt;li&gt;modernize&lt;/li&gt;
&lt;li&gt;lead&lt;/li&gt;
&lt;li&gt;rescue failing systems&lt;/li&gt;
&lt;li&gt;coordinate teams&lt;/li&gt;
&lt;li&gt;mentor others&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and yet somehow do it all simultaneously&lt;/p&gt;

&lt;p&gt;The longer I stay in this profession, the less convinced I am that such people exist.&lt;/p&gt;

&lt;p&gt;At least not sustainably.&lt;/p&gt;

&lt;p&gt;What I do see are engineers who consistently create value in different ways.&lt;/p&gt;

&lt;p&gt;Not because they are better than their peers.&lt;/p&gt;

&lt;p&gt;Because they are drawn toward different kinds of problems.&lt;/p&gt;

&lt;p&gt;Over time, I found myself grouping many of those tendencies into five broad archetypes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Mason&lt;/li&gt;
&lt;li&gt;The Gardener&lt;/li&gt;
&lt;li&gt;The Blacksmith&lt;/li&gt;
&lt;li&gt;The Bear Killer&lt;/li&gt;
&lt;li&gt;The Chef&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not personality types.&lt;/p&gt;

&lt;p&gt;They are not measures of seniority.&lt;/p&gt;

&lt;p&gt;And they are certainly not measures of worth.&lt;/p&gt;

&lt;p&gt;They are simply different ways engineers contribute to the health and survival of technical organizations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Mason
&lt;/h2&gt;

&lt;p&gt;The Mason builds foundations.&lt;/p&gt;

&lt;p&gt;These engineers are often drawn toward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;platforms&lt;/li&gt;
&lt;li&gt;frameworks&lt;/li&gt;
&lt;li&gt;domain models&lt;/li&gt;
&lt;li&gt;infrastructure&lt;/li&gt;
&lt;li&gt;architecture&lt;/li&gt;
&lt;li&gt;and foundational systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What makes them unique is that much of their work exists to support things that have not been built yet.&lt;/p&gt;

&lt;p&gt;A Mason may spend months building something that only becomes valuable when dozens of other engineers begin building on top of it.&lt;/p&gt;

&lt;p&gt;They think in terms of structure, stability, and permanence.&lt;/p&gt;

&lt;p&gt;Where others see a project, the Mason sees the ground beneath it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Gardener
&lt;/h2&gt;

&lt;p&gt;The Gardener cultivates growth.&lt;/p&gt;

&lt;p&gt;These engineers thrive in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;greenfield projects&lt;/li&gt;
&lt;li&gt;experimentation&lt;/li&gt;
&lt;li&gt;discovery&lt;/li&gt;
&lt;li&gt;iteration&lt;/li&gt;
&lt;li&gt;and possibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are often the first to ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What if we tried this?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gardeners create conditions where new ideas can take root and grow.&lt;/p&gt;

&lt;p&gt;They are comfortable operating in uncertainty and often help organizations discover opportunities that were not obvious beforehand.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Blacksmith
&lt;/h2&gt;

&lt;p&gt;The Blacksmith restores durability.&lt;/p&gt;

&lt;p&gt;These engineers are often found working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;modernization efforts&lt;/li&gt;
&lt;li&gt;technical debt&lt;/li&gt;
&lt;li&gt;infrastructure improvements&lt;/li&gt;
&lt;li&gt;performance bottlenecks&lt;/li&gt;
&lt;li&gt;and aging systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where others see something outdated, the Blacksmith sees something worth repairing.&lt;/p&gt;

&lt;p&gt;They understand pressure, stress, and failure modes.&lt;/p&gt;

&lt;p&gt;More importantly, they understand how to strengthen systems so they can continue serving the people who depend on them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bear Killer
&lt;/h2&gt;

&lt;p&gt;The Bear Killer handles existential threats.&lt;/p&gt;

&lt;p&gt;Every organization eventually encounters problems that normal processes cannot solve.&lt;/p&gt;

&lt;p&gt;They come alive during: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Outages&lt;/li&gt;
&lt;li&gt;Critical failures&lt;/li&gt;
&lt;li&gt;Security incidents&lt;/li&gt;
&lt;li&gt;Impossible migrations&lt;/li&gt;
&lt;li&gt;High-pressure emergencies&lt;/li&gt;
&lt;li&gt;The problems no one can solve&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bear Killers are often the engineers who become calmer as pressure increases.&lt;/p&gt;

&lt;p&gt;They simplify chaos.&lt;br&gt;
Focus attention.&lt;br&gt;
Contain damage.&lt;br&gt;
And help organizations survive moments when everything feels uncertain.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Chef
&lt;/h2&gt;

&lt;p&gt;The Chef creates cohesion.&lt;/p&gt;

&lt;p&gt;As organizations grow, complexity grows with them.&lt;/p&gt;

&lt;p&gt;More teams.&lt;br&gt;
More systems.&lt;br&gt;
More dependencies.&lt;br&gt;
More moving pieces.&lt;/p&gt;

&lt;p&gt;The Chef understands how all those pieces fit together.&lt;/p&gt;

&lt;p&gt;They think in terms of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;timing&lt;/li&gt;
&lt;li&gt;coordination&lt;/li&gt;
&lt;li&gt;communication&lt;/li&gt;
&lt;li&gt;sequencing&lt;/li&gt;
&lt;li&gt;and flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Chef recognizes that successful systems require more than technical excellence.&lt;/p&gt;

&lt;p&gt;They require orchestration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Healthy Engineering Organizations Need All Five
&lt;/h2&gt;

&lt;p&gt;One of the mistakes engineering organizations often make is overvaluing whichever archetype happens to be fashionable at the moment.&lt;/p&gt;

&lt;p&gt;Startups often celebrate Gardeners.&lt;/p&gt;

&lt;p&gt;Large enterprises desperately need Blacksmiths.&lt;/p&gt;

&lt;p&gt;Crisis-heavy organizations become dependent on Bear Killers.&lt;/p&gt;

&lt;p&gt;Growing companies eventually discover the importance of Chefs.&lt;/p&gt;

&lt;p&gt;And many organizations fail to appreciate Masons until years after the foundations have already been laid.&lt;/p&gt;

&lt;p&gt;But healthy engineering cultures usually require all five.&lt;/p&gt;

&lt;p&gt;Because software systems are not static.&lt;/p&gt;

&lt;p&gt;They are born.&lt;br&gt;
They grow.&lt;br&gt;
They age.&lt;br&gt;
They fail.&lt;br&gt;
They evolve.&lt;/p&gt;

&lt;p&gt;And different engineers are naturally drawn toward different parts of that lifecycle.&lt;/p&gt;

&lt;p&gt;That diversity is not weakness.&lt;/p&gt;

&lt;p&gt;It is how technical civilizations survive.&lt;/p&gt;

&lt;p&gt;In the articles that follow, I want to explore each archetype individually, beginning with The Mason — the engineers who quietly build the foundations upon which entire technical organizations are constructed.&lt;/p&gt;

</description>
      <category>engineeringculture</category>
      <category>techleadership</category>
      <category>engineeringleadership</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Myth of the 10x Developer</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Wed, 27 May 2026 14:50:53 +0000</pubDate>
      <link>https://dev.to/druid628/the-myth-of-the-10x-developer-1ig5</link>
      <guid>https://dev.to/druid628/the-myth-of-the-10x-developer-1ig5</guid>
      <description>&lt;p&gt;The idea of the "10x developer" has been floating around the industry for years.&lt;/p&gt;

&lt;p&gt;Usually, it gets framed around speed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Someone who writes code faster.&lt;/li&gt;
&lt;li&gt;Ships more tickets.&lt;/li&gt;
&lt;li&gt;Pushes more commits.&lt;/li&gt;
&lt;li&gt;Produces more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Personally, I've never really liked that definition. &lt;/p&gt;

&lt;p&gt;Not because highly productive engineers don't exist. They absolutely do. But I think we've been measuring the wrong thing.&lt;/p&gt;

&lt;p&gt;The best engineers I've worked with were rarely the people writing the most code.&lt;/p&gt;

&lt;p&gt;In fact, sometimes they were writing less. Because a lot of their value came from preventing problems before they ever existed.&lt;/p&gt;

&lt;p&gt;They asked uncomfortable questions early and spotted assumptions no one else noticed. They challenged designs that "should probably be fine," and they saw downstream consequences before the rest of the room had even finished discussing the feature.&lt;/p&gt;

&lt;p&gt;And sometimes?&lt;/p&gt;

&lt;p&gt;They slowed things down.&lt;/p&gt;

&lt;p&gt;That part is important. Because speed and effectiveness are not always the same thing.&lt;/p&gt;

&lt;p&gt;I've seen engineers move incredibly fast, straight into bad decisions. I've seen teams optimize themselves directly into complexity.  &lt;/p&gt;

&lt;p&gt;I've even seen projects hit every sprint goal while quietly becoming increasingly hard to maintain.&lt;/p&gt;

&lt;p&gt;The best engineers I've worked with understood something deeper:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Working code is not the finish line.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A strong engineer thinks beyond:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Does this work?"&lt;/li&gt;
&lt;li&gt;"Did the tests pass?"&lt;/li&gt;
&lt;li&gt;"Can we ship it?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They think about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;maintainability&lt;/li&gt;
&lt;li&gt;operational cost&lt;/li&gt;
&lt;li&gt;onboarding friction&lt;/li&gt;
&lt;li&gt;future flexibility&lt;/li&gt;
&lt;li&gt;failure modes&lt;/li&gt;
&lt;li&gt;team comprehension&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They think in trade-offs.&lt;/p&gt;

&lt;p&gt;That's where the real multiplier effect comes from. Not typing speed. Not commit count. Not how quickly someone can scaffold a feature.&lt;/p&gt;

&lt;p&gt;The real multiplier is reducing future pain.&lt;/p&gt;

&lt;p&gt;Sometimes that looks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;preventing a rewrite&lt;/li&gt;
&lt;li&gt;simplifying a design&lt;/li&gt;
&lt;li&gt;catching a scalability issue early&lt;/li&gt;
&lt;li&gt;asking the question no one else thought to ask&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And sometimes it looks like saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I think we're solving the wrong problem."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That kind of engineering value is hard to measure.&lt;/p&gt;

&lt;p&gt;Mostly because the best outcomes are often invisible.&lt;/p&gt;

&lt;p&gt;Nobody sees:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the outage that never happened&lt;/li&gt;
&lt;li&gt;the incident that was avoided&lt;/li&gt;
&lt;li&gt;the migration that didn't become necessary&lt;/li&gt;
&lt;li&gt;the complexity that never entered the system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But experienced engineers know those things matter.&lt;/p&gt;

&lt;p&gt;A lot.&lt;/p&gt;

&lt;p&gt;Ironically, AI has made me think about this even more. Because AI can absolutely make people faster. I've seen it firsthand. But faster is only useful if the direction is correct.&lt;/p&gt;

&lt;p&gt;If anything, the rise of AI makes strong engineering judgment even more valuable.&lt;/p&gt;

&lt;p&gt;Because now the bottleneck isn't always code production.&lt;/p&gt;

&lt;p&gt;Sometimes the bottleneck is knowing what should be built in the first place.&lt;/p&gt;

&lt;p&gt;The best engineers I know can work in multiple languages, frameworks, and environments.&lt;/p&gt;

&lt;p&gt;But the thing that makes them valuable isn't syntax.&lt;/p&gt;

&lt;p&gt;It's perspective.&lt;/p&gt;

&lt;p&gt;They can look at a problem from every angle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;technical&lt;/li&gt;
&lt;li&gt;operational&lt;/li&gt;
&lt;li&gt;organizational&lt;/li&gt;
&lt;li&gt;long-term&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They don't just understand how to build systems. They understand how systems fail.&lt;/p&gt;

&lt;p&gt;That's the skill.&lt;/p&gt;

&lt;p&gt;And no productivity metric fully captures it.&lt;/p&gt;

&lt;p&gt;So when people talk about "10x developers"...&lt;/p&gt;

&lt;p&gt;I think they're pointing at something real. But I think they're measuring the wrong thing.&lt;/p&gt;

&lt;p&gt;The best engineers aren't the ones producing 10x more code.&lt;/p&gt;

&lt;p&gt;They're the ones creating 10x less chaos.&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>🔐 Working with Private Symfony Recipes</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Thu, 21 May 2026 14:25:52 +0000</pubDate>
      <link>https://dev.to/druid628/working-with-private-symfony-recipes-4pkp</link>
      <guid>https://dev.to/druid628/working-with-private-symfony-recipes-4pkp</guid>
      <description>&lt;h2&gt;
  
  
  Private Symfony Recipes (or: how I stopped repeating myself)
&lt;/h2&gt;

&lt;p&gt;I got tired of setting up the same things in every Symfony project.&lt;/p&gt;

&lt;p&gt;Same configs.&lt;br&gt;
Same services.&lt;br&gt;
Same little pieces of glue code that aren’t hard—but add up.&lt;/p&gt;

&lt;p&gt;Symfony recipes solve a lot of this.&lt;/p&gt;

&lt;p&gt;Until you need your own.&lt;/p&gt;



&lt;p&gt;At some point I decided:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Surely there’s a way to do this privately.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I sat down one evening and started digging.&lt;/p&gt;

&lt;p&gt;Docs open.&lt;br&gt;
Composer configs half-understood.&lt;br&gt;
A couple of tabs that &lt;em&gt;looked&lt;/em&gt; promising but didn’t quite connect.&lt;/p&gt;

&lt;p&gt;And for a while… nothing clicked.&lt;/p&gt;

&lt;p&gt;I remember getting to the point where I was about ready to reach out to someone a lot smarter than me and just ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Alright, what am I missing here?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And then it finally clicked.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧠 The idea
&lt;/h2&gt;

&lt;p&gt;Symfony recipes aren’t magic.&lt;/p&gt;

&lt;p&gt;They’re just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A repository&lt;/li&gt;
&lt;li&gt;With a specific structure&lt;/li&gt;
&lt;li&gt;That Flex knows how to read&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of relying only on the public recipes repo, you can point your project at your own.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;private recipes repository&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  🪓 The basic setup (no fluff)
&lt;/h2&gt;

&lt;p&gt;At a high level, you need:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. A recipes repository
&lt;/h3&gt;

&lt;p&gt;This is just a git repo with a structure like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;recipes/
  vendor/
    package/
      version/
        manifest.json
        config/
        src/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important piece is the &lt;code&gt;manifest.json&lt;/code&gt;.&lt;br&gt;
That’s what tells Symfony Flex what to do.&lt;/p&gt;


&lt;h3&gt;
  
  
  2. A manifest
&lt;/h3&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"copy-from-recipe"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"config/"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"%CONFIG_DIR%/"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where you define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;files to copy&lt;/li&gt;
&lt;li&gt;configs to apply&lt;/li&gt;
&lt;li&gt;environment setup&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Tell Composer where to find it
&lt;/h3&gt;

&lt;p&gt;In your project’s &lt;code&gt;composer.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"extra"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"symfony"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"endpoint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"https://your-private-recipes-repo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"flex://defaults"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Order matters. Your repo goes first.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Install your package
&lt;/h3&gt;

&lt;p&gt;Now when you require your package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require your/package
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Symfony Flex will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;check your private repo first&lt;/li&gt;
&lt;li&gt;apply your recipe&lt;/li&gt;
&lt;li&gt;then fall back to defaults if needed&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 What I actually use this for
&lt;/h2&gt;

&lt;p&gt;This is where it gets useful.&lt;/p&gt;

&lt;p&gt;My private recipes handle things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shared configuration across projects&lt;/li&gt;
&lt;li&gt;Common service wiring&lt;/li&gt;
&lt;li&gt;Internal conventions I don’t want to rethink every time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Alright, how did I set this up last time?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“composer require → done”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ⚠️ The gotchas (aka the part that took way too long)
&lt;/h2&gt;

&lt;p&gt;A few things that tripped me up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The structure has to be &lt;em&gt;exactly right&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The endpoint configuration is not intuitive the first time&lt;/li&gt;
&lt;li&gt;Debugging why a recipe didn’t apply is… not fun&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If it’s not working, check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is your repo reachable?&lt;/li&gt;
&lt;li&gt;Is the path correct?&lt;/li&gt;
&lt;li&gt;Is the version directory matching what Flex expects?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of my time wasn’t spent building this.&lt;/p&gt;

&lt;p&gt;It was spent figuring out why it &lt;em&gt;wasn’t&lt;/em&gt; working.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ The payoff
&lt;/h2&gt;

&lt;p&gt;Once it clicked, everything got easier.&lt;/p&gt;

&lt;p&gt;New project?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Require package&lt;/li&gt;
&lt;li&gt;Config shows up&lt;/li&gt;
&lt;li&gt;Services wired&lt;/li&gt;
&lt;li&gt;Done&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;digging through old repos&lt;/li&gt;
&lt;li&gt;copying configs manually&lt;/li&gt;
&lt;li&gt;forgetting one small but important detail&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;This isn’t a flashy feature.&lt;/p&gt;

&lt;p&gt;It’s not something you demo.&lt;/p&gt;

&lt;p&gt;But it’s one of those things that quietly saves time every single time you start something new.&lt;/p&gt;

&lt;p&gt;And if you’ve ever found yourself thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I’ve done this before… why am I doing it again?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This might be worth the evening it takes to figure out.&lt;/p&gt;

&lt;p&gt;Even if that evening is a little frustrating.&lt;/p&gt;

</description>
      <category>symfony</category>
      <category>softwareengineering</category>
      <category>php</category>
      <category>devex</category>
    </item>
    <item>
      <title>Why Ember Feels Natural to Backend Engineers</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Tue, 05 May 2026 12:30:00 +0000</pubDate>
      <link>https://dev.to/druid628/why-ember-feels-natural-to-backend-engineers-212o</link>
      <guid>https://dev.to/druid628/why-ember-feels-natural-to-backend-engineers-212o</guid>
      <description>&lt;p&gt;I’ve never really struggled to learn frontend frameworks.&lt;/p&gt;

&lt;p&gt;I’ve struggled to feel like I’m building something stable with them.&lt;/p&gt;

&lt;p&gt;Most of the time, I’m working on the backend.&lt;/p&gt;

&lt;p&gt;When I’m doing frontend work, it’s usually in bursts—building something out, proving an idea, or wiring up a system so it’s actually usable.&lt;/p&gt;

&lt;p&gt;A lot of times, I’m doing that solo.&lt;/p&gt;

&lt;p&gt;And every time I come back to frontend work, I run into the same problem.&lt;/p&gt;

&lt;p&gt;Everything has changed.&lt;/p&gt;

&lt;p&gt;The patterns are different.&lt;br&gt;
The tooling has shifted.&lt;br&gt;
The “right way” to do something is no longer the way it was the last time I touched it.&lt;/p&gt;




&lt;p&gt;So now, before I can even start building…&lt;/p&gt;

&lt;p&gt;I have to get spun back up.&lt;/p&gt;

&lt;p&gt;Again. I don’t have time for that.&lt;/p&gt;

&lt;p&gt;Sure, I could build my own set of patterns.&lt;/p&gt;

&lt;p&gt;Put together a little rapid development setup.&lt;br&gt;
Standardize how I do things.&lt;br&gt;
Create my own “mini framework” on top of whatever I’m using.&lt;/p&gt;

&lt;p&gt;But that only works until the next time I need it.&lt;/p&gt;

&lt;p&gt;Because by then, everything underneath it has changed again.&lt;/p&gt;

&lt;p&gt;That’s the cycle Ember breaks for me.&lt;/p&gt;




&lt;p&gt;I’ve picked Ember up, put it down, and come back to it multiple times over the years.&lt;/p&gt;

&lt;p&gt;And every time, I’m productive again in about an hour.&lt;/p&gt;

&lt;p&gt;Not because nothing changed.&lt;br&gt;
But because what changed made sense.&lt;/p&gt;

&lt;p&gt;The last time I spun something up in Ember, I realized Ember Data was on its way out.&lt;/p&gt;

&lt;p&gt;Warp Drive was coming in.&lt;/p&gt;

&lt;p&gt;In most frontend ecosystems, that’s a red flag.&lt;/p&gt;

&lt;p&gt;That’s a sign you’re about to spend time relearning something fundamental.&lt;/p&gt;

&lt;p&gt;But this wasn’t that.&lt;/p&gt;

&lt;p&gt;Warp Drive didn’t feel like a replacement.&lt;/p&gt;

&lt;p&gt;It felt like the next logical step.&lt;/p&gt;

&lt;p&gt;I didn’t have to rethink how everything worked.&lt;br&gt;
I didn’t have to throw away what I knew.&lt;br&gt;
I just… kept going.&lt;/p&gt;

&lt;p&gt;That’s the difference.&lt;/p&gt;




&lt;p&gt;Ember doesn’t optimize for constant reinvention.&lt;/p&gt;

&lt;p&gt;It optimizes for continuity.&lt;br&gt;
And as a backend engineer, that matters more than anything else.&lt;/p&gt;

&lt;p&gt;I’m used to systems where structure matters.&lt;br&gt;
Where things have a place.&lt;br&gt;
Where decisions you make today are still going to exist six months from now.&lt;/p&gt;

&lt;p&gt;Ember feels like that.&lt;/p&gt;




&lt;p&gt;It gives you a structure up front:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;routing that makes sense&lt;/li&gt;
&lt;li&gt;services that behave predictably&lt;/li&gt;
&lt;li&gt;a clear place for things to live&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It doesn’t ask you how you want to organize your application.&lt;br&gt;
It gives you a way to do it.&lt;/p&gt;

&lt;p&gt;And that’s not a limitation.&lt;/p&gt;

&lt;p&gt;That’s a relief.&lt;/p&gt;

&lt;p&gt;Because I don’t want to spend time deciding where things go.&lt;/p&gt;

&lt;p&gt;I want to build something.&lt;/p&gt;

&lt;p&gt;That’s where Ember really clicks for me.&lt;/p&gt;

&lt;p&gt;Most frontend frameworks give you flexibility.&lt;/p&gt;

&lt;p&gt;You can structure things however you want.&lt;br&gt;
Pick your tools.&lt;br&gt;
Define your patterns.&lt;/p&gt;

&lt;p&gt;And that sounds great.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Until you have to maintain it.&lt;/li&gt;
&lt;li&gt;Until you come back to it six months later.&lt;/li&gt;
&lt;li&gt;Until someone else has to figure out what you were thinking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flexibility solves the problem you have today.&lt;br&gt;
Consistency solves the problems you don’t know you’re going to have yet.&lt;/p&gt;

&lt;p&gt;Ember chooses consistency.&lt;/p&gt;




&lt;p&gt;It’s not perfect.&lt;/p&gt;

&lt;p&gt;Ember Data has its quirks.&lt;br&gt;
Adapters can feel like a maze sometimes.&lt;/p&gt;

&lt;p&gt;But the trade-offs are intentional.&lt;/p&gt;

&lt;p&gt;It’s not trying to be everything.&lt;br&gt;
It’s trying to be predictable.&lt;/p&gt;

&lt;p&gt;And that predictability compounds.&lt;/p&gt;

&lt;p&gt;I don’t need a framework that lets me do anything.&lt;/p&gt;

&lt;p&gt;I need one that helps me do the right thing consistently. I don’t want to rebuild my frontend architecture every time I start a project.&lt;/p&gt;

&lt;p&gt;I want to start building features.&lt;/p&gt;

&lt;p&gt;That’s why Ember feels natural to me.&lt;/p&gt;




&lt;p&gt;Not because it’s easier.&lt;br&gt;
Not because it’s simpler.&lt;br&gt;
But because it aligns with how I already think about building systems.&lt;/p&gt;

&lt;p&gt;And when a tool does that...&lt;/p&gt;

&lt;p&gt;you stop fighting it.&lt;/p&gt;

&lt;p&gt;You just build.&lt;/p&gt;

</description>
      <category>ember</category>
    </item>
    <item>
      <title>We're Not Hiring for Languages Anymore</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Tue, 28 Apr 2026 12:30:00 +0000</pubDate>
      <link>https://dev.to/druid628/were-not-hiring-for-languages-anymore-h1c</link>
      <guid>https://dev.to/druid628/were-not-hiring-for-languages-anymore-h1c</guid>
      <description>&lt;p&gt;I found myself wondering recently:&lt;br&gt;
Are job descriptions asking less about languages than they used to?&lt;/p&gt;

&lt;p&gt;So I went looking.&lt;br&gt;
I started going through postings to see if it was real…&lt;/p&gt;

&lt;p&gt;And the pattern showed up pretty quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Job descriptions aren't asking for languages as much.
&lt;/h2&gt;

&lt;p&gt;Instead, I'm seeing more emphasis on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;specific AI tools&lt;/li&gt;
&lt;li&gt;platforms&lt;/li&gt;
&lt;li&gt;workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Less:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"strong experience in X language"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;More:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"experience with [tool] or [AI-assisted development stack]"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a shift. And I don't think it's accidental.&lt;/p&gt;

&lt;p&gt;AI has lowered the barrier to writing code. You don't need to know everything about a language to get something working anymore.&lt;/p&gt;

&lt;p&gt;That's powerful.&lt;/p&gt;

&lt;p&gt;But it also raises some questions.&lt;/p&gt;

&lt;p&gt;What Are We Optimizing For?&lt;/p&gt;

&lt;p&gt;If language expertise becomes less important, what replaces it?&lt;/p&gt;

&lt;p&gt;Because something always does.&lt;/p&gt;

&lt;p&gt;Right now, it looks like we're replacing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;deep understanding of a language&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;familiarity with tools that generate or assist with code&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's not inherently bad. &lt;br&gt;
But it changes how decisions get made.&lt;/p&gt;




&lt;h3&gt;
  
  
  Concern #1: Choosing the Right Tool
&lt;/h3&gt;

&lt;p&gt;If fewer people have deep language experience, then fewer people are equipped to evaluate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;trade-offs between languages&lt;/li&gt;
&lt;li&gt;long-term maintainability&lt;/li&gt;
&lt;li&gt;performance implications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The risk isn't that we pick a bad language.&lt;/p&gt;

&lt;p&gt;It's that we stop asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is this the right language at all?"&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Concern #2: AI Bias Becomes Industry Bias
&lt;/h3&gt;

&lt;p&gt;AI tools don't treat all languages equally.&lt;/p&gt;

&lt;p&gt;Some are better supported. Better trained. More represented.&lt;/p&gt;

&lt;p&gt;I ran into this firsthand recently.&lt;/p&gt;

&lt;p&gt;I was exploring a project idea and decided to use AI as a sounding board. I'd already done most of the thinking—worked through trade-offs, had a direction in mind.&lt;/p&gt;

&lt;p&gt;But as I talked through the design, it kept nudging me.&lt;/p&gt;

&lt;p&gt;Away from what I had chosen…&lt;br&gt;
Toward C#, Python, or Go.&lt;/p&gt;

&lt;p&gt;Not once. Repeatedly.&lt;/p&gt;

&lt;p&gt;So afterward, I ran a small experiment. I started having similar conversations—same kinds of problems—but across different languages and frameworks.&lt;/p&gt;

&lt;p&gt;And it didn't take long to notice a pattern.&lt;/p&gt;

&lt;p&gt;Some languages were consistently favored. Others were… gently discouraged.&lt;/p&gt;

&lt;p&gt;Not explicitly.&lt;br&gt;
But enough that, if you weren't paying attention, you'd end up somewhere you didn't choose.&lt;/p&gt;

&lt;p&gt;Over time, that can create a feedback loop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI favors certain languages&lt;/li&gt;
&lt;li&gt;developers use those languages more&lt;/li&gt;
&lt;li&gt;those languages become even more dominant&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not because they're always the best choice.&lt;br&gt;
But because they're the easiest.&lt;/p&gt;

&lt;p&gt;And languages that fall outside that loop?&lt;/p&gt;

&lt;p&gt;They start to fade.&lt;/p&gt;




&lt;h3&gt;
  
  
  Concern #3: The Perception of Skill Changes
&lt;/h3&gt;

&lt;p&gt;If AI can generate working code...&lt;/p&gt;

&lt;p&gt;then the perception becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How hard can this really be?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's not new.&lt;br&gt;
But it gets amplified.&lt;/p&gt;

&lt;p&gt;Because now, more people can produce something that looks like a solution.&lt;/p&gt;

&lt;p&gt;The difference between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;working code&lt;/li&gt;
&lt;li&gt;good code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;becomes harder to see.&lt;/p&gt;

&lt;p&gt;I've seen how that perception can play out.&lt;/p&gt;

&lt;p&gt;I worked at a place where the owner of the company was heard—more than once—saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I don't understand why I have to pay engineers more than data entry people. It's the exact same thing."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That wasn't coming from malice.&lt;br&gt;
It was coming from misunderstanding.&lt;/p&gt;

&lt;p&gt;A lack of visibility into what actually goes into engineering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the decisions&lt;/li&gt;
&lt;li&gt;the trade-offs&lt;/li&gt;
&lt;li&gt;the long-term consequences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI doesn't create that misunderstanding.&lt;br&gt;
But it can reinforce it.&lt;/p&gt;

&lt;p&gt;Because when code becomes easier to produce, it's even harder from the outside to see the difference between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;something that works&lt;/li&gt;
&lt;li&gt;and something that's built well&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And when that distinction disappears…&lt;/p&gt;

&lt;p&gt;so does the perceived value.&lt;/p&gt;




&lt;h3&gt;
  
  
  Concern #4: A Tighter Job Market
&lt;/h3&gt;

&lt;p&gt;Lowering the barrier to entry does something else. It increases the number of people who can compete.&lt;/p&gt;

&lt;p&gt;That's great for access.&lt;/p&gt;

&lt;p&gt;But it also means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;more applicants per role&lt;/li&gt;
&lt;li&gt;more noise in the hiring process&lt;/li&gt;
&lt;li&gt;harder differentiation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Especially for engineers early in their careers.&lt;/p&gt;

&lt;p&gt;This isn't all downside. &lt;/p&gt;

&lt;h2&gt;
  
  
  There Are Real Advantages
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Easier Transitions Between Languages
&lt;/h3&gt;

&lt;p&gt;Switching stacks used to be a real hurdle.&lt;br&gt;
Now?&lt;br&gt;
It's easier to ramp.&lt;/p&gt;

&lt;p&gt;That opens doors for engineers who want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;explore different ecosystems&lt;/li&gt;
&lt;li&gt;move into new roles&lt;/li&gt;
&lt;li&gt;avoid being locked into a single stack&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Access to New Industries
&lt;/h3&gt;

&lt;p&gt;Language requirements have historically acted as gatekeepers.&lt;/p&gt;

&lt;p&gt;If you didn't have the "right" experience, certain roles were just off-limits.&lt;/p&gt;

&lt;p&gt;That's changing.&lt;/p&gt;

&lt;p&gt;More people can move into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;industries they care about&lt;/li&gt;
&lt;li&gt;problems they're interested in solving&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's a good thing.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Working Across Environments Gets Easier
&lt;/h3&gt;

&lt;p&gt;AI reduces friction when jumping between systems.&lt;/p&gt;

&lt;p&gt;You don't have to context-switch as hard.&lt;/p&gt;

&lt;p&gt;You don't have to remember every detail.&lt;/p&gt;

&lt;p&gt;That makes engineers more flexible.&lt;/p&gt;




&lt;h2&gt;
  
  
  So Where Does That Leave Us?
&lt;/h2&gt;

&lt;p&gt;I don't think language knowledge is going away.&lt;/p&gt;

&lt;p&gt;But I do think it's being deprioritized. &lt;/p&gt;

&lt;p&gt;And that means we need to be more intentional about what we value. Because if we're not careful, we don't just lower the barrier to entry.&lt;/p&gt;

&lt;p&gt;We lower the standard.&lt;/p&gt;




&lt;p&gt;The real skill has never been writing code.&lt;/p&gt;

&lt;p&gt;It's understanding what should be written…&lt;br&gt;
and why.&lt;/p&gt;

&lt;p&gt;The best engineers I've worked with know multiple languages.&lt;/p&gt;

&lt;p&gt;Not because the languages matter that much—&lt;/p&gt;

&lt;p&gt;but because thinking in different systems does.&lt;/p&gt;

&lt;p&gt;They can look at a problem from every angle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;performance&lt;/li&gt;
&lt;li&gt;maintainability&lt;/li&gt;
&lt;li&gt;trade-offs&lt;/li&gt;
&lt;li&gt;long-term impact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They don't just solve the problem in front of them.&lt;br&gt;
They understand the shape of it.&lt;br&gt;
That's the skill.&lt;/p&gt;

&lt;p&gt;And no tool replaces that.&lt;/p&gt;

&lt;p&gt;At least not yet.&lt;/p&gt;

</description>
      <category>hiring</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Case for Red Teaming Your Design</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Tue, 21 Apr 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/druid628/the-case-for-red-teaming-your-design-j0c</link>
      <guid>https://dev.to/druid628/the-case-for-red-teaming-your-design-j0c</guid>
      <description>&lt;h2&gt;
  
  
  The System That Was Never Challenged
&lt;/h2&gt;

&lt;p&gt;I worked on a system that, on the surface, was well-architected.&lt;/p&gt;

&lt;p&gt;It had structure. It had clear intent. It solved the problem it was designed to solve.&lt;/p&gt;

&lt;p&gt;And in a lot of ways, it was good work.&lt;/p&gt;




&lt;p&gt;It also had an N+1 problem.&lt;/p&gt;

&lt;p&gt;On top of that, it was running, on average, an additional 60 or so queries per page load.&lt;/p&gt;

&lt;p&gt;And there was enough “magic” baked into it that, over time, only a couple of us really understood how it worked.&lt;/p&gt;




&lt;p&gt;None of that happened because the engineer who built it didn’t know what they were doing.&lt;/p&gt;

&lt;p&gt;Quite the opposite.&lt;/p&gt;

&lt;p&gt;They were capable. Thoughtful. Intentional.&lt;/p&gt;

&lt;p&gt;The system didn’t fail because of a lack of skill.&lt;/p&gt;

&lt;p&gt;It failed because it was never truly challenged.&lt;/p&gt;




&lt;h2&gt;
  
  
  Red Team vs Blue Team
&lt;/h2&gt;

&lt;p&gt;Before I go too far, it’s probably worth calling out the obvious question:&lt;/p&gt;

&lt;p&gt;If there’s a red team… what’s the blue team?&lt;/p&gt;

&lt;p&gt;In this context, the blue team is the group responsible for the design itself — the people building the architecture, writing the technical design document, and making the initial set of decisions.&lt;/p&gt;

&lt;p&gt;They’re the ones solving the problem.&lt;/p&gt;

&lt;p&gt;The red team exists to challenge how that problem is being solved.&lt;/p&gt;

&lt;p&gt;And if you’ve ever had a TDD red-teamed and absolutely shredded by the Navy’s N6… everything else tends to pale in comparison.&lt;/p&gt;




&lt;p&gt;In a lot of places, that challenge gets folded into a design review.&lt;/p&gt;

&lt;p&gt;A TDD or TAD walkthrough where stakeholders, engineers, and leadership all sit in a room and talk through the design.&lt;/p&gt;

&lt;p&gt;On paper, that sounds like the right place for it.&lt;/p&gt;

&lt;p&gt;In practice, it usually isn’t.&lt;/p&gt;

&lt;p&gt;Those meetings tend to be high-level.&lt;/p&gt;

&lt;p&gt;There’s pressure to keep things moving.&lt;br&gt;
To stay focused.&lt;br&gt;
To not get bogged down in edge cases or deep technical rabbit holes.&lt;/p&gt;

&lt;p&gt;And that’s not necessarily wrong — those meetings serve a purpose.&lt;/p&gt;

&lt;p&gt;But it also means the harder questions…&lt;/p&gt;

&lt;p&gt;The uncomfortable ones…&lt;/p&gt;

&lt;p&gt;The “what happens when this breaks?” conversations…&lt;/p&gt;

&lt;p&gt;often don’t get asked.&lt;/p&gt;

&lt;p&gt;Or don’t get asked deeply enough.&lt;/p&gt;




&lt;p&gt;That’s why I prefer to separate them.&lt;/p&gt;

&lt;p&gt;A blue team session to design the system.&lt;/p&gt;

&lt;p&gt;And a dedicated red team session to pressure-test it.&lt;/p&gt;

&lt;p&gt;Different goals. Different mindset. Different conversations.&lt;/p&gt;

&lt;p&gt;One builds.&lt;/p&gt;

&lt;p&gt;The other challenges.&lt;/p&gt;

&lt;p&gt;And you need both.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building the Right Red Team
&lt;/h2&gt;

&lt;p&gt;In security, we talk about red teams.&lt;/p&gt;

&lt;p&gt;Groups whose job is to actively probe, challenge, and break systems before someone else does.&lt;/p&gt;

&lt;p&gt;Engineering doesn’t always have an equivalent.&lt;/p&gt;

&lt;p&gt;But it should.&lt;/p&gt;




&lt;p&gt;Over time, I’ve found that the most effective red teams aren’t random.&lt;/p&gt;

&lt;p&gt;I try to be intentional about who’s in the room — or at least what perspectives are represented.&lt;/p&gt;

&lt;p&gt;At a minimum, I want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;someone strong on the backend — how the system is structured and behaves&lt;/li&gt;
&lt;li&gt;someone who understands the frontend — how it’s actually used and where it breaks in real interaction&lt;/li&gt;
&lt;li&gt;someone with a deep understanding of the database — how queries behave and where performance issues hide&lt;/li&gt;
&lt;li&gt;someone security-minded — thinking about abuse, edge cases, and failure modes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And depending on the system, I’ll also try to bring in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;someone with an operations or SRE mindset — thinking about failure, recovery, observability, and “what happens at 2am”&lt;/li&gt;
&lt;li&gt;someone approaching it from a maintenance perspective — “how hard is this to live with in six months?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes one person can cover multiple areas.&lt;/p&gt;




&lt;p&gt;I also try to be mindful of how many people I’m pulling into this.&lt;/p&gt;

&lt;p&gt;In most cases, I’ll cap an initial red team at around four people.&lt;/p&gt;

&lt;p&gt;That tends to be the sweet spot — enough perspective to meaningfully challenge the design, without unnecessarily interrupting half the team.&lt;/p&gt;

&lt;p&gt;If I can get the right coverage with three, I’ll do that.&lt;/p&gt;

&lt;p&gt;And if I can only get three, I’ll take three.&lt;/p&gt;

&lt;p&gt;That’s where having people who can span multiple disciplines becomes really valuable.&lt;/p&gt;

&lt;p&gt;The goal isn’t to make this heavy.&lt;/p&gt;

&lt;p&gt;It’s to make it effective.&lt;/p&gt;




&lt;p&gt;One of the more surprising things I’ve learned is how valuable it is to include mid-level engineers in these conversations.&lt;/p&gt;

&lt;p&gt;Not because they know less — but because they see things differently.&lt;/p&gt;

&lt;p&gt;They’re often the ones closest to the day-to-day work.&lt;/p&gt;

&lt;p&gt;They’re the ones most likely to be maintaining what gets built.&lt;/p&gt;

&lt;p&gt;And they ask questions that more senior engineers sometimes skip right past.&lt;/p&gt;

&lt;p&gt;The kind of questions that sound simple…&lt;/p&gt;

&lt;p&gt;until you realize they’ve just exposed something you hadn’t considered at all.&lt;/p&gt;

&lt;p&gt;More than once, those have been the questions that mattered most.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Red Teaming Actually Looks Like
&lt;/h2&gt;

&lt;p&gt;Because most design problems don’t look like problems at the beginning.&lt;/p&gt;

&lt;p&gt;They look like decisions.&lt;/p&gt;

&lt;p&gt;Reasonable ones.&lt;/p&gt;

&lt;p&gt;Individually justifiable.&lt;/p&gt;

&lt;p&gt;Even clever.&lt;/p&gt;




&lt;p&gt;Until they aren’t.&lt;/p&gt;

&lt;p&gt;Until load increases.&lt;/p&gt;

&lt;p&gt;Until someone new joins the team.&lt;/p&gt;

&lt;p&gt;Until a bug shows up in a place no one expects.&lt;/p&gt;

&lt;p&gt;Until the system becomes something only its author can safely modify.&lt;/p&gt;




&lt;p&gt;That’s where red teaming comes in.&lt;/p&gt;

&lt;p&gt;Not as criticism.&lt;/p&gt;

&lt;p&gt;Not as bureaucracy.&lt;/p&gt;

&lt;p&gt;But as a deliberate practice:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Let’s try to break this before reality does.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;In practice, that often looks like questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happens under load?&lt;/li&gt;
&lt;li&gt;Are we introducing N+1 queries?&lt;/li&gt;
&lt;li&gt;How many queries does this page actually generate?&lt;/li&gt;
&lt;li&gt;Where are we relying on implicit behavior or “magic”?&lt;/li&gt;
&lt;li&gt;How long would it take a new engineer to understand this?&lt;/li&gt;
&lt;li&gt;What assumptions are we making that might not hold?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these questions are particularly difficult.&lt;/p&gt;

&lt;p&gt;But they’re easy to skip when you’re focused on getting something built.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;p&gt;That’s the trap.&lt;/p&gt;

&lt;p&gt;Because building is visible.&lt;/p&gt;

&lt;p&gt;Shipping is measurable.&lt;/p&gt;

&lt;p&gt;Thinking ahead… isn’t.&lt;/p&gt;




&lt;p&gt;And to be clear — this isn’t about slowing things down.&lt;/p&gt;

&lt;p&gt;It’s about avoiding the kind of complexity that slows you down later.&lt;/p&gt;




&lt;p&gt;I’ve found that some of the best engineering conversations happen when someone is willing to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I don’t think this breaks yet… but I think it will.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s not negativity.&lt;/p&gt;

&lt;p&gt;That’s experience.&lt;/p&gt;




&lt;p&gt;And this is where tools — including AI — can help.&lt;/p&gt;

&lt;p&gt;Not as decision-makers, but as pressure testers.&lt;/p&gt;

&lt;p&gt;A quick way to ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“What am I missing?”&lt;/li&gt;
&lt;li&gt;“Where does this fall apart?”&lt;/li&gt;
&lt;li&gt;“What assumptions am I making?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But just like anything else, that only works if you’re willing to question the answers you get back.&lt;/p&gt;




&lt;p&gt;Because at the end of the day, red teaming isn’t about tools.&lt;/p&gt;

&lt;p&gt;It’s about mindset.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Good engineers build systems that work.&lt;/p&gt;

&lt;p&gt;Great engineers build systems that survive scrutiny.&lt;/p&gt;




&lt;p&gt;If there’s one thing I’ve learned, it’s this:&lt;/p&gt;

&lt;p&gt;Most of the issues that hurt the most later…&lt;/p&gt;

&lt;p&gt;were visible earlier.&lt;/p&gt;

&lt;p&gt;We just didn’t ask the right questions.&lt;/p&gt;

&lt;p&gt;Or we didn’t ask them soon enough.&lt;/p&gt;




&lt;p&gt;Red teaming isn’t about catching everything.&lt;/p&gt;

&lt;p&gt;It’s about catching enough early that the system stays understandable, maintainable, and resilient over time.&lt;/p&gt;

&lt;p&gt;Because systems don’t break all at once. They erode. Quietly. Until one day, they’re too complex to safely change. And by then, it’s already expensive.&lt;/p&gt;

&lt;p&gt;So ask the questions.&lt;/p&gt;

&lt;p&gt;Invite the pushback.&lt;/p&gt;

&lt;p&gt;Pressure-test the design.&lt;/p&gt;

&lt;p&gt;Before reality does it for you.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>design</category>
      <category>discuss</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>🌳 Watering the Bonsais</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Tue, 14 Apr 2026 14:30:00 +0000</pubDate>
      <link>https://dev.to/druid628/watering-the-bonsais-232g</link>
      <guid>https://dev.to/druid628/watering-the-bonsais-232g</guid>
      <description>&lt;p&gt;There was a point in my career where I had a dozen open pull requests.&lt;/p&gt;

&lt;p&gt;Not half-finished experiments.&lt;br&gt;
Not “I’ll get back to this later” work.&lt;/p&gt;

&lt;p&gt;Twelve branches.&lt;br&gt;
Each one solved a real problem.&lt;br&gt;
Each one was implemented, tested, and ready for the next step—code review, QA, or in some cases just validation.&lt;/p&gt;

&lt;p&gt;They just… weren’t a priority.&lt;/p&gt;

&lt;p&gt;One of them stands out.&lt;/p&gt;

&lt;p&gt;It was one of those problems everyone agreed needed to be fixed.&lt;br&gt;
The kind that shows up in conversations, gets a few nods, and then quietly gets pushed to “later” because it’s assumed to be expensive.&lt;/p&gt;

&lt;p&gt;“Probably a week of work.”&lt;br&gt;
“Maybe more.”&lt;br&gt;
“Let’s not disrupt the sprint.”&lt;/p&gt;

&lt;p&gt;One Friday afternoon, I had a few hours between tasks—too late to pick up anything substantial, too early to call it a day.&lt;/p&gt;

&lt;p&gt;So I took a swing at it.&lt;/p&gt;

&lt;p&gt;Four hours later, it was done. Tested. Ready for review.&lt;/p&gt;

&lt;p&gt;Not a week. Not a sprint.&lt;/p&gt;

&lt;p&gt;Four hours.&lt;/p&gt;

&lt;p&gt;And then it joined the others.&lt;/p&gt;

&lt;p&gt;Waiting.&lt;/p&gt;




&lt;p&gt;So once a month, usually on the first, I’d go through and rebase them all.&lt;/p&gt;

&lt;p&gt;Resolve conflicts.&lt;br&gt;
Update dependencies.&lt;br&gt;
Make sure nothing drifted too far from reality.&lt;/p&gt;

&lt;p&gt;I started calling it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watering the bonsais.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  What is a “bonsai branch”?
&lt;/h3&gt;

&lt;p&gt;A bonsai branch is work that is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fully (or nearly fully) implemented&lt;/li&gt;
&lt;li&gt;Solves a real, known problem&lt;/li&gt;
&lt;li&gt;But is blocked by prioritization, validation, or timing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not dead code.&lt;br&gt;
It’s not abandoned.&lt;/p&gt;

&lt;p&gt;It’s &lt;strong&gt;maintained, deferred value&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  The part most teams don’t see
&lt;/h3&gt;

&lt;p&gt;From the outside, these branches look like:&lt;/p&gt;

&lt;p&gt;“Engineering started something and didn’t finish.”&lt;/p&gt;

&lt;p&gt;From the inside, it looks more like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The problem was identified&lt;/li&gt;
&lt;li&gt;The solution was designed&lt;/li&gt;
&lt;li&gt;The work was implemented and tested&lt;/li&gt;
&lt;li&gt;And then… it waited&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not because it wasn’t useful.&lt;/p&gt;

&lt;p&gt;Because something else was more urgent.&lt;/p&gt;




&lt;h3&gt;
  
  
  The hidden cost
&lt;/h3&gt;

&lt;p&gt;Bonsais aren’t free.&lt;/p&gt;

&lt;p&gt;Every time you keep one alive, you’re paying for it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rebase time&lt;/li&gt;
&lt;li&gt;Merge conflict resolution&lt;/li&gt;
&lt;li&gt;Context switching (“what did this fix again?”)&lt;/li&gt;
&lt;li&gt;Mental overhead of tracking what’s “almost done”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’re maintaining a solution that isn’t delivering value yet.&lt;/p&gt;

&lt;p&gt;And if you don’t maintain it?&lt;/p&gt;

&lt;p&gt;It dies.&lt;/p&gt;

&lt;p&gt;And when it dies, that work doesn’t just pause—it resets.&lt;/p&gt;




&lt;h3&gt;
  
  
  The hidden value
&lt;/h3&gt;

&lt;p&gt;Here’s the part that matters:&lt;/p&gt;

&lt;p&gt;A bonsai branch is &lt;strong&gt;already paid for&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The risk is mostly burned down.&lt;br&gt;
The unknowns have been explored.&lt;br&gt;
The implementation exists.&lt;/p&gt;

&lt;p&gt;When you finally prioritize it, you’re not starting from zero.&lt;/p&gt;

&lt;p&gt;You’re starting from:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;almost done.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  The tension
&lt;/h3&gt;

&lt;p&gt;Good engineers tend to move faster than prioritization cycles.&lt;/p&gt;

&lt;p&gt;They see a problem, they solve it, and they move on.&lt;/p&gt;

&lt;p&gt;Organizations don’t always move that way.&lt;/p&gt;

&lt;p&gt;They have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;competing priorities&lt;/li&gt;
&lt;li&gt;validation cycles&lt;/li&gt;
&lt;li&gt;timing constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So you end up with this strange middle ground:&lt;/p&gt;

&lt;p&gt;Work that is finished… but not allowed to be done.&lt;/p&gt;




&lt;h3&gt;
  
  
  For engineers
&lt;/h3&gt;

&lt;p&gt;If you’ve got bonsais, be intentional about them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep them alive if they matter&lt;/li&gt;
&lt;li&gt;Document what they solve&lt;/li&gt;
&lt;li&gt;Don’t let them sprawl endlessly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And maybe most importantly:&lt;/p&gt;

&lt;p&gt;Don’t confuse “not prioritized” with “not valuable.”&lt;/p&gt;

&lt;p&gt;Those are not the same thing.&lt;/p&gt;




&lt;h3&gt;
  
  
  For product and business
&lt;/h3&gt;

&lt;p&gt;You might be sitting on solutions you’ve already paid for.&lt;/p&gt;

&lt;p&gt;Ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What’s been built but not shipped?&lt;/li&gt;
&lt;li&gt;What’s been deferred but maintained?&lt;/li&gt;
&lt;li&gt;What could be delivered quickly because the work is already done?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because sometimes the fastest way forward isn’t a new initiative.&lt;/p&gt;

&lt;p&gt;It’s revisiting something that’s already been solved.&lt;/p&gt;




&lt;h3&gt;
  
  
  Closing
&lt;/h3&gt;

&lt;p&gt;Some teams let these branches rot.&lt;/p&gt;

&lt;p&gt;Others quietly maintain them—keeping them ready for the moment they’re needed.&lt;/p&gt;

&lt;p&gt;Not everything grows in the open.&lt;/p&gt;

&lt;p&gt;Some things are shaped, maintained, and patiently kept alive.&lt;/p&gt;

&lt;p&gt;Waiting for the right time.&lt;/p&gt;

&lt;p&gt;Sometimes the most valuable work in your system&lt;br&gt;
is the work that’s just been… waiting.&lt;/p&gt;

</description>
      <category>techculture</category>
      <category>productdevelopment</category>
      <category>leadership</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>array_map Is Not A Design Pattern</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Tue, 07 Apr 2026 11:18:00 +0000</pubDate>
      <link>https://dev.to/druid628/arraymap-is-not-a-design-pattern-43j9</link>
      <guid>https://dev.to/druid628/arraymap-is-not-a-design-pattern-43j9</guid>
      <description>&lt;h2&gt;
  
  
  The Moment It Clicked
&lt;/h2&gt;

&lt;p&gt;“Damn it Doug! array_map is not a design pattern!”&lt;/p&gt;

&lt;p&gt;I will never forget hearing that yelled across the office during a code review.&lt;/p&gt;

&lt;p&gt;And to this day, every time I run across code that’s trying a little too hard to be clever, that line pops back into my head.&lt;/p&gt;

&lt;h2&gt;
  
  
  How We Get There
&lt;/h2&gt;

&lt;p&gt;Doug was a smart engineer. Seriously smart.&lt;/p&gt;

&lt;p&gt;But he had a habit I’ve seen in a lot of really sharp developers — myself included, if I’m being honest. He’d find a tool, a pattern, or a concept he liked…&lt;/p&gt;

&lt;p&gt;…and then use it everywhere.&lt;/p&gt;

&lt;p&gt;At some point, that turned into what we started calling — half joking, half traumatized —&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The array_map design pattern&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Which, to be clear, is not a thing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem in Practice
&lt;/h2&gt;

&lt;p&gt;I remember reviewing a piece of code from his team where it was literally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an &lt;code&gt;array_map&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;inside an &lt;code&gt;array_map&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;calling another &lt;code&gt;array_map&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;returning an &lt;code&gt;array_map&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And I’m not exaggerating.&lt;/p&gt;

&lt;p&gt;It &lt;em&gt;worked&lt;/em&gt; and was technically correct. It was also an absolute nightmare to read, debug, and maintain.&lt;/p&gt;




&lt;h2&gt;
  
  
  Clever vs Clear
&lt;/h2&gt;

&lt;p&gt;And that’s the part that matters. Because this isn’t really about array_map. It’s about what happens when we start optimizing for cleverness instead of clarity.&lt;/p&gt;

&lt;p&gt;I’ve been guilty of this too -- writing code that made me feel smart, code that looked elegant. Expressive. Maybe even impressive in a code review.&lt;/p&gt;

&lt;p&gt;And then six months later, someone else is digging through it trying to fix a bug, wondering what in the world I was thinking.&lt;/p&gt;

&lt;p&gt;Sometimes that “someone else” was me.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Issue
&lt;/h2&gt;

&lt;p&gt;The problem isn’t the tool or the technique. It’s how and when we choose to apply it.&lt;/p&gt;

&lt;p&gt;The problem is forgetting that code has a second life:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;being read, understood, and maintained by someone else.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most systems don’t fail because they weren’t clever enough. They fail because no one can understand them anymore.&lt;/p&gt;




&lt;h2&gt;
  
  
  Complexity vs Control
&lt;/h2&gt;

&lt;p&gt;Now, to be fair — I’m not a fan of nested loops either.&lt;/p&gt;

&lt;p&gt;If I can avoid them, I will.&lt;/p&gt;

&lt;p&gt;I’ll happily spend extra time structuring data, reshaping inputs, or breaking problems apart so I don’t have to stack loops on loops.&lt;/p&gt;

&lt;p&gt;That’s not about performance as much as it is about clarity and control. But there’s a difference between avoiding complexity…&lt;/p&gt;

&lt;p&gt;…and hiding it behind layers of abstraction that make things harder to follow.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Good Looks Like
&lt;/h2&gt;

&lt;p&gt;Sometimes the right solution isn’t the most clever one. It’s the one that makes the intent obvious.&lt;/p&gt;

&lt;p&gt;Something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$items&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$result&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$item&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s not fancy, nor is is going to win you any style points.  But anyone who reads it knows exactly what it’s doing.&lt;/p&gt;

&lt;p&gt;And more importantly — they can change it without fear.&lt;/p&gt;

&lt;p&gt;That’s the real goal. Not just writing code that works. Writing code that survives.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing Thought
&lt;/h2&gt;

&lt;p&gt;Just because a tool exists doesn’t mean it should drive the design. Just because something is expressive doesn’t mean it’s appropriate. And just because it feels clever…&lt;/p&gt;

&lt;p&gt;doesn’t mean it’s a good idea.&lt;/p&gt;

&lt;p&gt;“&lt;code&gt;array_map&lt;/code&gt; is not a design pattern.”&lt;/p&gt;

&lt;p&gt;It’s a tool.&lt;/p&gt;

&lt;p&gt;Use it when it makes things clearer.  Put it down when it doesn’t.&lt;/p&gt;

&lt;p&gt;Cross-posted: &lt;a href="https://www.linkedin.com/pulse/arraymap-design-pattern-micah-breedlove-k1ube" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | Medium&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>codequality</category>
    </item>
    <item>
      <title>AI Didn’t Make Me Faster. It Made Me Think Better.</title>
      <dc:creator>Micah Breedlove (druid628)</dc:creator>
      <pubDate>Thu, 02 Apr 2026 11:30:18 +0000</pubDate>
      <link>https://dev.to/druid628/ai-didnt-make-me-faster-it-made-me-think-better-4022</link>
      <guid>https://dev.to/druid628/ai-didnt-make-me-faster-it-made-me-think-better-4022</guid>
      <description>&lt;p&gt;I wrote recently about &lt;a href="https://dev.to/druid628/the-balsam-of-fierabras-and-the-promise-of-ai-22o5"&gt;some concerns&lt;/a&gt; I have with how our industry is starting to treat AI.&lt;/p&gt;

&lt;p&gt;This isn’t that.&lt;/p&gt;

&lt;p&gt;Because the truth is, AI has also made me better at what I do. Not faster. Not necessarily more productive in the way people like to measure it.&lt;/p&gt;

&lt;p&gt;Better.&lt;/p&gt;

&lt;p&gt;And the more I’ve thought about it, the closest analogy I’ve found isn’t in software at all. It’s in the forge.&lt;/p&gt;

&lt;p&gt;When I was learning blacksmithing, I wasn’t just being shown how to hit steel. I was learning how to think about it.&lt;/p&gt;

&lt;p&gt;How heat changes behavior. How structure forms over time. How small decisions early on show up later in ways you can’t undo. And more than anything, I learned by asking questions. Not just "how do I do this?" But "what would happen if I did it this way instead?"&lt;/p&gt;

&lt;p&gt;Sometimes the answer came from the person teaching me.&lt;/p&gt;

&lt;p&gt;Sometimes the answer came from trying it and seeing what happened.&lt;/p&gt;

&lt;p&gt;But the learning came from having a place where those questions could exist.&lt;/p&gt;

&lt;p&gt;Most of my career has been spent in backend engineering — working in ecosystems like Symfony, .NET, Spring. Environments where structure matters, where decisions compound, and where “we’ll fix it later” usually turns into “we’re still dealing with this six months from now.”&lt;/p&gt;

&lt;p&gt;A lot of the real work in that world isn’t typing code.&lt;/p&gt;

&lt;p&gt;It’s thinking.&lt;/p&gt;

&lt;p&gt;It’s weighing trade-offs. It’s deciding which problems you’re solving today and which ones you’re intentionally leaving for later.&lt;/p&gt;

&lt;p&gt;And historically, that kind of thinking has been… a little isolated.&lt;/p&gt;

&lt;p&gt;You either grab time with another senior engineer, or you just sit with it yourself.&lt;/p&gt;

&lt;p&gt;AI changed that for me.&lt;/p&gt;

&lt;p&gt;The best way I can describe it is this:&lt;/p&gt;

&lt;p&gt;AI hasn’t felt like a replacement. It’s felt like something closer to an apprenticeship mirror.&lt;/p&gt;

&lt;p&gt;A way to throw ideas out and see them reflected back — sometimes clearly, sometimes distorted — but almost always enough to make you stop and think.&lt;/p&gt;

&lt;p&gt;There’s something incredibly valuable about being able to just… nerd out over a design.&lt;/p&gt;

&lt;p&gt;No meeting. No calendar. No worrying about whether you’re taking up someone’s time.&lt;/p&gt;

&lt;p&gt;Just throwing ideas out there:&lt;/p&gt;

&lt;p&gt;"What if I structure it this way?" "What happens if this scales?" "Is this clever, or is this going to bite me later?"&lt;/p&gt;

&lt;p&gt;And getting something back that isn’t trying to impress you — just trying to be useful.&lt;/p&gt;

&lt;p&gt;It’s not just solutions, either.&lt;/p&gt;

&lt;p&gt;Some of the most useful conversations I’ve had haven’t been about solving a specific problem at all. They’ve been about exploring different approaches, frameworks, and even languages.&lt;/p&gt;

&lt;p&gt;Just nerd-talking through things.&lt;/p&gt;

&lt;p&gt;Comparing trade-offs. Challenging assumptions. Asking "why not this?" instead of defaulting to "this is how I’ve always done it."&lt;/p&gt;

&lt;p&gt;That’s led to something I didn’t expect.&lt;/p&gt;

&lt;p&gt;Honestly, some of my favorite conversations I’ve had with AI have been around those exact moments — revisiting ideas, technologies, or approaches I had already written off.&lt;/p&gt;

&lt;p&gt;It’s made me more willing to reconsider tools and approaches I might have dismissed in the past.&lt;/p&gt;

&lt;p&gt;Not because AI told me I was wrong — but because it gave me a space to actually think through those decisions instead of relying on instinct or habit.&lt;/p&gt;

&lt;p&gt;There’s another angle to this that I didn’t expect.&lt;/p&gt;

&lt;p&gt;In the past, when I was working through a design or a tricky decision, the best thing you could do was grab another engineer — or a couple of them — and effectively red team it.&lt;/p&gt;

&lt;p&gt;"Alright, poke holes in this."&lt;/p&gt;

&lt;p&gt;And if you had good people around you, that was incredibly valuable.&lt;/p&gt;

&lt;p&gt;The problem is, time is expensive.&lt;/p&gt;

&lt;p&gt;Everyone’s busy. Calendars are full. And pulling someone into that kind of deep, focused thinking isn’t always easy.&lt;/p&gt;

&lt;p&gt;What I’ve found is that AI fills that gap surprisingly well.&lt;/p&gt;

&lt;p&gt;Not as a replacement for good engineers — but as a low-friction way to pressure-test your thinking. You can throw an idea out there and say:&lt;/p&gt;

&lt;p&gt;What am I missing?&lt;/p&gt;

&lt;p&gt;Where does this break?&lt;/p&gt;

&lt;p&gt;What happens if this assumption isn’t true?&lt;/p&gt;

&lt;p&gt;And you’ll get something back that isn’t trying to be clever. It’s not trying to win the argument. It’s just trying to work through the problem.&lt;/p&gt;

&lt;p&gt;It’s not perfect. It won’t catch everything.&lt;/p&gt;

&lt;p&gt;But it’s fast. It’s available. And it’s often enough to surface the kinds of questions you should be asking anyway.&lt;/p&gt;

&lt;p&gt;One thing I’ve come to appreciate is how often the best answer isn’t the most clever one. It’s the one that’s easiest to understand six months from now.&lt;/p&gt;

&lt;p&gt;More than once, I’ve ended up in a conversation where the feedback essentially boils down to:&lt;/p&gt;

&lt;p&gt;Future you is going to hate current you in six months if you do this.&lt;/p&gt;

&lt;p&gt;And it’s usually right.&lt;/p&gt;

&lt;p&gt;That’s the part that’s been the most valuable. Not the answers. The feedback loop.&lt;/p&gt;

&lt;p&gt;Sometimes the best part of using AI isn’t the answer it gives you — it’s the question it makes you ask. Or the hesitation it introduces.  Or the moment where you stop and think:&lt;/p&gt;

&lt;p&gt;"Why am I doing it this way?"&lt;/p&gt;

&lt;p&gt;That kind of interruption in your own thinking is hard to come by when you’re working alone.&lt;/p&gt;

&lt;p&gt;None of this replaces experience.&lt;/p&gt;

&lt;p&gt;If anything, it makes experience more valuable.&lt;/p&gt;

&lt;p&gt;Because the better your understanding is, the better you can evaluate the feedback you’re getting. The better you can separate useful pushback from noise. The better you can recognize when something is technically correct… but practically wrong.&lt;/p&gt;

&lt;p&gt;And sometimes, just wrong.&lt;/p&gt;

&lt;p&gt;That’s something I think is important — especially for engineers coming up behind me.&lt;/p&gt;

&lt;p&gt;It’s okay to push back on AI. It’s not always right.&lt;/p&gt;

&lt;p&gt;AI is useful — but only if you stay in charge of the thinking.&lt;/p&gt;

&lt;p&gt;I ran into this just yesterday. I moved a conversation into a new chat, and in doing that, a lot of the context got lost. The suggestions I got back were clean. Reasonable. Technically sound.&lt;/p&gt;

&lt;p&gt;But they were based on assumptions that weren’t true anymore. If I had just taken that answer and run with it — no pushback, no clarification — it would have worked just well enough to get through the moment…&lt;/p&gt;

&lt;p&gt;…and then turned into an absolute nightmare a year or two down the road.&lt;/p&gt;

&lt;p&gt;It only got better once I pushed back.&lt;/p&gt;

&lt;p&gt;That won’t work here because…&lt;/p&gt;

&lt;p&gt;You’re missing this constraint…&lt;/p&gt;

&lt;p&gt;This part of the system behaves differently…&lt;/p&gt;

&lt;p&gt;And once the context was corrected, the answer changed. That’s the difference. The value isn’t in getting an answer.&lt;/p&gt;

&lt;p&gt;It’s in being able to challenge it.&lt;/p&gt;

&lt;p&gt;Back at the forge, the person teaching me didn’t just give answers. They gave me space to ask better questions.  To try things. To think things through. To understand not just what worked — but why.&lt;/p&gt;

&lt;p&gt;That’s what this feels like.&lt;/p&gt;

&lt;p&gt;I still think there’s real risk in how our industry is starting to position AI. I still think we need to be careful about what we think it is. But at a personal level, the impact has been hard to ignore.&lt;/p&gt;

&lt;p&gt;AI hasn’t replaced my thinking.&lt;/p&gt;

&lt;p&gt;It’s made me more deliberate about it.&lt;/p&gt;

&lt;p&gt;It’s made me question decisions a little more.&lt;/p&gt;

&lt;p&gt;It’s made me a little less attached to being “right” and a little more focused on getting it right. And in a field where small decisions compound over time…&lt;/p&gt;

&lt;p&gt;That might be the most valuable thing it can do.&lt;/p&gt;

&lt;p&gt;In the forge, iron sharpens iron. We make better tools through pressure, repetition, and refinement. I think there’s something similar happening here.&lt;/p&gt;

&lt;p&gt;We can make AI better by how we use it. But we have to be just as intentional about letting it make us better in return. Because at the end of the day, the tool doesn’t define the craft.&lt;/p&gt;

&lt;p&gt;The craftsman always has.&lt;/p&gt;

&lt;p&gt;Crossposted: &lt;a href="https://www.linkedin.com/pulse/ai-didnt-make-me-faster-made-think-better-micah-breedlove-hubfe/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://medium.com/@druid628/ai-didnt-make-me-faster-it-made-me-think-better-326d6e16a0e0" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
