<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>#Architecture — Seconds to Midnight</title><description>Content tagged with #Architecture.</description><link>https://dbuho.me</link><language>en</language><copyright>© 2026 Damián Búho</copyright><managingEditor>damian.buho@proton.me (Damián Búho)</managingEditor><webMaster>damian.buho@proton.me (Damián Búho)</webMaster><lastBuildDate>Thu, 12 Nov 2026 16:25:24 GMT</lastBuildDate><category>Resilience</category><ttl>60</ttl><image><url>https://dbuho.me/favicon-48x48.png</url><title>#Architecture — Seconds to Midnight</title><link>https://dbuho.me</link></image><atom:link rel="self" type="application/rss+xml" href="https://dbuho.me/tags/architecture.rss"/><item><title>Post: Unfeature Request: feature creep is the new code smell</title><link>https://dbuho.me/post/unfeature-request/?utm_source=tag-architecture&amp;utm_medium=rss</link><guid isPermaLink="false">01M3DBTSRD9PXWT45MSZS2E5NH</guid><description>I believe we can add a new item to the list of &amp;quot;code smells / project smells&amp;quot;: Too many features Most modern vibe-coded agent-engineered CLI tools have 20, 30, or 40 verbs and internal commands in their TUI. Often, these feature duplicate or overlap existing functionality. They include things that could just be a flag on an existing command, things that could be hidden three keypresses away because 1% of users use them 1% of the time, or features that should never have been built in the first place because you could achieve the same result with Unix pipes and a smart use of core tools.</description><pubDate>Tue, 02 Jun 2026 02:59:00 GMT</pubDate><content:encoded>&lt;p&gt;I believe we can add a new item to the list of &amp;quot;code smells / project smells&amp;quot;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Too many features&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most modern &lt;del&gt;vibe-coded&lt;/del&gt; agent-engineered CLI tools have 20, 30, or 40 verbs and internal commands in their TUI.
Often, these feature duplicate or overlap existing functionality. They include things that could just be a flag on an existing command, things that could be hidden three keypresses away because 1% of users use them 1% of the time, or features that should never have been built in the first place because you could achieve the same result with Unix pipes and a smart use of core tools.&lt;/p&gt;
&lt;h2&gt;Why is it a problem?&lt;/h2&gt;
&lt;h3&gt;Cognitive overload&lt;/h3&gt;
&lt;p&gt;If you are making a tool for real humans, you should consider human nature: a short memory and a limited attention span.
Humans get tired and bored. Well-established UI principles still hold true: give users fewer options to make choices easier, guide them, keep the learning curve in mind, and treat their attention as a limited resource.&lt;/p&gt;
&lt;p&gt;Of course, you can also build a tool intended solely for agents. If you&amp;#39;re honest about that goal, why not?
Translate your help output to Claudespeak, drop all the formatting, and they will be happy.
Just don&amp;#39;t leave your tool stuck in an intermediate state where it is disrespectfully terse and confusing to a human user, yet not structured enough for a clanker.&lt;/p&gt;
&lt;h3&gt;The illusion of power&lt;/h3&gt;
&lt;p&gt;You may think an intimidating list of two dozen commands makes your tool look sophisticated and professional.
Yet the tools that truly make the world go round usually follow the &lt;a href=&quot;https://en.wikipedia.org/wiki/Unix_philosophy&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Unix Way&lt;/a&gt;. Look at anything from &lt;code&gt;cp&lt;/code&gt; to &lt;code&gt;make&lt;/code&gt; for reference.&lt;/p&gt;
&lt;h3&gt;Less code, please&lt;/h3&gt;
&lt;p&gt;More code means a bigger attack surface and more things to cover with tests (and let&amp;#39;s be honest, even with cheap LLM-generated tests, people still forget or don&amp;#39;t care enough to maintain them).
In other words: more moving parts to pay attention to, and more things that can go wrong.&lt;/p&gt;
&lt;h2&gt;What to do instead&lt;/h2&gt;
&lt;h3&gt;Split&lt;/h3&gt;
&lt;p&gt;A pair of smaller, focused tools will almost always be better than one monolithic beast. If you need them to work together, use pipes, the filesystem, or even gRPC.&lt;/p&gt;
&lt;h3&gt;Sometimes documentation is the feature&lt;/h3&gt;
&lt;p&gt;If your tool benefits from being piped through &lt;code&gt;grep&lt;/code&gt;, &lt;a href=&quot;https://github.com/burntsushi/ripgrep&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;rg&lt;/a&gt;, &lt;a href=&quot;https://github.com/mikefarah/yq&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;yq&lt;/a&gt;, &lt;a href=&quot;https://jqlang.org&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;jq&lt;/a&gt;, or &lt;a href=&quot;https://github.com/tomwright/dasel&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;dasel&lt;/a&gt;, just tell the user how to do it in the docs.&lt;/p&gt;
&lt;h3&gt;The &amp;quot;unfeature&amp;quot; request&lt;/h3&gt;
&lt;p&gt;Ask yourself: &lt;em&gt;What can I delete from my project today?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;What will never be used? What lowers my signal-to-noise ratio? What could be done with the help of another tool? (Yes, you will have to set your ego aside.) Maybe when you originally built a feature, a better external solution didn&amp;#39;t exist, but it&amp;#39;s here now.&lt;/p&gt;
&lt;p&gt;Start depending on it (with proper precautions). An interlinked ecosystem of focused projects is much healthier than a dozen egotistical developers trying to reinvent the wheel from scratch for 2.5 users.
You won&amp;#39;t become the next Daniel Stenberg or Fabrice Bellard anyway.&lt;/p&gt;
&lt;p&gt;I recommend asking yourself this question weekly. Ask your audience, too.
If nobody cries about a feature being removed, neither should you.&lt;/p&gt;
&lt;p&gt;Almost every discussion about &amp;quot;taste&amp;quot; in software development touches on the mantra of &amp;quot;knowing what not to build.&amp;quot;&lt;/p&gt;
&lt;p&gt;But once you&amp;#39;ve already failed with that, the right move is learning how to cut.&lt;/p&gt;</content:encoded><category>Architecture</category><category>Agents</category><category>LLM</category><category>Practices</category><author>damian.buho@proton.me (Damián Búho)</author></item></channel></rss>