<?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: Dmitry Amelchenko</title>
    <description>The latest articles on DEV Community by Dmitry Amelchenko (@dmitryame).</description>
    <link>https://dev.to/dmitryame</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%2F138260%2Feadc6287-2299-4820-b1a5-0fb62e829db0.png</url>
      <title>DEV Community: Dmitry Amelchenko</title>
      <link>https://dev.to/dmitryame</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dmitryame"/>
    <language>en</language>
    <item>
      <title>GenAI Changed the Cost of Coding. Why Are We Still Organizing Work the Same Way?</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Thu, 22 Oct 2026 19:01:06 +0000</pubDate>
      <link>https://dev.to/dmitryame/genai-changed-the-cost-of-coding-why-are-we-still-organizing-work-the-same-way-5bpj</link>
      <guid>https://dev.to/dmitryame/genai-changed-the-cost-of-coding-why-are-we-still-organizing-work-the-same-way-5bpj</guid>
      <description>&lt;h1&gt;
  
  
  GenAI Changed the Cost of Coding. Why Are We Still Organizing Work the Same Way?
&lt;/h1&gt;

&lt;p&gt;Everyone is talking about BMAD. Agents. Specifications. How much code they can generate.&lt;/p&gt;

&lt;p&gt;Okay. Cool.&lt;/p&gt;

&lt;p&gt;But what does that actually change?&lt;/p&gt;

&lt;p&gt;If we use these tools to produce more code while keeping the same organizational structure, the same handoffs, and the same feedback cycles, we are missing the more interesting opportunity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GenAI changes the economics of implementation. Our way of working should change with it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is where I think this is going. Some of it is practical today. Some of it is a prediction. And some of it probably deserves an argument.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bottleneck is moving
&lt;/h2&gt;

&lt;p&gt;The traditional squad structure made sense under a particular constraint.&lt;/p&gt;

&lt;p&gt;One Product Owner. Five to ten developers.&lt;/p&gt;

&lt;p&gt;The PO figured out what needed to happen. Developers spent the next sprint or several sprints implementing it. Development was expensive, so we invested heavily in planning before committing to execution.&lt;/p&gt;

&lt;p&gt;Now implementation is becoming cheaper.&lt;/p&gt;

&lt;p&gt;Not free. Not automatically correct. Certainly not free of integration, security, or operational problems.&lt;/p&gt;

&lt;p&gt;But cheap enough that we need to reconsider the balance.&lt;/p&gt;

&lt;p&gt;The question is shifting from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can we build this?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Should we build this?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the best way to answer the second question is often to build a small version, put it in front of users, and see what happens.&lt;/p&gt;

&lt;p&gt;This is hardly a new idea. It is a core Agile principle.&lt;/p&gt;

&lt;p&gt;What is new is how quickly we can act on it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The constraint increasingly becomes our ability to make good decisions and validate them, rather than our ability to turn a decision into code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So why would the ratio between business and engineering remain unchanged?&lt;/p&gt;

&lt;h2&gt;
  
  
  One PO. One engineer. Working on the same problem.
&lt;/h2&gt;

&lt;p&gt;Here is the model I would like to see more teams try:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Product Owner working directly with one engineer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not a PO writing stories for ten developers. Not an engineer receiving requirements over the wall.&lt;/p&gt;

&lt;p&gt;Two people working on the same concept, with agents supporting the implementation.&lt;/p&gt;

&lt;p&gt;The PO brings business context, customer understanding, and product judgment. The engineer brings architecture, technical constraints, and an understanding of what can be simplified.&lt;/p&gt;

&lt;p&gt;Neither person has to pretend to be the other.&lt;/p&gt;

&lt;p&gt;I do not think the typical future is one person doing the entire job. Some people can move comfortably across business and engineering. Most have deeper expertise on one side.&lt;/p&gt;

&lt;p&gt;That is fine. The point is to connect those strengths, not eliminate them.&lt;/p&gt;

&lt;p&gt;The conversation changes from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Write the requirements. We will show you the result at the end of the sprint.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this what you meant? What if we do it this way? Does that change the business outcome? Let's try it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a fundamentally different feedback loop.&lt;/p&gt;

&lt;p&gt;An engineer can challenge an unnecessary requirement while it is still an idea. A PO can correct a misunderstanding before it becomes a completed feature.&lt;/p&gt;

&lt;p&gt;You do not need to wait for the sprint review to discover that you built the wrong thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  BMAD is interesting because it connects the workflow
&lt;/h2&gt;

&lt;p&gt;BMAD is interesting to me because its ambition goes beyond code generation.&lt;/p&gt;

&lt;p&gt;It connects product exploration, requirements, architecture, epics, stories, implementation, and review.&lt;/p&gt;

&lt;p&gt;That matters because the business question and the engineering question should not live in separate universes.&lt;/p&gt;

&lt;p&gt;A tool that helps execute a specification is useful.&lt;/p&gt;

&lt;p&gt;A workflow that helps us question the specification, identify contradictions, and carry decisions through implementation is more consequential.&lt;/p&gt;

&lt;p&gt;It gives the PO and engineer a shared structure to work within.&lt;/p&gt;

&lt;p&gt;It does not make their judgment unnecessary. It makes their collaboration more valuable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automating the handoff is useful. Removing an unnecessary handoff is better.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A prototype that would previously have been hard to justify
&lt;/h2&gt;

&lt;p&gt;One experiment on my team illustrates why this matters.&lt;/p&gt;

&lt;p&gt;We have a complex workflow embedded in a mobile application through a WebView. From the mobile side, it behaves like a black box. The workflow reaches into multiple subsystems, while the application mostly hosts the experience.&lt;/p&gt;

&lt;p&gt;Replacing it with a native experience used to look like a substantial coordination problem.&lt;/p&gt;

&lt;p&gt;You would need to understand the existing implementation, trace dependencies across repositories, identify the available interfaces, and preserve the business behavior.&lt;/p&gt;

&lt;p&gt;Before writing much native code, you already had a discovery project.&lt;/p&gt;

&lt;p&gt;One engineer on the team is now exploring that replacement by bringing the relevant repositories into a shared workspace and using BMAD to help reason across them.&lt;/p&gt;

&lt;p&gt;This is a prototype, not a claim that the entire migration is finished.&lt;/p&gt;

&lt;p&gt;But the change in feasibility is already interesting.&lt;/p&gt;

&lt;p&gt;Something we previously struggled to justify as a larger engineering effort is now being explored by one person.&lt;/p&gt;

&lt;p&gt;And this particular experiment has a useful constraint: &lt;strong&gt;the business behavior should stay the same.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We are changing the implementation, not inventing new business rules.&lt;/p&gt;

&lt;p&gt;That does not remove the need for validation. It gives us a clearer target.&lt;/p&gt;

&lt;h2&gt;
  
  
  What if we stopped assuming every feature must live forever?
&lt;/h2&gt;

&lt;p&gt;There is another consequence of cheaper implementation that I find even more interesting.&lt;/p&gt;

&lt;p&gt;We might finally reconsider our habit of continuously adding to existing software.&lt;/p&gt;

&lt;p&gt;I remember a presentation from roughly 15 years ago, possibly at a Ruby on Rails conference. The speaker suggested something that sounded impractical:&lt;/p&gt;

&lt;p&gt;When you begin the next iteration, reconsider and rewrite what you built in the previous one instead of automatically building on top of it.&lt;/p&gt;

&lt;p&gt;You implemented login and registration. Now you understand the problem better. Before adding account settings, implement that foundation again using what you learned.&lt;/p&gt;

&lt;p&gt;People were skeptical. Understandably.&lt;/p&gt;

&lt;p&gt;Rewriting working software is expensive. Existing behavior is easy to miss. At some point, the product becomes too large for the idea to make sense.&lt;/p&gt;

&lt;p&gt;Those objections have not disappeared.&lt;/p&gt;

&lt;p&gt;But the economics are changing.&lt;/p&gt;

&lt;p&gt;What used to be obviously impractical may now deserve another look, at least within a well-defined boundary.&lt;/p&gt;

&lt;p&gt;Not the whole enterprise stack. Not every service before every release.&lt;/p&gt;

&lt;p&gt;A workflow. A module. A bounded part of the product.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;How do we attach another feature to this?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We could ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Knowing what we know now, what should this part of the product look like?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those are very different questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rewrite the implementation. Preserve the knowledge.
&lt;/h2&gt;

&lt;p&gt;There is an important distinction here.&lt;/p&gt;

&lt;p&gt;I am not suggesting that we throw away everything we learned and ask an agent to recreate production from a vague prompt.&lt;/p&gt;

&lt;p&gt;That would be a great way to rediscover old bugs.&lt;/p&gt;

&lt;p&gt;The valuable assets include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business rules.&lt;/li&gt;
&lt;li&gt;Explicit requirements.&lt;/li&gt;
&lt;li&gt;Architectural constraints.&lt;/li&gt;
&lt;li&gt;Tests that capture expected behavior.&lt;/li&gt;
&lt;li&gt;Knowledge of failures and edge cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The implementation is one expression of that knowledge.&lt;/p&gt;

&lt;p&gt;It does not have to be the permanent expression.&lt;/p&gt;

&lt;p&gt;If we can preserve the constraints and validate the behavior, we have more freedom to replace an implementation that no longer fits.&lt;/p&gt;

&lt;p&gt;We also have more freedom to remove things.&lt;/p&gt;

&lt;p&gt;Cheaper code generation can make feature bloat much worse. It becomes easy to add something and surprisingly difficult to explain why it should remain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The ability to build more should increase our discipline about what we keep.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Otherwise, we just generate a larger maintenance problem faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Community matters more than another internal framework
&lt;/h2&gt;

&lt;p&gt;Another part of this shift is where the workflows themselves come from.&lt;/p&gt;

&lt;p&gt;I would rather start with an active, community-driven framework than assume every organization needs to invent its own agent orchestration system.&lt;/p&gt;

&lt;p&gt;Internal experiments are useful. Specialized constraints are real.&lt;/p&gt;

&lt;p&gt;But maintaining a development framework is a separate product responsibility. Someone has to improve it, test it, adapt it to changing models, and learn from its failures.&lt;/p&gt;

&lt;p&gt;A community can create a useful feedback loop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People try the workflow.&lt;/li&gt;
&lt;li&gt;They expose weaknesses.&lt;/li&gt;
&lt;li&gt;Improvements become available to other users.&lt;/li&gt;
&lt;li&gt;Those users test it against different problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting opportunity is to contribute to that loop, then customize where the actual business constraints require it.&lt;/p&gt;

&lt;p&gt;We should spend less time proving that we can invent another framework and more time learning how to use these workflows effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is an experiment, not a new organizational religion
&lt;/h2&gt;

&lt;p&gt;Large organizations will not suddenly become collections of independent PO-engineer pairs.&lt;/p&gt;

&lt;p&gt;Shared platforms, backend dependencies, compliance, and coordinated releases still exist. Faster code generation does not make them disappear.&lt;/p&gt;

&lt;p&gt;But those constraints should tell us where to test the model, rather than become a reason never to test it.&lt;/p&gt;

&lt;p&gt;Pick a bounded workflow.&lt;/p&gt;

&lt;p&gt;Pair a PO with an engineer.&lt;/p&gt;

&lt;p&gt;Give them a structured agentic workflow and a short path to feedback.&lt;/p&gt;

&lt;p&gt;Then measure how long it takes to answer a useful question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did we build something worth keeping?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We can implement more quickly. We can reconsider implementations that once felt too expensive to replace. We can bring business and engineering into the same working conversation.&lt;/p&gt;

&lt;p&gt;But only if we change how we work.&lt;/p&gt;

&lt;p&gt;Otherwise, we have taken a fundamentally different capability and used it to make the old conveyor belt run faster.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>agile</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Inside My llama.cpp Setup: Tuning Qwen 3.8 27B for 512K Context</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Sat, 03 Oct 2026 01:28:14 +0000</pubDate>
      <link>https://dev.to/dmitryame/inside-my-llamacpp-setup-tuning-qwen-38-27b-for-512k-context-o3c</link>
      <guid>https://dev.to/dmitryame/inside-my-llamacpp-setup-tuning-qwen-38-27b-for-512k-context-o3c</guid>
      <description>&lt;h1&gt;
  
  
  Understanding My llama.cpp Qwen 3.8 Configuration
&lt;/h1&gt;

&lt;p&gt;I've been tuning &lt;code&gt;llama.cpp&lt;/code&gt; for local AI development, and the command line can quickly become a collection of cryptic flags.&lt;/p&gt;

&lt;p&gt;Here's what my current configuration does, parameter by parameter.&lt;br&gt;
I'm specifically focusing on maxing out the utilization of my system (which is MBP M5 with 128 GB Unified RAM), for multi-agent coding which requires parallel agents execution.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;llama serve &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-hf&lt;/span&gt; unsloth/Qwen3.8-27B-GGUF:UD-Q4_K_XL &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--spec-type&lt;/span&gt; draft-mtp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--spec-default&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--spec-draft-n-max&lt;/span&gt; 8 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-ngl&lt;/span&gt; 99 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-c&lt;/span&gt; 524288 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--override-kv&lt;/span&gt; qwen2.context_length&lt;span class="o"&gt;=&lt;/span&gt;int:524288 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--rope-scaling&lt;/span&gt; yarn &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--yarn-orig-ctx&lt;/span&gt; 262144 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-b&lt;/span&gt; 16384 &lt;span class="nt"&gt;-ub&lt;/span&gt; 4096 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-t&lt;/span&gt; 16 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-tb&lt;/span&gt; 16 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-np&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-fa&lt;/span&gt; on &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--cache-type-k&lt;/span&gt; f16 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--cache-type-v&lt;/span&gt; f16 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--kv-offload&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--load-mode&lt;/span&gt; none &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--host&lt;/span&gt; 127.0.0.1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The easiest way to understand it is to divide the configuration into several areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model&lt;/li&gt;
&lt;li&gt;Speculative decoding&lt;/li&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;li&gt;GPU&lt;/li&gt;
&lt;li&gt;Batching&lt;/li&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;KV cache&lt;/li&gt;
&lt;li&gt;Server configuration&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Model
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-hf&lt;/span&gt; unsloth/Qwen3.8-27B-GGUF:UD-Q4_K_XL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells &lt;code&gt;llama.cpp&lt;/code&gt; to download and load the model from Hugging Face.&lt;/p&gt;

&lt;p&gt;Breaking it down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;unsloth/&lt;/code&gt; — Hugging Face repository owner&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Qwen3.8-27B&lt;/code&gt; — approximately 27 billion parameters&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GGUF&lt;/code&gt; — the model format used by &lt;code&gt;llama.cpp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;UD-Q4_K_XL&lt;/code&gt; — the quantization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;Q4&lt;/code&gt; means the model weights are approximately 4-bit quantized.&lt;/p&gt;

&lt;p&gt;The trade-off is straightforward: lower precision produces a much smaller model and significantly reduces memory requirements, at some cost to numerical precision.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Speculative decoding / MTP
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--spec-type&lt;/span&gt; draft-mtp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This enables speculative decoding using &lt;strong&gt;MTP (Multi-Token Prediction)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of having the main model generate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;token → token → token → token
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the system uses a draft mechanism to propose multiple future tokens, which the main model then verifies.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 Draft model
                      │
                      ▼
              token token token
                      │
                      ▼
                Main model
                  verifies
                      │
                      ▼
             accept several tokens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When several proposed tokens are accepted, generation can become substantially faster.&lt;/p&gt;

&lt;p&gt;For this model, speculative decoding is one of the most important performance-related settings.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. &lt;code&gt;--spec-default&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--spec-default&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This enables the default speculative-decoding configuration associated with the selected speculation type.&lt;/p&gt;

&lt;p&gt;In this case:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;draft-mtp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's generally not something I'd change unless I was experimenting with the underlying speculative-decoding implementation.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Maximum speculative tokens
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--spec-draft-n-max&lt;/span&gt; 8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This controls the maximum number of speculative tokens proposed ahead.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the draft mechanism can attempt to predict up to eight tokens ahead.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Main model:
A

Draft:
A → B → C → D → E → F → G → H

Main model verifies:
A B C D ✓ ✓ ✓ ✗
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The more tokens you speculate, the greater the potential speedup—but only if the draft predictions are good enough.&lt;/p&gt;

&lt;p&gt;This is one of the parameters worth benchmarking:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2
4
8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eight is an aggressive but reasonable value to test.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. GPU layers
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-ngl&lt;/span&gt; 99
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is short for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--n-gpu-layers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It specifies how many model layers should be offloaded to the GPU.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;99&lt;/code&gt; effectively means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Put as many layers as possible on the GPU.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It does &lt;strong&gt;not&lt;/strong&gt; mean "use 99 GPU cores."&lt;/p&gt;

&lt;p&gt;Think of it as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU
 │
 ├── some model layers
 │
GPU
 │
 └── most/all model layers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the model fits comfortably on the GPU, &lt;code&gt;-ngl 99&lt;/code&gt; is generally what you want for performance.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. Context size
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-c&lt;/span&gt; 524288
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the maximum context window.&lt;/p&gt;

&lt;p&gt;The value is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;524,288 tokens = 512K tokens.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is an enormous context window.&lt;/p&gt;

&lt;p&gt;For comparison:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32K   = 32,768
128K  = 131,072
256K  = 262,144
512K  = 524,288
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important trade-off is that larger context requires more memory, particularly because of the KV cache.&lt;/p&gt;

&lt;p&gt;For agentic coding workloads, however, having hundreds of thousands of tokens available can be extremely useful.&lt;/p&gt;




&lt;h1&gt;
  
  
  7. Context-length override
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--override-kv&lt;/span&gt; qwen2.context_length&lt;span class="o"&gt;=&lt;/span&gt;int:524288
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is different from &lt;code&gt;-c&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You're overriding a value stored in the model's GGUF metadata:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;qwen2.context_length
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and setting it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;524288
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In other words, you're telling &lt;code&gt;llama.cpp&lt;/code&gt; to treat the model as having a 512K context length.&lt;/p&gt;

&lt;p&gt;This does &lt;strong&gt;not&lt;/strong&gt; magically train the model for 512K context.&lt;/p&gt;

&lt;p&gt;That's why the configuration also uses YaRN.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. RoPE scaling
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--rope-scaling&lt;/span&gt; yarn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This enables &lt;strong&gt;YaRN — Yet another RoPE extension&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;RoPE stands for &lt;strong&gt;Rotary Position Embedding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;RoPE is part of how the transformer represents token positions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;token 1
token 2
token 3
...
token 262144
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When extending the context beyond the model's original trained range, positional scaling is required.&lt;/p&gt;

&lt;p&gt;YaRN provides a mechanism for extending that range.&lt;/p&gt;

&lt;p&gt;In this configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Original context:
262K

Target context:
524K
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So the positional range is being extended by roughly 2×.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. Original YaRN context
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--yarn-orig-ctx&lt;/span&gt; 262144
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells YaRN:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The model's original context length is 262,144 tokens.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So the relevant configuration is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Original:
262,144

Target:
524,288

Extension:
2×
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These two parameters work together:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--rope-scaling&lt;/span&gt; yarn
&lt;span class="nt"&gt;--yarn-orig-ctx&lt;/span&gt; 262144
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  10. Logical batch size
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-b&lt;/span&gt; 16384
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the maximum number of tokens processed in a logical batch.&lt;/p&gt;

&lt;p&gt;The value is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;16,384 tokens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This primarily affects &lt;strong&gt;prompt processing / prefill&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, if you send a large prompt containing thousands of tokens, a larger batch can allow the GPU to process more tokens efficiently.&lt;/p&gt;

&lt;p&gt;Larger batches can increase prompt-processing throughput, but they also consume more memory.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;context = 524K
batch   = 16K
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is perfectly valid.&lt;/p&gt;

&lt;p&gt;The batch size does not limit the context window.&lt;/p&gt;




&lt;h1&gt;
  
  
  11. Physical / micro batch
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-ub&lt;/span&gt; 4096
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the physical or micro-batch size.&lt;/p&gt;

&lt;p&gt;It controls how many tokens are actually processed at one time.&lt;/p&gt;

&lt;p&gt;The configuration therefore has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Logical batch:
16,384

Physical batch:
4,096
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;16,384 tokens

┌──────────────────┐
│ 4,096 tokens     │
├──────────────────┤
│ 4,096 tokens     │
├──────────────────┤
│ 4,096 tokens     │
├──────────────────┤
│ 4,096 tokens     │
└──────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows a large logical batch without requiring all 16K tokens to be processed simultaneously.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-ub&lt;/code&gt; is therefore particularly important for VRAM usage and prompt-processing performance.&lt;/p&gt;




&lt;h1&gt;
  
  
  12. CPU threads
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-t&lt;/span&gt; 16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the number of CPU threads used for computation.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;16 CPU threads
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This does &lt;strong&gt;not&lt;/strong&gt; mean 16 GPU cores.&lt;/p&gt;

&lt;p&gt;How useful additional CPU threads are depends heavily on your CPU and on how much of the workload remains on the CPU.&lt;/p&gt;




&lt;h1&gt;
  
  
  13. Batch-processing CPU threads
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-tb&lt;/span&gt; 16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the number of CPU threads used specifically for batch processing.&lt;/p&gt;

&lt;p&gt;So the configuration is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Normal computation: 16 threads
Batch computation:  16 threads
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whether 16 is optimal depends on your CPU.&lt;/p&gt;

&lt;p&gt;If you're running on a high-core-count CPU, this is worth benchmarking.&lt;/p&gt;

&lt;p&gt;More threads don't automatically mean higher performance.&lt;/p&gt;




&lt;h1&gt;
  
  
  14. Parallel sequences
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-np&lt;/span&gt; 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This enables two parallel sequences/requests.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 Model
                   │
          ┌────────┴────────┐
          ▼                 ▼
      Context #1         Context #2
      512K max           512K max
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful if you're running two concurrent requests or agents.&lt;/p&gt;

&lt;p&gt;There is, however, a memory cost.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;512K context
×
2 parallel sequences
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the potential KV-cache requirement becomes very large.&lt;/p&gt;

&lt;p&gt;If you only ever run one request at a time, &lt;code&gt;-np 1&lt;/code&gt; may provide a better memory/performance balance.&lt;/p&gt;




&lt;h1&gt;
  
  
  15. Flash Attention
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-fa&lt;/span&gt; on
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This enables &lt;strong&gt;Flash Attention&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Flash Attention is an optimized implementation of the attention mechanism designed to reduce memory traffic and improve performance.&lt;/p&gt;

&lt;p&gt;It becomes particularly important at long context lengths.&lt;/p&gt;

&lt;p&gt;For a 512K configuration, I'd keep:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-fa&lt;/span&gt; on
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  16. K cache
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--cache-type-k&lt;/span&gt; f16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the datatype used for the &lt;strong&gt;Key&lt;/strong&gt; portion of the KV cache.&lt;/p&gt;

&lt;p&gt;You're using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;F16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or 16-bit floating point.&lt;/p&gt;




&lt;h1&gt;
  
  
  17. V cache
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--cache-type-v&lt;/span&gt; f16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the datatype used for the &lt;strong&gt;Value&lt;/strong&gt; portion of the KV cache.&lt;/p&gt;

&lt;p&gt;So the current configuration is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;K = F16
V = F16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This provides high precision, but consumes considerably more memory than:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--cache-type-k&lt;/span&gt; q8_0
&lt;span class="nt"&gt;--cache-type-v&lt;/span&gt; q8_0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Given the combination of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;512K context
×
2 parallel sequences
×
F16 KV
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this is one of the largest memory-consuming choices in the configuration.&lt;/p&gt;




&lt;h1&gt;
  
  
  18. KV GPU offload
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--kv-offload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells &lt;code&gt;llama.cpp&lt;/code&gt; to keep the KV cache on the GPU when possible.&lt;/p&gt;

&lt;p&gt;That generally improves performance because it avoids repeatedly moving KV data between CPU and GPU.&lt;/p&gt;

&lt;p&gt;The desired architecture for maximum performance is therefore approximately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model weights → GPU
KV cache     → GPU
Attention    → GPU
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;assuming you have enough VRAM.&lt;/p&gt;




&lt;h1&gt;
  
  
  19. Load mode
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--load-mode&lt;/span&gt; none
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This controls the model-loading mechanism.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;none&lt;/code&gt; means that no special loading mode is being selected.&lt;/p&gt;

&lt;p&gt;This isn't a setting I'd normally spend much time optimizing unless you're diagnosing model loading, memory mapping, or startup behavior.&lt;/p&gt;




&lt;h1&gt;
  
  
  20. Host
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--host&lt;/span&gt; 127.0.0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes the server listen only on the local machine.&lt;/p&gt;

&lt;p&gt;So the server is accessible through:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;127.0.0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but isn't directly exposed to other machines on the network.&lt;/p&gt;

&lt;p&gt;This is a network/security setting, not an inference-performance setting.&lt;/p&gt;




&lt;h1&gt;
  
  
  21. Port
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--port&lt;/span&gt; 8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server listens on port:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So your local API is effectively:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://127.0.0.1:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This has essentially no impact on model performance.&lt;/p&gt;




&lt;h1&gt;
  
  
  Putting everything together
&lt;/h1&gt;

&lt;p&gt;Your command is essentially saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Run Qwen 3.8 27B using a Q4 quantization, put as much of the model as possible on the GPU, use MTP speculative decoding with up to eight speculative tokens, support a 512K context by extending the model's 256K positional range with YaRN, process prompts using 16K/4K batches, use 16 CPU threads, support two simultaneous sequences, use Flash Attention, keep the F16 KV cache on the GPU, and expose the model as a local HTTP server on port 8080.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The architecture looks roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    llama.cpp server
                           │
               ┌───────────┴───────────┐
               │                       │
          Request #1              Request #2
          512K max                512K max
               │                       │
               └───────────┬───────────┘
                           │
                       KV Cache
                        F16/F16
                           │
                    Flash Attention
                           │
                  Qwen 3.8 27B Q4
                           │
                     GPU (-ngl 99)
                           │
                   MTP / speculative
                      decoding ×8
                           │
                         Output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  What matters most for performance
&lt;/h1&gt;

&lt;p&gt;Not all parameters deserve equal attention.&lt;/p&gt;

&lt;h3&gt;
  
  
  Highest impact
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--spec-draft-n-max 8
-c 524288
-np 2
--cache-type-k f16
--cache-type-v f16
-b 16384
-ub 4096
-fa on
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Hardware dependent
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-t 16
-tb 16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usually leave alone
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-ngl 99
--kv-offload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Mostly configuration rather than performance
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--override-kv
--rope-scaling
--yarn-orig-ctx
--load-mode
--host
--port
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The three biggest trade-offs in this particular configuration are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;512K context  ↔  memory

F16 KV       ↔  memory / performance

16K / 4K batch ↔ VRAM / prompt throughput
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And for generation speed, the most interesting parameter is probably:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MTP-8 ↔ speculative-token acceptance rate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The optimal configuration therefore isn't necessarily the one with the largest numbers. The goal is to find the point where &lt;strong&gt;GPU utilization, memory bandwidth, KV-cache size, batch size, and speculative-token acceptance&lt;/strong&gt; work together rather than competing with each other.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>localllm</category>
      <category>llamacpp</category>
    </item>
    <item>
      <title>Learning how to BMAD</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Thu, 01 Oct 2026 00:30:46 +0000</pubDate>
      <link>https://dev.to/dmitryame/learning-how-to-bmad-307j</link>
      <guid>https://dev.to/dmitryame/learning-how-to-bmad-307j</guid>
      <description>&lt;p&gt;My evolution in agentic development has been somewhat typical.&lt;/p&gt;

&lt;p&gt;At the end of 2025, it was all about the new thing at the time — Vibe Coding.&lt;/p&gt;

&lt;p&gt;Then, at the beginning of 2026, SDD with OpenSpec became a big game changer. It provided a way to scale agent-driven development without letting the codebase turn into a mess.&lt;/p&gt;

&lt;p&gt;And the next natural step? Multi-agent agentic workflows with BMAD.&lt;/p&gt;

&lt;p&gt;At first glance, BMAD seems vast, sophisticated, and complex.&lt;/p&gt;

&lt;p&gt;So where do I start?&lt;/p&gt;

&lt;p&gt;The best approach I could come up with was pretty simple: I talked to a friend who has been using BMAD for a couple of months now, which makes him an expert, transcribed our conversation, and asked GenAI to summarize it.&lt;/p&gt;

&lt;p&gt;Here’s what I got.&lt;/p&gt;

&lt;h1&gt;
  
  
  Orchestrating AI: A Blueprint for Spec-Driven Development with BMAD
&lt;/h1&gt;

&lt;p&gt;Software development constraints have shifted. The bottleneck is no longer keystrokes or raw implementation speed; it is cognitive load and context window management. &lt;/p&gt;

&lt;p&gt;My colleague Vlad recently scaled an entire production architecture using the BMAD AI framework. By shifting his role from writing syntax to orchestrating architecture, he maxed out Claude’s highest subscription tiers and fundamentally changed his output vector. Tasks that typically rot in a backlog are now executed in a single weekend.&lt;/p&gt;

&lt;p&gt;Here is the operational framework for high-leverage execution using BMAD.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Execution Pipeline
&lt;/h2&gt;

&lt;p&gt;AI-driven development requires strict adherence to spec-driven workflows. You do not ask the AI to "build a feature." You force it to define the product, register the architecture, and validate its own readiness before a single line of code is written.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Spec-Driven Workflow:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;Brainstorming&lt;/code&gt; → &lt;code&gt;PRD&lt;/code&gt; → &lt;code&gt;ADR&lt;/code&gt; → &lt;code&gt;Epics&lt;/code&gt; → &lt;code&gt;Stories&lt;/code&gt; → &lt;code&gt;Readiness Validation&lt;/code&gt; &lt;em&gt;(Loop if Not Ready)&lt;/em&gt; → &lt;code&gt;Implementation&lt;/code&gt; → &lt;code&gt;Code Review&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Domain Research &amp;amp; PRD:&lt;/strong&gt; Establish the baseline. The AI translates brainstorming sessions into strict Product Requirement Documents (PRDs).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture Decision Registry (ADR):&lt;/strong&gt; The AI extracts technical dependencies from the PRD, selecting the stack (e.g., databases, infrastructure) and locking in technical parameters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Epics &amp;amp; Sharding:&lt;/strong&gt; The ADR is broken down into Epics. If an Epic is too large, the AI shards it into smaller, digestible components. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementation Readiness:&lt;/strong&gt; &lt;strong&gt;This is the critical gate.&lt;/strong&gt; The AI runs a readiness check against the requirements. If it scores below the required threshold (due to contradictions or missing logic), the engineer issues a "correct course" command.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementation &amp;amp; Review:&lt;/strong&gt; The AI generates a comprehensive checklist (often 500+ lines) for a single story, executes the code, and then reviews its own work, prompting the engineer with necessary clarifying questions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Eliminating Technical Debt at Zero Marginal Cost
&lt;/h2&gt;

&lt;p&gt;Under legacy models, technical debt persists because the ROI of fixing it rarely justifies the engineering hours. AI reverses this calculus.&lt;/p&gt;

&lt;p&gt;Vlad’s monorepo CI/CD pipeline was choking on batch scripts, pushing test cycles to 90 minutes. Rather than manually rewriting it, he orchestrated an automated intervention:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Phase 1: Technical Research.&lt;/strong&gt; BMAD analyzed the repository, identified the quadratic scaling bottleneck in the batch scripts, evaluated Python, TypeScript, and Go, and proposed a Go port.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phase 2: Execution.&lt;/strong&gt; After Vlad approved the research, BMAD injected three new stories into the active Epic and executed the Go port over the weekend. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A refactor that would have cost a week of human engineering time was resolved asynchronously while the engineer managed top-level logistics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operational Heuristics for AI Engineering
&lt;/h2&gt;

&lt;p&gt;If you are scaling an AI agent like BMAD, adopt these technical guardrails:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Enforce Monorepos
&lt;/h3&gt;

&lt;p&gt;Avoid git submodules and multi-repository architectures. Umbrella projects with submodules introduce heavy friction when tracking commit hashes across dependencies. AI agents perform best when they have unified line-of-sight across the entire codebase—front-end and back-end alike. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. Cap the Context Window
&lt;/h3&gt;

&lt;p&gt;Larger context windows yield higher hallucination rates. While Claude and local models (like Qwen) boast 500k to 1M token windows, pushing past 400k guarantees degradation. The AI will fabricate interruptions or lose the thread entirely. Cap your working sessions between 100k and 260k tokens. Isolate execution by breaking stories down further rather than bloating the context.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Automate Traceability
&lt;/h3&gt;

&lt;p&gt;As your project scales to hundreds of PRDs and ADRs, manual validation becomes impossible. Vlad engineered a custom BMAD skill using an open-source requirement flow tool. The skill mechanically sweeps all files to ensure strict traceability—flagging orphan PRDs, missing dependencies, and architectural contradictions before the implementation phase begins.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Shift Unknowns Left
&lt;/h3&gt;

&lt;p&gt;Address structural unknowns and technical spikes in the earliest stories of an Epic. By resolving ambiguities at the start of the cycle, the tail end of the Epic becomes highly mechanical, requiring near-zero human intervention.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Delta
&lt;/h2&gt;

&lt;p&gt;We are exiting the era of the 50-person engineering team split across 10 specialized layers. The future belongs to single-engineer monorepos, where the human acts as the Chief Architect and the AI executes the labor. Focus on the architecture; the speed will follow.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;My friend told me he had been burning through an insane number of tokens — couple of thousand dollars worth every month. &lt;/p&gt;

&lt;p&gt;He barely writes any code by hand anymore. Instead, he spends his energy making one decision after another: yes or no, keep or discard, proceed or stop.&lt;/p&gt;

&lt;p&gt;At the end of the day, it is exhausting. And somehow, incredibly satisfying.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>architecture</category>
      <category>bmad</category>
    </item>
    <item>
      <title>Schopenhauer in the Standup: 7 Rules to Neutralize a Toxic Boss</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Thu, 24 Sep 2026 18:37:37 +0000</pubDate>
      <link>https://dev.to/dmitryame/schopenhauer-in-the-standup-7-rules-to-neutralize-a-toxic-boss-4kb8</link>
      <guid>https://dev.to/dmitryame/schopenhauer-in-the-standup-7-rules-to-neutralize-a-toxic-boss-4kb8</guid>
      <description>&lt;p&gt;You try to argue logically.&lt;/p&gt;

&lt;p&gt;You try to expose their inconsistencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You lose.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I have navigated environments orchestrated by toxic leadership. When you find yourself convening with key engineers before a status call just to align on a narrative and build a defensive perimeter, you are no longer doing engineering.&lt;/p&gt;

&lt;p&gt;You are managing a hostile vector.&lt;/p&gt;

&lt;p&gt;Every time I tried to use logic or point out the toxicity in those environments, I was outmaneuvered.&lt;/p&gt;

&lt;p&gt;The philosopher &lt;strong&gt;Arthur Schopenhauer&lt;/strong&gt; provided the answer long before modern management theory:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Will defeats reason where reason plays by the rules of the will.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Your losses are not a character flaw. They are the result of operating under the wrong rule set.&lt;/p&gt;

&lt;p&gt;A toxic manager is rarely a mastermind executing a grand strategy. They are simply running a proven behavioral script.&lt;/p&gt;

&lt;p&gt;They seek &lt;strong&gt;reactions&lt;/strong&gt;, not logic.&lt;/p&gt;

&lt;p&gt;To orchestrate your own environment and neutralize bad actors, you must deprecate old habits and adopt a new operational framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Threat Model: Common Archetypes
&lt;/h2&gt;

&lt;p&gt;Before applying the rules, recognize the vectors of attack.&lt;/p&gt;

&lt;p&gt;Toxic leaders typically fall into one of three categories:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Archetype&lt;/th&gt;
&lt;th&gt;Execution Vector&lt;/th&gt;
&lt;th&gt;Objective&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The Caregiver&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Extracts vulnerabilities via simulated empathy — &lt;em&gt;"Are you feeling overwhelmed?"&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;Stores your doubts to weaponize them in future performance evaluations.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The Victim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Deploys silence and suffering to engineer guilt when you set a boundary.&lt;/td&gt;
&lt;td&gt;Forces you to offer unprompted concessions to resolve the awkwardness.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The Inquisitor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Disguises accusations as endless "detail refinement" on your backlog.&lt;/td&gt;
&lt;td&gt;Forces you into a perpetual defensive posture.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The objective isn't to fight every attack.&lt;/p&gt;

&lt;p&gt;It is to understand the system generating them.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rule 1: Observe, But Remain Silent
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Scenario:&lt;/strong&gt; Your director pitches your architectural solution in a meeting as their own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Flaw:&lt;/strong&gt; You immediately object.&lt;/p&gt;

&lt;p&gt;They smile, pivot gracefully:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Of course, we brainstormed this together."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And you are left looking petty and defensive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Silence is not consent; it is data collection.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Exposing a manipulator too early forces them to change tactics, closing off your visibility into their operations.&lt;/p&gt;

&lt;p&gt;Observe the pattern.&lt;/p&gt;

&lt;p&gt;Let them commit to the board.&lt;/p&gt;

&lt;p&gt;Whoever reveals their cards first, loses.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rule 2: Your Vulnerability Is Their Tooling
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Scenario:&lt;/strong&gt; You vent to a toxic manager about project fatigue.&lt;/p&gt;

&lt;p&gt;Two weeks later, they reassign a high-leverage epic to someone else, citing your &lt;em&gt;"need for a break."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Openness is a personality trait.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trust is an earned credential.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Do not confuse the two.&lt;/p&gt;

&lt;p&gt;Be a &lt;strong&gt;lake&lt;/strong&gt;, not a puddle.&lt;/p&gt;

&lt;p&gt;A puddle is transparent to the bottom.&lt;/p&gt;

&lt;p&gt;A lake obscures its depth.&lt;/p&gt;

&lt;p&gt;When an unverified leader asks how you are managing a crisis, the optimal response is sterile and precise:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Operating nominally."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Establish a perimeter.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rule 3: Starve the Engine
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Scenario:&lt;/strong&gt; A passive-aggressive comment in a code review designed to provoke you.&lt;/p&gt;

&lt;p&gt;Toxic leaders operate via emotional feedback loops.&lt;/p&gt;

&lt;p&gt;Without your reaction, they lose their telemetry.&lt;/p&gt;

&lt;p&gt;They do not know if their strike landed.&lt;/p&gt;

&lt;p&gt;When provoked, institute a hard &lt;strong&gt;three-second latency&lt;/strong&gt; before responding.&lt;/p&gt;

&lt;p&gt;Do not justify.&lt;/p&gt;

&lt;p&gt;Do not counter-attack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Control the pause, and you control the narrative.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Rule 4: Weaponize Time
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Scenario:&lt;/strong&gt; You attempt to warn cross-functional teams about your manager, but you end up looking like the source of the friction.&lt;/p&gt;

&lt;p&gt;A person driven purely by the will to dominate lacks brakes.&lt;/p&gt;

&lt;p&gt;Eventually, they will overplay their hand, breach protocol, or alienate a critical stakeholder.&lt;/p&gt;

&lt;p&gt;You do not need to act as the whistleblower.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reputation is an accumulated metric.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Step aside and let time execute the exposure.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Truth requires no defense attorney.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Rule 5: Deprecate Access
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Scenario:&lt;/strong&gt; You confront a toxic boss with a grand declaration that you will no longer tolerate their behavior.&lt;/p&gt;

&lt;p&gt;A grand exit is still a reaction.&lt;/p&gt;

&lt;p&gt;It is a massive data payload you just handed to the adversary.&lt;/p&gt;

&lt;p&gt;The correct protocol is &lt;strong&gt;silent deprecation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You cannot always quit immediately, but you can limit bandwidth.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increase your response latency.&lt;/li&gt;
&lt;li&gt;Provide concise answers.&lt;/li&gt;
&lt;li&gt;Remain entirely polite, yet entirely unavailable.&lt;/li&gt;
&lt;li&gt;Starve them of your reactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You are not escalating.&lt;/p&gt;

&lt;p&gt;You are reducing the attack surface.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rule 6: Audit Your Own Telemetry
&lt;/h2&gt;

&lt;p&gt;We are blind to our own manipulative vectors because we classify them as self-defense or radical honesty.&lt;/p&gt;

&lt;p&gt;Before you launch an accusation starting with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You always..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;in a 1-on-1, run a diagnostic.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Am I stating an objective truth, or am I engineering a specific emotional reaction?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You cannot defend against manipulation effectively if you are unknowingly utilizing the same scripts.&lt;/p&gt;

&lt;p&gt;The system has to be audited from both sides.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rule 7: The Master Key — Become Unreadable
&lt;/h2&gt;

&lt;p&gt;The previous six rules are tactics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule 7 is the baseline state.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Toxic managers navigate using a map of your triggers.&lt;/p&gt;

&lt;p&gt;They know when you will explode.&lt;/p&gt;

&lt;p&gt;They know when you will yield.&lt;/p&gt;

&lt;p&gt;They know when you will over-explain.&lt;/p&gt;

&lt;p&gt;To neutralize them permanently, you must &lt;strong&gt;obsolete their map&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Break your predictable rhythms.&lt;/p&gt;

&lt;p&gt;Speak calmly where you used to shout.&lt;/p&gt;

&lt;p&gt;Remain silent where you used to argue.&lt;/p&gt;

&lt;p&gt;When they attempt to corner you into justifying a boundary, utilize the ultimate unassailable response:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"I have decided to take this route."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No justification.&lt;/p&gt;

&lt;p&gt;No appeal to external logic.&lt;/p&gt;

&lt;p&gt;Just the decision.&lt;/p&gt;

&lt;p&gt;When you become unreadable, you become unusable.&lt;/p&gt;

</description>
      <category>career</category>
      <category>management</category>
      <category>leadership</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Stop Asking Which Agentic Coding Methodology to Use</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Thu, 17 Sep 2026 22:47:26 +0000</pubDate>
      <link>https://dev.to/dmitryame/stop-asking-which-agentic-coding-methodology-to-use-1bij</link>
      <guid>https://dev.to/dmitryame/stop-asking-which-agentic-coding-methodology-to-use-1bij</guid>
      <description>&lt;p&gt;The prevailing question in AI-assisted development—"Which methodology should I use?"—is fundamentally flawed.&lt;/p&gt;

&lt;p&gt;Superpowers, BMAD, Compound Engineering, OpenSpec, SpecKit, GSD, Ralph. The ecosystem is flooded with systems claiming to run your AI agents. The thesis here is simple: There is no universal winner. Each framework orchestrates a distinct layer of agentic development. &lt;/p&gt;

&lt;p&gt;Stop searching for a silver bullet. Build a stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Execution vs. Intent: Superpowers vs. BMAD
&lt;/h2&gt;

&lt;p&gt;The most critical comparison dictates your starting vector.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Superpowers (Pure Engineering):&lt;/strong&gt; Operates as a demanding senior engineer. It enforces design, planning, strict test-driven development, and rigorous review. Default to this for daily coding, solo development, and pure implementation tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BMAD (Product Intent):&lt;/strong&gt; Operates as a complete product organization—analysts, PMs, architects, and readiness gates. Deploy this when product intent remains uncertain or stakeholder complexity is high.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Context Retention: OpenSpec vs. SpecKit
&lt;/h2&gt;

&lt;p&gt;Both frameworks combat context drift by anchoring requirements in versioned files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenSpec:&lt;/strong&gt; Optimized for change and brownfield execution. It is the durable change contract for everyday work on real, existing production codebases. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SpecKit:&lt;/strong&gt; Optimized for governance. It dictates a constitution, traceability, and audit trails. Reserve for heavily regulated environments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. The Autonomy Layer: GSD vs. Ralph
&lt;/h2&gt;

&lt;p&gt;Tread carefully here. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GSD:&lt;/strong&gt; Designed to safeguard structured projects across context windows via requirements, roadmaps, and verification. &lt;em&gt;(Note: The original repository was archived in June 2026. Use only for long unattended runs once a stable fork emerges.)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ralph:&lt;/strong&gt; A continuous loop (pick an item, implement a test, repeat). Warning: Without impenetrable tests, Ralph will happily burn tokens iterating on bad decisions. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. The Meta-Layer: Compound Engineering
&lt;/h2&gt;

&lt;p&gt;Compound Engineering shifts the focus from "How do we build this correctly?" to "How does this work make the next task frictionless?" Every feature delivery concludes by recording lessons for agents to reuse. If your role leans closer to founder than individual contributor, this is your core methodology.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Winning Synthesis
&lt;/h2&gt;

&lt;p&gt;Do not install everything. Orchestrate the right sequence based on the situation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;BMAD&lt;/strong&gt; to define requirements when product intent is ambiguous.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenSpec&lt;/strong&gt; to establish a durable change contract in the codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Superpowers&lt;/strong&gt; to drive implementation and rigorous verification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compound Engineering&lt;/strong&gt; to extract and record lessons post-delivery.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I personally would start with &lt;strong&gt;BMAD&lt;/strong&gt; as a higher level harness, and  combine it with OpenSpec to drive quality of implementation to the desired level.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>architecture</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Stop Optimizing for Output: Why Software Engineering is a Discovery Problem</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Thu, 17 Sep 2026 14:59:34 +0000</pubDate>
      <link>https://dev.to/dmitryame/stop-optimizing-for-output-why-software-engineering-is-a-discovery-problem-1bb9</link>
      <guid>https://dev.to/dmitryame/stop-optimizing-for-output-why-software-engineering-is-a-discovery-problem-1bb9</guid>
      <description>&lt;p&gt;Most engineering organizations misdiagnose software delivery as a production problem. They treat building software like operating a factory: crank the handle faster, and more features will drop off the conveyor belt. &lt;/p&gt;

&lt;p&gt;This intuition is fundamentally flawed. In software, copying code is free. Everything you spend time building is unprecedented. Therefore, engineering is not a production process; it is an exercise in continuous discovery. &lt;/p&gt;

&lt;p&gt;When you push a team for raw speed, you inevitably throttle their velocity. Here is the data-backed thesis for why traditional management levers fail, and how optimizing for learning naturally generates speed as a byproduct.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Factory Fallacy
&lt;/h2&gt;

&lt;p&gt;When timelines slip, leadership invariably reaches for three failed levers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Adding Personnel:&lt;/strong&gt; Fred Brooks established this decades ago in &lt;em&gt;The Mythical Man-Month&lt;/em&gt;: adding manpower to a late software project makes it later. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adding Pressure:&lt;/strong&gt; Mandating urgency forces engineers to drop tests and bypass refactoring. You might buy a week of output today, but you finance it with months of debugging tomorrow. Software delivery is a marathon; cutting corners introduces debt that permanently impairs throughput.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adding Process Gates:&lt;/strong&gt; Imposing checkpoints and Change Approval Boards (CABs) creates the illusion of control. In reality, it merely introduces queues. Data from the State of DevOps Report (documented in &lt;em&gt;Accelerate&lt;/em&gt;) is unambiguous: heavy review gates are empirically worse than having no change approval process at all. You do not gain control by slowing down.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factory Heuristic (Output)&lt;/th&gt;
&lt;th&gt;Discovery Heuristic (Learning)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Maximize resource utilization&lt;/td&gt;
&lt;td&gt;Minimize feedback latency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enforce process gates and CABs&lt;/td&gt;
&lt;td&gt;Shift control to automated pipelines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large, quarterly batched releases&lt;/td&gt;
&lt;td&gt;Continuous, small-step deployments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Measure velocity and lines of code&lt;/td&gt;
&lt;td&gt;Measure time from idea to validation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Vector: Optimize for Learning
&lt;/h2&gt;

&lt;p&gt;If your discipline is discovery, your goal is to accelerate your speed of learning. You must ascertain quickly if you are on the right track and correct course if you are not. When you optimize for learning, quality rises, unplanned rework plummets, and speed materializes naturally.&lt;/p&gt;

&lt;p&gt;To execute this transition, implement these three operational standards:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Work Experimentally
&lt;/h3&gt;

&lt;p&gt;Treat every meaningful change as a hypothesis. Frame the work as: &lt;em&gt;"I hypothesize this code will produce X result. Let us deploy and measure it."&lt;/em&gt; The scientific method is the most powerful engine for navigating uncertainty. Apply it rigorously to your architecture and product decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Compress Feedback Cycles
&lt;/h3&gt;

&lt;p&gt;Your rate of learning is capped by how fast you can validate a hypothesis. If a flawed architectural design takes three months to expose itself, you only learn four times a year. If it takes twenty minutes, you can learn twenty times a day. Automated testing and continuous delivery pipelines exist for this exact purpose: rapid intelligence gathering.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Isolate the Variables
&lt;/h3&gt;

&lt;p&gt;You can only extract signal from an experiment if you know what caused the outcome. A massive quarterly release is an experiment corrupted by a hundred uncontrolled variables. If it fails, you have bought an unplanned mystery. Deploying in small, iterative steps isolates variables, ensuring immediate clarity on what broke and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Realigning Metrics
&lt;/h2&gt;

&lt;p&gt;The metrics you track dictate the behavior of your system. &lt;/p&gt;

&lt;p&gt;Stop measuring utilization, sprint velocity, or lines of code. These track busyness, not progress. Instead, measure the latency of validation: &lt;strong&gt;How long does it take for an idea to reach the user, and how quickly can we confirm if it works?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Speed is not a command you can issue to a tired engineering squad. It is the natural byproduct of a system calibrated for rigorous, high-frequency learning. &lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>devops</category>
      <category>leadership</category>
      <category>continuousdelivery</category>
    </item>
    <item>
      <title>Stop Fixing Engineers. Start Fixing the Environment.</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Thu, 03 Sep 2026 18:15:33 +0000</pubDate>
      <link>https://dev.to/dmitryame/the-neuroscience-of-feedback-bypassing-fight-or-flight-to-build-a-non-toxic-engineering-culture-332n</link>
      <guid>https://dev.to/dmitryame/the-neuroscience-of-feedback-bypassing-fight-or-flight-to-build-a-non-toxic-engineering-culture-332n</guid>
      <description>&lt;p&gt;Fear is a systemic failure masquerading as operational rigor. When you deliver unfiltered criticism, you are not engaging an engineer's logic. You are triggering a mammalian threat response. &lt;/p&gt;

&lt;p&gt;Poorly calibrated feedback registers in the brain as a physical attack, causing the recipient to immediately shift from problem-solving to self-preservation. To orchestrate a high-functioning engineering culture, leaders must bypass the amygdala and communicate directly with the prefrontal cortex. &lt;/p&gt;

&lt;p&gt;Here is the operational thesis on why threat-based environments collapse, how organizations institutionalize this failure, and how to calibrate your operational framework for durable execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cognitive Cost of Survival Mode
&lt;/h2&gt;

&lt;p&gt;The human brain cannot optimize complex systems while defending itself. &lt;/p&gt;

&lt;p&gt;Under the stress of looming delivery cycles and technical debt, a manager's brain defaults to threat detection. You notice only the flaws, the broken builds, and the missed estimates. When you manage exclusively through error-correction, the work environment becomes a threat vector. &lt;/p&gt;

&lt;p&gt;The engineer's prefrontal cortex, the center for complex logic and system design, cedes control to the amygdala. Cognitive bandwidth narrows. The engineer stops optimizing the product for the end-user and starts optimizing their output for personal safety. They no longer build to solve the problem; they build to avoid blame.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Death of the Risk Vector
&lt;/h2&gt;

&lt;p&gt;Innovation requires a strict tolerance for calculated failure. Proposing an asymmetrical architecture, testing a new operational framework, or automating a legacy process all require taking a risk.&lt;/p&gt;

&lt;p&gt;In a fear-driven culture, the risk-reward calculus is entirely broken. Engineers default to the safest, most historically mediocre solutions. Fear extracts a singular, high-speed result: compliance. The subsequent decay is catastrophic.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Execution Metric&lt;/th&gt;
&lt;th&gt;Fear-Driven Compliance&lt;/th&gt;
&lt;th&gt;High-Agency Execution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Optimization Vector&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Evading punishment&lt;/td&gt;
&lt;td&gt;Solving the core problem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;System Architecture&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Defensive, derivative, brittle&lt;/td&gt;
&lt;td&gt;Elegant, modular, resilient&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Communication&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Conceals blockers and debt&lt;/td&gt;
&lt;td&gt;Surfaces risks immediately&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;End State&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Systemic stagnation&lt;/td&gt;
&lt;td&gt;Continuous iteration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Orchestrating a High-Trust, Low-Fear Culture
&lt;/h2&gt;

&lt;p&gt;To prevent the fight-or-flight response at the interpersonal level, you must structure your feedback to signal safety while demanding excellence.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Establish the Positive Baseline:&lt;/strong&gt; Counteract the brain's expectation of attacks by establishing a persistent baseline of recognizing correct execution. Highlight elegant system design and proactive risk mitigation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decouple the Artifact from the Architect:&lt;/strong&gt; Never attach a failure to an individual's identity. Say, &lt;em&gt;"This implementation leaves edge cases exposed,"&lt;/em&gt; rather than &lt;em&gt;"You build brittle systems."&lt;/em&gt; The artifact can be refactored; a damaged professional relationship is much harder to repair.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy the Psychological Safety Anchor:&lt;/strong&gt; Before delivering hard truths, state: &lt;em&gt;"I am sharing this observation because I hold this team to exacting standards, and I have absolute certainty you can execute at this level."&lt;/em&gt; This alters the cognitive processing of the recipient from threat detection to validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control the Timing:&lt;/strong&gt; Unsolicited feedback acts as a jump scare to the nervous system. Ask for permission to initiate the critique (e.g., &lt;em&gt;"Are you ready to review the architecture on this initiative, or should we convene tomorrow morning?"&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Institutionalizing Fear: The Performance Management Trap
&lt;/h2&gt;

&lt;p&gt;Neurological threat responses do not exist solely in one-on-one meetings; modern organizations institutionalize them at scale. &lt;/p&gt;

&lt;p&gt;To survive competitive pressure, companies deploy rigid "performance management" frameworks that mandate "developing the gaps." This structurally reinforces a culture of fear. By constantly focusing an engineer on their weaknesses, the organization perpetually triggers the exact neurological threat response that kills cognitive bandwidth. &lt;/p&gt;

&lt;p&gt;Standardized performance management assumes uniform motivation and enforces a single, rigid baseline that everyone must meet. This approach breeds mediocrity. It forces exceptional, asymmetrical talent to optimize for arbitrary HR metrics rather than extracting their unique cognitive advantages. &lt;/p&gt;

&lt;p&gt;True leadership rejects this standardization. It requires the harder, higher-leverage work of managing cognitive diversity. You must identify distinct motivators, extract the absolute best from varied talent profiles, and direct those vectors toward the organization's objectives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: The Macro Climate and The Final Delta
&lt;/h2&gt;

&lt;p&gt;Understanding the neuroscience of feedback is critical because the current macroeconomic environment is actively working against you. &lt;/p&gt;

&lt;p&gt;We are operating in an era of unprecedented ambiguity. The job market is contracting. The vector of artificial intelligence introduces a persistent, systemic anxiety; the industry anticipates paradigm shifts of biblical proportions, though the exact architecture of this future remains undefined. &lt;/p&gt;

&lt;p&gt;Confronted with this ambient uncertainty, leadership defaults to the path of least resistance: weaponizing job insecurity. They rely on fear as a motivator because it is easy. Employees, prioritizing survival, stop speaking up, stop challenging assumptions, and mask structural risks. A vicious cycle takes root. Silence replaces candor, and compliance replaces innovation.&lt;/p&gt;

&lt;p&gt;Neurological data establishes a clear thesis: positive motivation engineers durable, high-leverage execution, while fear extracts temporary compliance and guarantees long-term systemic decay. &lt;/p&gt;

&lt;p&gt;The companies that break this vicious cycle will capture the market. By actively refusing to institutionalize fear—and instead orchestrating environments where cognitive diversity and intellectual rigor supersede macroeconomic panic—they will secure the high-agency talent required to win.&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>neuroscience</category>
      <category>culture</category>
      <category>management</category>
    </item>
    <item>
      <title>The Death of Story Points: Engineering Metrics in the Agentic Era</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Thu, 03 Sep 2026 16:07:55 +0000</pubDate>
      <link>https://dev.to/dmitryame/the-death-of-story-points-engineering-metrics-in-the-agentic-era-2kho</link>
      <guid>https://dev.to/dmitryame/the-death-of-story-points-engineering-metrics-in-the-agentic-era-2kho</guid>
      <description>&lt;p&gt;Traditional Scrum optimizes for human cognitive load. Agentic development shatters this constraint. &lt;/p&gt;

&lt;p&gt;The two-week sprint, the Fibonacci estimation sequence, and bottom-up story pointing are artifacts of a legacy delivery model. When AI agents write the code, the correlation between task complexity and execution effort flattens. Adding a simple endpoint or executing a cross-service architectural change yield vastly different human effort profiles, but near-identical agentic execution timelines. &lt;/p&gt;

&lt;p&gt;The thesis is absolute: engineering teams must shift from measuring human effort to managing system throughput. Here is the operational framework for managing engineering metrics in the agentic era.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Paradigm Shift
&lt;/h2&gt;

&lt;p&gt;The fundamental unit of planning is no longer the user story; it is the business objective. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vector&lt;/th&gt;
&lt;th&gt;Legacy Scrum&lt;/th&gt;
&lt;th&gt;Agentic Flow&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Unit of Work&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;User Story&lt;/td&gt;
&lt;td&gt;Business Objective&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Estimation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Story Points (Fibonacci)&lt;/td&gt;
&lt;td&gt;Statistical Forecasting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cadence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2-Week Sprints&lt;/td&gt;
&lt;td&gt;Continuous Flow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Code Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Small, frequent commits&lt;/td&gt;
&lt;td&gt;End-to-end functional commits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Testing Goal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Line coverage&lt;/td&gt;
&lt;td&gt;100% Behavioral coverage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Management Focus&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Velocity &amp;amp; Burndown&lt;/td&gt;
&lt;td&gt;Governance &amp;amp; Guardrails&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  1. Sunsetting Story Points for Flow Metrics
&lt;/h2&gt;

&lt;p&gt;Story points estimate human effort and uncertainty. When an AI agent decomposes a feature into independently deliverable tasks, debating whether a story is five or eight points adds zero value.&lt;/p&gt;

&lt;p&gt;Velocity metrics must transition to objective completion rates and cycle time. The operational question shifts from &lt;em&gt;"How many points can we burn this sprint?"&lt;/em&gt; to &lt;em&gt;"How many independent, testable tasks can the system clear per week?"&lt;/em&gt; Planning becomes an exercise in flow management and empirical consistency, not subjective guessing.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Spec-Driven Orchestration
&lt;/h2&gt;

&lt;p&gt;Autonomous execution requires an anchor. Spec-driven development frameworks (like OpenSpec) replace the traditional product backlog. &lt;/p&gt;

&lt;p&gt;The workflow is linear: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Define the business objective.&lt;/li&gt;
&lt;li&gt;AI generates the architectural spec.&lt;/li&gt;
&lt;li&gt;AI decomposes the spec into small, executable tasks.&lt;/li&gt;
&lt;li&gt;AI validates that each task is independently testable.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The spec operates as the single source of truth and a living artifact. Management orchestrates the objectives and defines the guardrails; the agents handle the tactical breakdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Cohesive Commit
&lt;/h2&gt;

&lt;p&gt;Agentic coding alters the natural unit of work. Developers are accustomed to small, iterative commits to manage risk and simplify code reviews. Agents, however, can implement an entire slice of functionality in a single pass. &lt;/p&gt;

&lt;p&gt;Commits will increase in size. This is not messy bloat; it is the delivery of a single, coherent capability. Consequently, review practices must evolve. Instead of scanning lines of code, engineers will review AI-generated summaries tied directly back to the initial spec. Code is merged when the objective is validated by automated evidence, replacing the "commit early, commit often" heuristic with "commit verifiable value."&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 100% Behavioral Coverage
&lt;/h2&gt;

&lt;p&gt;Chasing line coverage is a vanity metric. In an autonomous delivery loop, agents write the code, generate the tests (unit, integration, end-to-end), execute them, and fix failures prior to human review. &lt;/p&gt;

&lt;p&gt;Testing transforms from a separate, downstream phase into the core execution loop. The standard becomes 100% behavioral coverage—ensuring all critical user journeys execute successfully. Every bug naturally converts into an automated regression test, mapped back to the origin spec.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The End of the Two-Week Sprint
&lt;/h2&gt;

&lt;p&gt;Fixed iterations exist to protect humans from scope creep and establish a predictable rhythm. Agents do not require psychological safety from scope changes; they require accurate parameters.&lt;/p&gt;

&lt;p&gt;Because agents adapt instantly, teams can operate in a state of continuous flow rather than artificial two-week batching. Predictability and forecasting do not disappear, but they transition to statistical modeling. Instead of guessing story sizes, engineering leaders utilize historical outcome data to state: &lt;em&gt;"There is an 80% probability this objective ships in four weeks."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Business reviews, retrospectives, and roadmap updates remain necessary, but they are entirely decoupled from the development lifecycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Manager's Delta
&lt;/h2&gt;

&lt;p&gt;The engineering manager's role is transitioning from assigning work to defining goals, maintaining system guardrails, and verifying outcomes. The agile dashboard is no longer a burndown chart; it is an operations console. &lt;/p&gt;

&lt;p&gt;The organizations that win the next decade will be the ones that stop treating AI as a faster typist, and start architecting their operations around autonomous flow.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>ai</category>
      <category>management</category>
      <category>engineering</category>
    </item>
    <item>
      <title>Scaling Code Reviews in the Age of Generative AI</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Fri, 21 Aug 2026 22:28:56 +0000</pubDate>
      <link>https://dev.to/dmitryame/scaling-code-reviews-in-the-age-of-generative-ai-2mie</link>
      <guid>https://dev.to/dmitryame/scaling-code-reviews-in-the-age-of-generative-ai-2mie</guid>
      <description>&lt;p&gt;The thesis is simple: Generative AI solves code generation, but it breaks code review. &lt;/p&gt;

&lt;p&gt;As developers generate 10x more code, the bottleneck shifts downstream. Senior engineers are burning out reviewing automated output. The traditional human-in-the-loop PR process is unsustainable. &lt;/p&gt;

&lt;p&gt;Florian Buetow, AI engineer at Xebia, recently outlined the solution: stop manually reviewing AI-generated code. Instead, orchestrate an environment where agents receive instantaneous, programmatic feedback. &lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/W1uG25of2t0"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Here is the operational framework to scale code validation using guardrails.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Scaling Vectors
&lt;/h2&gt;

&lt;p&gt;Organizations currently address the AI review bottleneck across two primary vectors:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vector&lt;/th&gt;
&lt;th&gt;Methodology&lt;/th&gt;
&lt;th&gt;Leverage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Horizontal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Automating existing PR pipelines (e.g., AI reviewing a GitHub PR).&lt;/td&gt;
&lt;td&gt;Marginal. Speeds up legacy processes but retains the foundational human bottleneck.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vertical&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Engineering local environments with autonomous agent feedback loops.&lt;/td&gt;
&lt;td&gt;High. Eliminates manual review via preemptive, programmatic guardrails.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The vertical approach is the necessary evolution. You must engineer the environment in which the agent operates to eliminate the human middleman.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecting Guardrails
&lt;/h2&gt;

&lt;p&gt;Guardrails are automated constraints that enforce technical integrity before a human ever sees the code. By bringing feedback directly to the developer's machine—rather than waiting for a pull request—you force the AI to self-correct.&lt;/p&gt;

&lt;p&gt;Implement these three structural constraints:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Static Analysis &amp;amp; &lt;a href="https://semgrep.dev/" rel="noopener noreferrer"&gt;Semgrep&lt;/a&gt;&lt;/strong&gt;: Do not rely on LLM alignment to write clean code. Enforce it. Write &lt;a href="https://semgrep.dev/" rel="noopener noreferrer"&gt;Semgrep&lt;/a&gt; rules to ban specific anti-patterns. If your standard dictates no default mutable values in Python methods, codify it. When the agent violates the rule, the script fails and feeds the natural-language error back to the agent for an immediate retry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architectural Unit Tests&lt;/strong&gt;: AI tools will frequently hallucinate bizarre dependencies to force a solution to work. Implement architectural tests that analyze module dependencies (e.g., ensuring the UI layer cannot directly access the database). &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Stop Hooks&lt;/strong&gt;: Utilize CLI tools and AI harnesses that support stop hooks. When the agent completes a generation cycle, the harness triggers a shell script to run your test suite and static checks. If failures occur, the harness feeds the exact errors back into the prompt, forcing a "route loop" where the AI iterates until tests pass.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The TDD Renaissance
&lt;/h2&gt;

&lt;p&gt;Specification-Driven Development (SDD) and Test-Driven Development (TDD) dictate the efficacy of your AI output. &lt;/p&gt;

&lt;p&gt;AI models struggle with ambiguity. If you draft a loose specification, the model will deviate from your intention within five minutes. The hard work of software engineering shifts entirely to the beginning of the pipeline. You must thoroughly define the architecture and write the behavioral tests upfront. &lt;/p&gt;

&lt;p&gt;Once behavioral tests are in place, the AI can iterate rapidly. It writes the code, the tests fail, the harness provides feedback, and the model corrects itself. The code is generated precisely to specification without manual intervention.&lt;/p&gt;

&lt;h2&gt;
  
  
  Execution Strategy
&lt;/h2&gt;

&lt;p&gt;To transition your team to a vertical AI scaling model, execute these steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data-Mine Your Session Logs&lt;/strong&gt;: Audit your &lt;code&gt;.claude&lt;/code&gt; or local AI chat logs. Identify the repetitive corrections you make to the model's output. Translate those specific corrections into &lt;a href="https://semgrep.dev/" rel="noopener noreferrer"&gt;Semgrep&lt;/a&gt; rules or static checks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isolate the Harness from the Model&lt;/strong&gt;: The harness (Claude Code, Codex, &lt;a href="https://aider.chat/" rel="noopener noreferrer"&gt;Aider&lt;/a&gt;) dictates your leverage more than the underlying LLM. Models are rapidly commoditizing; harnesses provide the memory layer, tool execution, and feedback loops. Do not lock your organization into a single toolset. Experiment continuously to find the optimal environment for your specific stack.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elevate to Product Execution&lt;/strong&gt;: Recognize that removing the code review bottleneck changes the developer's role. Engineers must now operate at the product level—focusing heavily on architecture, customer requirements, and system design—while agents execute the syntax.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The traditional code review is an artifact of the pre-AI era. Build the guardrails, orchestrate the automated feedback loop, and reclaim your engineering bandwidth.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>ai</category>
      <category>codereview</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Finding the Sweet Spot for Local LLMs: Qwen Coder &amp; Llama.cpp</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Mon, 08 Jun 2026 23:55:05 +0000</pubDate>
      <link>https://dev.to/dmitryame/finding-the-sweet-spot-for-local-llms-qwen-coder-llamacpp-2imf</link>
      <guid>https://dev.to/dmitryame/finding-the-sweet-spot-for-local-llms-qwen-coder-llamacpp-2imf</guid>
      <description>&lt;h2&gt;
  
  
  The Shift to Local Models
&lt;/h2&gt;

&lt;p&gt;Running local LLMs for software development is getting increasingly popular, especially as commercial providers continue to charge by the token. It finally makes economic sense to run models locally to avoid cost overruns. &lt;/p&gt;

&lt;p&gt;I have personally spent a lot of time trying to figure out the best configuration. After experimenting with LM Studio, Ollama, and RooCode, I finally found a setup that consistently works for my workflow: &lt;strong&gt;Llama.cpp running Qwen Coder via GitHub Copilot with OpenSpec SSD&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Here is a breakdown of my experience and the exact configuration I use.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hardware Reality
&lt;/h2&gt;

&lt;p&gt;To get decent results locally, hardware is the primary constraint. I was fortunate enough to recently purchase the latest MacBook Pro M5 with 128GB of RAM. &lt;/p&gt;

&lt;p&gt;Initially, I had some buyer's remorse spending that much on a machine, but it has proven essential. I tend to consume a lot of memory — I regularly run VS Code with multiple workspaces, React Native servers and simulators, a mail client, and around 100 Google Chrome tabs simultaneously. &lt;/p&gt;

&lt;p&gt;Even with all of this running alongside the local LLM, my system rarely swaps more than 2GB of memory to the disk. Performance stays smooth, and I avoid the severe degradation that happens when swap usage climbs higher.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Software Stack
&lt;/h2&gt;

&lt;p&gt;While wrappers like &lt;strong&gt;Ollama&lt;/strong&gt; and &lt;strong&gt;LM Studio&lt;/strong&gt; are convenient, I found the best results come from running &lt;strong&gt;Llama.cpp&lt;/strong&gt; directly. &lt;/p&gt;

&lt;p&gt;Installation on macOS is straightforward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;llama.cpp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the models, Hugging Face is the best source. &lt;br&gt;
To use Llama.cpp models from Hugging Face, you need files in the GGUF format. These models are optimized for local inference on both CPUs and GPUs. &lt;a href="https://huggingface.co/docs/hub/en/gguf-llamacpp" rel="noopener noreferrer"&gt;https://huggingface.co/docs/hub/en/gguf-llamacpp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My model of choice is &lt;strong&gt;Qwen3-Coder-Next-GGUF:UD-Q8_K_XL&lt;/strong&gt;. Another good one is &lt;strong&gt;Qwen3.6-35B-A3B-MTP-GGUF:UD-Q8_K_XL&lt;/strong&gt;.&lt;br&gt;
Let's brake it down what the name elements stand for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;35B&lt;/strong&gt;: The model has 35 billion total parameters (the size of its "brain").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A3B&lt;/strong&gt;: It is a "Sparse Mixture-of-Experts" (MoE) architecture. Instead of using all 35B parameters to answer a question, it dynamically activates only 3 billion "active" parameters per token. This delivers massive speed and efficiency without sacrificing intelligence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MTP&lt;/strong&gt;: Multi-Token Prediction. The model is trained to predict multiple tokens (words) at once rather than one-by-one, significantly accelerating generation speeds during inference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GGUF&lt;/strong&gt;: Generalized GPU-CPU Fusion. A popular file format used for running AI models locally. It allows you to split the model between your graphics card (VRAM) and your computer's regular system memory (RAM).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UD&lt;/strong&gt;: A specialized quantization method developed by the Unsloth team designed to preserve maximum intelligence at lower file sizes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q8_K_XL&lt;/strong&gt;: The specific level of quantization (compression).Q8 means it is an 8-bit quantization.It aggressively reduces file size compared to the original, while still maintaining extremely high quality (nearly matching the original uncompressed model).XL indicates a specific weighting adjustment meant for Unsloth's extra-large context-size handling.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  The Quantization Goldilocks Zone
&lt;/h2&gt;

&lt;p&gt;Quantization makes a massive difference in performance and stability. I went through quite a bit of trial and error to find the right balance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;4-bit:&lt;/strong&gt; I tried this first, but it lacked precision. For complex coding tasks, the model would frequently get stuck in infinite loops (pretty much always for me).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;16-bit:&lt;/strong&gt; I attempted to run the 32B parameter model at 16-bit, but it was simply too large for my hardware to handle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;8-bit:&lt;/strong&gt; This was the sweet spot. It fits within my memory constraints while executing complex reasoning flawlessly.
To download and run the server with the given model on your local environment, run:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;llama-server &lt;span class="nt"&gt;-hf&lt;/span&gt; unsloth/Qwen3-Coder-Next-GGUF:UD-Q8_K_XL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;When you installed llama.cpp via brew, you can run the above command, which will take a while the first time -- depending on your internet speed, up to an hour or so. Running it again will access the cached version, so it will take only a few seconds to load into the memory and start. You can check if it's running by going to &lt;code&gt;http://localhost:8080/&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  My Copilot Configuration
&lt;/h2&gt;

&lt;p&gt;If you run a model locally, GitHub Copilot does not charge you for tokens (not yet, anyways), meaning you can stay on the standard plan while running complex code analysis. &lt;/p&gt;

&lt;p&gt;In VSCode, copilot chat window, click on the model picker and select a gear next to the "Other Models":&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frrxa00un8ehmdt4u9fhr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frrxa00un8ehmdt4u9fhr.png" alt=" " width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then select "add models" and "custom endpoint", &lt;br&gt;
type "llama.cpp" for group name, hit "enter" for the API key, and "Enter" again for the API type (the value does not really matter). &lt;/p&gt;

&lt;p&gt;After you save the initial config, you should be able to see the &lt;strong&gt;llama.cpp&lt;/strong&gt; in the list of models when you click the gear next to the "Other Models" selection again. Then, click a gear next to "llama.cpp" and open the config as JSON. To save you time -- here is the final JSON I have, you may want to copy and paste it in your config:&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="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;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"llama.cpp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"vendor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"customendpoint"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"apiKey"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${input:chat.lm.secret.6d112807}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"models"&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="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Local Llama, qwen-Q8_0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"qwen-Q8_0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:8080"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"toolCalling"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"vision"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"reasoning"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"thinking"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"maxInputTokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;131072&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"maxOutputTokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;131072&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"contextWindowSize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;262144&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"parameters"&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;"top_k"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"top_p"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"min_p"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"repetition_penalty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"temperature"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"max_new_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"num_ctx"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;16384&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"num_gpu"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"num_thread"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&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="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's go over some of these parameters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint:&lt;/strong&gt; &lt;code&gt;localhost:8080&lt;/code&gt; (or your specific local port)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool Calling:&lt;/strong&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vision:&lt;/strong&gt; &lt;code&gt;false&lt;/code&gt; (I tried enabling this, but Qwen kept returning errors that vision is unsupported)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reasoning &amp;amp; Thinking:&lt;/strong&gt; &lt;code&gt;true&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context Window:&lt;/strong&gt; &lt;code&gt;256k&lt;/code&gt; total (&lt;code&gt;128k&lt;/code&gt; max input / &lt;code&gt;128k&lt;/code&gt; max output)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temperature:&lt;/strong&gt; &lt;code&gt;0.6&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU Offload (&lt;code&gt;num_gpu&lt;/code&gt;):&lt;/strong&gt; &lt;code&gt;-1&lt;/code&gt; (Uses all available GPUs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Threads:&lt;/strong&gt; &lt;code&gt;12&lt;/code&gt; (Maps to the performance cores on my Mac)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A Note on Reasoning and Temperature
&lt;/h3&gt;

&lt;p&gt;Some documentation suggests turning "Reasoning" and "Thinking" off for coding tasks, but my experiments proved otherwise. I use Spec-Driven Development with OpenSpec, which requires heavy analysis and planning before any code is written. Leaving reasoning set to &lt;code&gt;true&lt;/code&gt; yielded significantly better results for this workflow.&lt;/p&gt;

&lt;p&gt;Additionally, keep your temperature at &lt;code&gt;0.6&lt;/code&gt; rather than strict &lt;code&gt;0.0&lt;/code&gt;. A purely deterministic &lt;code&gt;0.0&lt;/code&gt; temperature can cause the model to get permanently stuck if it hits a logic loop. That  bump gives it just enough variance to diverge and find a solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Few words on agentic coding
&lt;/h2&gt;

&lt;p&gt;No matter the model you use -- Vibe coding, as we know it, is always going to suffer from the Architecture Entropy. Read more on this topic here in this post  &lt;a href="https://dev.to/dmitryame/the-end-of-vibe-coding-2e78"&gt;The End of Vibe Coding&lt;/a&gt;&lt;br&gt;
This is why Spec-Driven Development (SDD) is a must. &lt;br&gt;
Also, on the topic of why it's essential to keep your Architecture "as simple as possible, but not simpler", read the following post &lt;a href="https://dev.to/dmitryame/the-token-tax-why-genai-billing-makes-minimalist-architecture-mandatory-4fl2"&gt;Why GenAI Billing Makes Minimalist Architecture Mandatory&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Payoff
&lt;/h2&gt;

&lt;p&gt;The results I am getting from this local Qwen setup are remarkably close to top-tier remote models like Claude Opus 4.6 . &lt;/p&gt;

&lt;p&gt;Between the high-quality output and the fact that I am saving a couple of hundred dollars a month on API costs, the heavy upfront investment in the MacBook Pro will pay for itself within a couple of years. If you have the hardware, I highly recommend giving this stack a try.&lt;/p&gt;

</description>
      <category>llm</category>
      <category>coding</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The Death of the Pull Request: Why Manual Code Reviews are Obsolete</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Sat, 02 May 2026 01:01:35 +0000</pubDate>
      <link>https://dev.to/dmitryame/the-death-of-the-pull-request-why-manual-code-reviews-are-obsolete-3fj3</link>
      <guid>https://dev.to/dmitryame/the-death-of-the-pull-request-why-manual-code-reviews-are-obsolete-3fj3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Pull requests aren’t the problem. Pull request &lt;strong&gt;reviews&lt;/strong&gt; are.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For years, PR reviews have been treated as a sacred checkpoint in software delivery. A necessary gate. A quality filter. A learning tool.&lt;/p&gt;

&lt;p&gt;But in the age of GenAI, spec-driven development, and real-time collaboration, that assumption no longer holds.&lt;/p&gt;

&lt;p&gt;Let’s be direct:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manual PR reviews are becoming the slowest, least valuable, and most artificial step in the entire delivery pipeline.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  PRs: What Problem Were They Solving?
&lt;/h2&gt;

&lt;p&gt;Conceptually, pull requests were created to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Share knowledge across the team
&lt;/li&gt;
&lt;li&gt;Enforce coding standards
&lt;/li&gt;
&lt;li&gt;Catch bugs before merge
&lt;/li&gt;
&lt;li&gt;Align contributors on architecture
&lt;/li&gt;
&lt;li&gt;Provide a safety net for junior or external contributors
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of that made sense in a world where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code was written entirely by humans
&lt;/li&gt;
&lt;li&gt;Context was fragmented
&lt;/li&gt;
&lt;li&gt;Validation happened late
&lt;/li&gt;
&lt;li&gt;Tooling was limited
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That world has changed.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Issue: Late, Low-Context Validation
&lt;/h2&gt;

&lt;p&gt;PR reviews happen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After the code is written
&lt;/li&gt;
&lt;li&gt;Without full implementation context
&lt;/li&gt;
&lt;li&gt;Detached from the original design decisions
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;blockquote&gt;
&lt;p&gt;They validate the &lt;strong&gt;artifact (code)&lt;/strong&gt; instead of the &lt;strong&gt;intent (spec)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By the time a PR is opened:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The feature is already implemented
&lt;/li&gt;
&lt;li&gt;The tests are already written
&lt;/li&gt;
&lt;li&gt;The behavior is already observable
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So what’s left?&lt;/p&gt;

&lt;p&gt;👉 A human scanning code that already works.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Actually Replaces PR Reviews?
&lt;/h2&gt;

&lt;p&gt;PR reviews don’t disappear randomly — they become unnecessary when validation shifts &lt;strong&gt;earlier and deeper&lt;/strong&gt; in the process.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Pair / Trio Programming + GenAI
&lt;/h3&gt;

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

&lt;blockquote&gt;
&lt;p&gt;“I’ll code it → you review it later”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You move to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“We design, implement, and validate together — with GenAI”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is not new — it’s &lt;strong&gt;extreme programming&lt;/strong&gt;, on steroids:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shared context from the start
&lt;/li&gt;
&lt;li&gt;Immediate feedback while building
&lt;/li&gt;
&lt;li&gt;Continuous correction instead of delayed critique
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If two engineers built the feature together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They already challenged decisions
&lt;/li&gt;
&lt;li&gt;They already aligned on patterns
&lt;/li&gt;
&lt;li&gt;They already saw every line evolve
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 There’s nothing meaningful left to “review” later.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Spec-Driven Development (SDD)
&lt;/h3&gt;

&lt;p&gt;We’re no longer optimizing for code correctness.&lt;/p&gt;

&lt;p&gt;We’re optimizing for &lt;strong&gt;problem definition&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;With SDD:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Specs define behavior, constraints, and edge cases
&lt;/li&gt;
&lt;li&gt;GenAI generates and enforces implementation
&lt;/li&gt;
&lt;li&gt;Standards are applied automatically
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This flips the model:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;From “Is this code correct?”&lt;br&gt;&lt;br&gt;
To “Did we define the right thing correctly?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s where real engineering value lives.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Automation as the Primary Safety Net
&lt;/h3&gt;

&lt;p&gt;Manual review is a weak signal compared to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unit tests
&lt;/li&gt;
&lt;li&gt;Integration tests
&lt;/li&gt;
&lt;li&gt;End-to-end scenarios
&lt;/li&gt;
&lt;li&gt;Generated edge cases
&lt;/li&gt;
&lt;li&gt;Runtime observation
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of reading code, you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execute it
&lt;/li&gt;
&lt;li&gt;Observe it
&lt;/li&gt;
&lt;li&gt;Stress it
&lt;/li&gt;
&lt;li&gt;Expand coverage dynamically
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don’t need a human guessing if something might break.&lt;/p&gt;

&lt;p&gt;👉 You watch the system prove that it doesn’t.&lt;/p&gt;




&lt;h2&gt;
  
  
  PR as a Transport Mechanism (Not a Gate)
&lt;/h2&gt;

&lt;p&gt;Let’s separate concerns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PR as a &lt;strong&gt;way to merge code&lt;/strong&gt; ✅
&lt;/li&gt;
&lt;li&gt;PR as a &lt;strong&gt;mandatory human approval gate&lt;/strong&gt; ❌
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use feature branches
&lt;/li&gt;
&lt;li&gt;Open PRs for visibility
&lt;/li&gt;
&lt;li&gt;Track changes
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the approval step becomes either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A formality
&lt;/li&gt;
&lt;li&gt;Or unnecessary entirely
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;If the people who built it understand it and stand behind it, what is approval actually adding?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Accountability &amp;gt; Approval
&lt;/h2&gt;

&lt;p&gt;A better model replaces approvals:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Accountability over authorization&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;ul&gt;
&lt;li&gt;“Who approved this?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Who built this, and do they stand behind it?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This leads to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shared ownership
&lt;/li&gt;
&lt;li&gt;Clear responsibility
&lt;/li&gt;
&lt;li&gt;No rubber-stamping
&lt;/li&gt;
&lt;li&gt;No passive approvals
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Call it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pair Programming Accountability&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Contractor Myth
&lt;/h2&gt;

&lt;p&gt;A common argument:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“PR reviews help onboard new engineers.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In practice, they don’t.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Delayed
&lt;/li&gt;
&lt;li&gt;Context-light
&lt;/li&gt;
&lt;li&gt;Passive
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A better onboarding model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pair from day one
&lt;/li&gt;
&lt;li&gt;Focus on business domain
&lt;/li&gt;
&lt;li&gt;Ask questions continuously
&lt;/li&gt;
&lt;li&gt;Use GenAI to explore the system
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Coding standards?&lt;/p&gt;

&lt;p&gt;👉 Automatically enforced.&lt;/p&gt;

&lt;p&gt;What matters is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding the system
&lt;/li&gt;
&lt;li&gt;Understanding the problem
&lt;/li&gt;
&lt;li&gt;Understanding the impact
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Trunk-Based Development and Product Delivery Debt
&lt;/h2&gt;

&lt;p&gt;In 👉 &lt;a href="https://dev.to/dmitryame/addressing-product-delivery-debt-4pc3"&gt;How not to fail Agile&lt;/a&gt; I describe &lt;strong&gt;product delivery debt&lt;/strong&gt; — the hidden cost of slow feedback loops.&lt;/p&gt;

&lt;p&gt;PR reviews are one of the biggest contributors to that debt.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Waiting
&lt;/li&gt;
&lt;li&gt;Context switching
&lt;/li&gt;
&lt;li&gt;Bottlenecks
&lt;/li&gt;
&lt;li&gt;Artificial delays
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now combine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trunk-based development
&lt;/li&gt;
&lt;li&gt;Pair programming
&lt;/li&gt;
&lt;li&gt;Spec-driven workflows
&lt;/li&gt;
&lt;li&gt;Strong automation
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And you eliminate entire classes of delay.&lt;/p&gt;

&lt;p&gt;This is how high-velocity teams ship:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Features move continuously
&lt;/li&gt;
&lt;li&gt;Feedback loops stay tight
&lt;/li&gt;
&lt;li&gt;Delivery becomes predictable
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even before GenAI, some teams achieved same-day delivery.&lt;/p&gt;

&lt;p&gt;Now there’s even less excuse not to.&lt;/p&gt;




&lt;h2&gt;
  
  
  Minimalism as a Force Multiplier
&lt;/h2&gt;

&lt;p&gt;Speed is not just about process — it’s also about architecture.&lt;/p&gt;

&lt;p&gt;In  👉 &lt;a href="https://dev.to/dmitryame/minimalistic-architecture-for-minimalistic-product-ffd"&gt;Minimalistic architecture for Minimalistic product&lt;/a&gt;  I argue that &lt;strong&gt;minimalistic architecture&lt;/strong&gt; is a prerequisite for high-velocity delivery.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because complexity amplifies everything PR reviews try (and fail) to control:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More services → more surface area to review
&lt;/li&gt;
&lt;li&gt;More abstractions → harder to reason about
&lt;/li&gt;
&lt;li&gt;More dependencies → more edge cases
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minimalism does the opposite:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fewer moving parts
&lt;/li&gt;
&lt;li&gt;Clearer system boundaries
&lt;/li&gt;
&lt;li&gt;Easier reasoning
&lt;/li&gt;
&lt;li&gt;Faster validation
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Combine minimal architecture with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spec-driven development
&lt;/li&gt;
&lt;li&gt;Pair programming
&lt;/li&gt;
&lt;li&gt;Strong automation
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the need for PR reviews collapses naturally.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You don’t need heavy review processes when the system itself is simple and understandable.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Real Bottleneck: Human Latency
&lt;/h2&gt;

&lt;p&gt;PR reviews struggle because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They depend on availability
&lt;/li&gt;
&lt;li&gt;They require context reconstruction
&lt;/li&gt;
&lt;li&gt;They are rarely prioritized
&lt;/li&gt;
&lt;li&gt;They often become superficial
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;blockquote&gt;
&lt;p&gt;They happen when the most valuable decisions are already behind you.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  A Thought Experiment
&lt;/h2&gt;

&lt;p&gt;Imagine this workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Two engineers define a feature
&lt;/li&gt;
&lt;li&gt;They refine the spec
&lt;/li&gt;
&lt;li&gt;They implement it with GenAI
&lt;/li&gt;
&lt;li&gt;Tests are generated and pass
&lt;/li&gt;
&lt;li&gt;Behavior is verified
&lt;/li&gt;
&lt;li&gt;The feature is merged and deployed
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What exactly would a PR review improve here?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Shift That Matters
&lt;/h2&gt;

&lt;p&gt;We are moving from:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Old Model&lt;/th&gt;
&lt;th&gt;New Model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Review code&lt;/td&gt;
&lt;td&gt;Design systems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enforce style&lt;/td&gt;
&lt;td&gt;Define specs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual validation&lt;/td&gt;
&lt;td&gt;Automated validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Late feedback&lt;/td&gt;
&lt;td&gt;Continuous validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Approval gates&lt;/td&gt;
&lt;td&gt;Accountability ownership&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Final Take
&lt;/h2&gt;

&lt;p&gt;Pull requests are not dead.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;manual PR reviews are&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not because they were wrong —&lt;br&gt;&lt;br&gt;
but because they no longer solve the most important problems.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If your quality depends on PR reviews, your process is already too late.&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;Not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Who approved this PR?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Why are we reviewing code instead of designing better systems?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>development</category>
      <category>efficiency</category>
      <category>process</category>
    </item>
    <item>
      <title>The Token Tax: Why GenAI Billing Makes Minimalist Architecture Mandatory</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Wed, 29 Apr 2026 20:38:32 +0000</pubDate>
      <link>https://dev.to/dmitryame/the-token-tax-why-genai-billing-makes-minimalist-architecture-mandatory-4fl2</link>
      <guid>https://dev.to/dmitryame/the-token-tax-why-genai-billing-makes-minimalist-architecture-mandatory-4fl2</guid>
      <description>&lt;h1&gt;
  
  
  The Token Tax: Why Minimalist Architecture and Language-Specific Models Win
&lt;/h1&gt;

&lt;p&gt;In my previous piece, &lt;a href="https://dev.to/dmitryame/minimalistic-architecture-for-minimalistic-product-ffd"&gt;Minimalistic Architecture for Minimalistic Product&lt;/a&gt;, I argued that startup architecture should optimize for simplicity, scalability, and low maintenance.&lt;/p&gt;

&lt;p&gt;Back then, the constraint was human.&lt;/p&gt;

&lt;p&gt;Now, it’s tokens.&lt;/p&gt;

&lt;p&gt;As we move from &lt;a href="https://dev.to/dmitryame/the-end-of-vibe-coding-2e78"&gt;"Vibe Coding" to Spec-Driven Development (SDD)&lt;/a&gt;, a new force is shaping engineering decisions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Token Tax.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GenAI is shifting toward token-based billing. That means every architectural decision directly affects cost—not just in runtime, but in &lt;em&gt;thinking&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Architecture–Token–Model Triangle
&lt;/h2&gt;

&lt;p&gt;The old equation was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Complexity = Cognitive Load&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The new one is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Complexity = Context = Tokens = Cost&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But there’s a new multiplier:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Model Choice&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Fragmented Stack = Expensive Intelligence
&lt;/h3&gt;

&lt;p&gt;If your system includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10+ microservices&lt;/li&gt;
&lt;li&gt;multiple languages (Java, Python, JS, Go…)&lt;/li&gt;
&lt;li&gt;several data paradigms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You force the AI to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;load more context&lt;/li&gt;
&lt;li&gt;switch reasoning modes&lt;/li&gt;
&lt;li&gt;translate between abstractions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This explodes token usage &lt;em&gt;before&lt;/em&gt; any useful work begins.&lt;/p&gt;

&lt;h3&gt;
  
  
  Minimal Stack + Specialized Models = Compounding Efficiency
&lt;/h3&gt;

&lt;p&gt;Now consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single language (e.g., JavaScript end-to-end)&lt;/li&gt;
&lt;li&gt;Unified runtime model&lt;/li&gt;
&lt;li&gt;Reduced architectural surface area&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This unlocks something new:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can run &lt;strong&gt;smaller, cheaper, language-specialized models&lt;/strong&gt; instead of general-purpose ones.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of paying for a large frontier model to reason across ecosystems, you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use a &lt;strong&gt;JS-optimized model&lt;/strong&gt; for 90% of tasks&lt;/li&gt;
&lt;li&gt;drastically reduce context size&lt;/li&gt;
&lt;li&gt;avoid cross-language reasoning overhead&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; fewer tokens &lt;em&gt;and&lt;/em&gt; cheaper tokens.&lt;/p&gt;




&lt;h2&gt;
  
  
  Minimalism Is What Makes Small Models Viable
&lt;/h2&gt;

&lt;p&gt;Here’s the key insight:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Lightweight models only work well in &lt;strong&gt;predictable, constrained environments&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A chaotic architecture forces you back to large, expensive models.&lt;/p&gt;

&lt;p&gt;A minimalist architecture lets you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;keep context windows small&lt;/li&gt;
&lt;li&gt;standardize patterns&lt;/li&gt;
&lt;li&gt;reduce ambiguity&lt;/li&gt;
&lt;li&gt;enable deterministic reasoning&lt;/li&gt;
&lt;li&gt;and the last but not least: &lt;strong&gt;run smaller specialized models locally for free!!!&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Architecture determines whether you can afford intelligence.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The New Role of the "Newborn Architect"
&lt;/h2&gt;

&lt;p&gt;The question from SDD remains: what happens to developers?&lt;/p&gt;

&lt;p&gt;The answer evolves.&lt;/p&gt;

&lt;p&gt;The "Newborn Architect" is no longer just designing systems for humans.&lt;/p&gt;

&lt;p&gt;They are designing systems for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;token efficiency&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;model compatibility&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cost predictability&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Their new responsibilities:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Define Intent (CONSTITUTION.md)&lt;/strong&gt;&lt;br&gt;
Lock in constraints that reduce ambiguity for both humans and models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Minimize Surface Area&lt;/strong&gt;&lt;br&gt;
Every extra service, library, or language is not just complexity—&lt;br&gt;
it’s a &lt;strong&gt;recurring token expense&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Design for Small Models&lt;/strong&gt;&lt;br&gt;
If your system &lt;em&gt;requires&lt;/em&gt; a frontier model to understand it,&lt;br&gt;
it’s already too complex.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Eliminate Translation Layers&lt;/strong&gt;&lt;br&gt;
Cross-language boundaries = hidden token multipliers.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Real Cost of “Clever” Architecture
&lt;/h2&gt;

&lt;p&gt;In the past, overengineering cost:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;time&lt;/li&gt;
&lt;li&gt;onboarding friction&lt;/li&gt;
&lt;li&gt;maintenance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now it costs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tokens per prompt&lt;/li&gt;
&lt;li&gt;tokens per iteration&lt;/li&gt;
&lt;li&gt;tokens per bug fix&lt;/li&gt;
&lt;li&gt;tokens per feature&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And unlike technical debt, this cost is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;immediate, measurable, and unavoidable&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The New Bottom Line
&lt;/h2&gt;

&lt;p&gt;In 2019:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If the product doesn’t take off, just rebuild.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In 2026:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You might run out of budget &lt;em&gt;before you learn anything.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because every iteration is metered.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Shift
&lt;/h2&gt;

&lt;p&gt;Minimalism is no longer about elegance.&lt;/p&gt;

&lt;p&gt;It’s about &lt;strong&gt;economic survival&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The winning stack is not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the most scalable&lt;/li&gt;
&lt;li&gt;the most flexible&lt;/li&gt;
&lt;li&gt;the most “future-proof”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s the one that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;minimizes tokens&lt;/li&gt;
&lt;li&gt;enables small, specialized models&lt;/li&gt;
&lt;li&gt;keeps the entire system understandable in one pass&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The best architecture today is the one that lets you &lt;strong&gt;downgrade your model without breaking your system&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you can’t do that, you’re paying the Token Tax—whether you realize it or not.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What’s the most expensive piece of complexity in your stack today—not in engineering time, but in tokens?&lt;/strong&gt;&lt;/p&gt;

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