<?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>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>
    <item>
      <title>Velocity is a Vanity Metric: Why Agentic Coding is Actually About Quality.</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Thu, 23 Apr 2026 13:29:31 +0000</pubDate>
      <link>https://dev.to/dmitryame/velocity-is-a-vanity-metric-why-agentic-coding-is-actually-about-quality-3cof</link>
      <guid>https://dev.to/dmitryame/velocity-is-a-vanity-metric-why-agentic-coding-is-actually-about-quality-3cof</guid>
      <description>&lt;h1&gt;
  
  
  Beyond the Speed Trap: Why Agentic Coding is a Quality Revolution
&lt;/h1&gt;

&lt;p&gt;Senior leadership often views Generative AI through a single lens: &lt;strong&gt;Velocity&lt;/strong&gt;. They expect a vertical line on the burndown chart. But viewing agentic assist solely as a "speed booster" is a category error. We aren't just doing the same things faster; we are fundamentally shifting how software is delivered.&lt;/p&gt;

&lt;p&gt;If you are an engineer using agentic tools, your priority shouldn't be speed. It should be the compounding quality of your output.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Apples to Oranges" Fallacy
&lt;/h2&gt;

&lt;p&gt;Comparing traditional SDLC velocity to agentic-driven development is a mistake. In the traditional model, we often sacrifice long-term health for short-term "done." We ignore the small bug or the messy abstraction because fixing it requires a new ticket, a new sprint, and a new round of approvals.&lt;/p&gt;

&lt;p&gt;Agentic coding collapses these silos.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. In-Context Refactoring &amp;amp; Bug Fixing
&lt;/h3&gt;

&lt;p&gt;In the past, a bug found during feature development followed a rigid path:&lt;br&gt;
&lt;code&gt;Backlog -&amp;gt; Prioritization -&amp;gt; Estimation -&amp;gt; Implementation -&amp;gt; Pipeline.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With agentic assist, the friction of "doing the right thing" vanishes. If you encounter a bug or a necessary refactor while working on a feature, you fix it in the context of that story. You leave the codebase better than you found it because the "cost" of doing so—in terms of time and cognitive load—has been drastically reduced.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. From Narrow Specialists to System Architects
&lt;/h3&gt;

&lt;p&gt;Traditional Scrum often forces engineers into narrow specializations to maintain speed. Spec-driven development with AI agents reverses this.&lt;/p&gt;

&lt;p&gt;By leveraging agents to handle the boilerplate and tactical execution, engineers gain a broader understanding of the entire system architecture. The real gain isn't that the code was written in 10 minutes; it's that the engineer spent those 10 minutes ensuring the feature aligns with the broader system integrity.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Death of the "Mini-Waterfall"
&lt;/h3&gt;

&lt;p&gt;Even the most "Agile" Scrum teams often fall into a "mini-waterfall" trap: rigid frameworks and two-week cycles that struggle to respond to real-time discoveries.&lt;/p&gt;

&lt;p&gt;Agentic tools enable a truly iterative approach. The feedback loop is so tight that we can respond to challenges on the spot. This shifts the fundamental question of the SDLC:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Old Question:&lt;/strong&gt; Can we deliver this?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;New Question:&lt;/strong&gt; Should we deliver this?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because we can prototype and iterate so quickly, we often realize a feature isn't needed before we've wasted a sprint on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Obsolescence of Long-Term Planning
&lt;/h2&gt;

&lt;p&gt;This shift doesn't just change how we write code; it fundamentally breaks our traditional planning horizons. The common practice of planning for three months, six months, or even a year in advance—even at the epic level—is becoming obsolete.&lt;/p&gt;

&lt;p&gt;In an agentic environment, we explore so many new possibilities during the implementation of stories that our initial assumptions are rendered irrelevant almost immediately. Long-term planning cycles are simply too rigid for the speed of agentic discovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Execution and Real-Time Pivoting
&lt;/h2&gt;

&lt;p&gt;Instead of focusing on long-term predictability, we must shift our focus toward high-level roadmaps and immediate execution.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Pivot on the Spot:&lt;/strong&gt; We need to explore new possibilities as soon as they emerge rather than waiting for a Program Increment (PI) to complete.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Dynamic Roadmaps:&lt;/strong&gt; The goal is no longer to follow a three-month plan, but to maintain a high-level vision while pivoting execution based on what we learn during the build.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Continuous Exploration:&lt;/strong&gt; Because the cost of implementation is dropping, the value lies in the ability to test a hypothesis and pivot the strategy in real-time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A New Approach to Estimation
&lt;/h2&gt;

&lt;p&gt;If we can fix bugs, refactor code, and pivot directions in real-time, traditional upfront estimation becomes obsolete. We need to move toward post-factum velocity reflection.&lt;/p&gt;

&lt;p&gt;Instead of guessing how long a "black box" task will take, we measure the impact and quality of the system as it evolves. Velocity improvement will come, but it must be organic.&lt;/p&gt;




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

&lt;p&gt;Don't chase the "Day 1" 10x velocity jump. Instead, focus on:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Reducing "Bounce Backs":&lt;/strong&gt; Higher quality means fewer QA rejections.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;System Health:&lt;/strong&gt; Gradual, automated improvement of the codebase.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Spec-Driven Precision:&lt;/strong&gt; Knowing why you are building before you let the agent build it.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Radical Agility:&lt;/strong&gt; Pivoting the moment a better path reveals itself, rather than serving an outdated roadmap.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The goal of agentic coding isn't to produce more code. It's to produce better systems.&lt;/p&gt;

&lt;p&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%2Fbu0qmbhagfa0lll2tvhf.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%2Fbu0qmbhagfa0lll2tvhf.png" alt=" " width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwaredevelopment</category>
      <category>architecture</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
