<?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>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>
    <item>
      <title>From Vibe Coding to SDD: Why the Future of Engineering is Architecture</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Mon, 30 Mar 2026 23:02:14 +0000</pubDate>
      <link>https://dev.to/dmitryame/from-vibe-coding-to-sdd-why-the-future-of-engineering-is-architecture-2ae5</link>
      <guid>https://dev.to/dmitryame/from-vibe-coding-to-sdd-why-the-future-of-engineering-is-architecture-2ae5</guid>
      <description>&lt;h1&gt;
  
  
  The Architectural Shift
&lt;/h1&gt;

&lt;p&gt;The era of writing code by hand is becoming a relic of the past. As we move deeper into the age of Generative AI, the role of the software engineer is undergoing a fundamental phase shift: from the &lt;strong&gt;depth&lt;/strong&gt; of manual syntax to the &lt;strong&gt;breadth&lt;/strong&gt; of architectural orchestration.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Entropy of "Vibe Coding"
&lt;/h2&gt;

&lt;p&gt;"Vibe coding"—relying on AI to generate code based on loose prompts and "vibes"—is an excellent entry point, but it carries a hidden tax: &lt;strong&gt;architectural entropy&lt;/strong&gt;. Without a rigorous framework, rapid AI generation leads to inconsistencies, technical drift, and a fragmented codebase that no human brain can fully map.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter Spec-Driven Development (SDD)
&lt;/h2&gt;

&lt;p&gt;Spec-Driven Development is the "all-in" solution to AI-driven engineering. It shifts the focus from the &lt;em&gt;output&lt;/em&gt; (the code) to the &lt;em&gt;intent&lt;/em&gt; (the specification). &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Engineer as Architect:&lt;/strong&gt; In SDD, writing code is the simplest and fastest part of the cycle. The real work happens in refining the "spec"—ensuring requirements are precise, edge cases are covered, and external dependencies are identified upfront.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual Superiority:&lt;/strong&gt; While a human engineer will inevitably miss details in a massive project, GenAI can hold the entire context in memory. By using SDD, the engineer acts as a high-level validator, challenging assumptions and directing the AI to maintain a consistent vision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The End of the Jira Bug Cycle:&lt;/strong&gt; In an SDD workflow, the feedback loop is nearly instantaneous. Instead of an architect writing a spec and waiting weeks for a developer to validate it, the "newborn architect" (formerly the developer) can validate assumptions on the spot.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Economics of Hyper-Productivity
&lt;/h2&gt;

&lt;p&gt;The transition to SDD isn't just a qualitative win; it’s a massive economic lever. In a recent month-long experiment with Spec-driven development, I burned through over 1,000% of my monthly token allowance. The cost? &lt;strong&gt;$135&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;To put that in perspective:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Delta&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Direct Cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~$135 (Roughly one hour of a mid-level developer's time)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Output Volume&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Equivalent to &lt;strong&gt;3 months&lt;/strong&gt; of full-time manual engineering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Quality Control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Precision bug identification exceeding manual capacity&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Path Forward: Breadth Over Depth
&lt;/h2&gt;

&lt;p&gt;There will be resistance. Engineers who have spent years perfecting their manual craft may feel marginalized. However, the argument is not that these skills are obsolete, but that they must be elevated. &lt;/p&gt;

&lt;p&gt;We are moving toward a world where &lt;strong&gt;every pull request is a spec&lt;/strong&gt;. The goal is to turn every developer into an architect—someone who understands the entire picture, manages dependencies, and leverages AI to execute with a speed and accuracy that was previously impossible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The conclusion is clear:&lt;/strong&gt; Writing code by hand is becoming "lame." The future belongs to those who positions themselves to master the specification.&lt;/p&gt;




&lt;h2&gt;
  
  
  Entry-Level Jobs Shift to Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Core Thesis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The entry-level software engineer role is structurally obsolete. The new floor for any developer entering the workforce is architectural thinking, not code execution. GenAI compresses the time required to acquire that architectural fluency, but the expectation shift is immediate and non-negotiable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Supporting Arguments&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Everyone becomes an architect" is not aspirational framing. It is a baseline requirement. The question of what happens to junior dev jobs is already answered: those jobs, as traditionally defined, do not survive the transition.&lt;/li&gt;
&lt;li&gt;GenAI accelerates skill acquisition toward architectural competency, but it does not lower the bar. It raises the starting line.&lt;/li&gt;
&lt;li&gt;This aligns directly with SDD mandate: the "developer as architect/orchestrator" identity is not a senior-level privilege. It is the entry condition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Open Questions / Blind Spots&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hiring pipeline implications.&lt;/strong&gt; If architectural thinking is the new floor, how does a company’s current hiring rubric, leveling framework, and onboarding process need to change? The thesis demands a corresponding talent strategy, not just a cultural declaration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The acceleration claim needs stress-testing.&lt;/strong&gt; GenAI helps acquire skills "in no time" is an assertion, not a proof. The gap between GenAI-assisted architectural intuition and genuine systems judgment (failure modes, tradeoffs, organizational context) may be wider than the framing suggests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resistance vector.&lt;/strong&gt; This argument is most threatening to mid-level engineers who built identity around depth. The framing addresses new entrants but sidesteps the harder conversation: what does this mean for the engineer who has been writing code for five years and is not yet an architect?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>softwareengineering</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>There is C, there is C#, and there is Java—which is effectively C♭.</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Thu, 12 Mar 2026 16:12:09 +0000</pubDate>
      <link>https://dev.to/dmitryame/there-is-c-there-is-c-and-there-is-java-which-is-effectively-c-4gc8</link>
      <guid>https://dev.to/dmitryame/there-is-c-there-is-c-and-there-is-java-which-is-effectively-c-4gc8</guid>
      <description></description>
    </item>
    <item>
      <title>The End of Vibe Coding</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Sun, 08 Mar 2026 03:49:49 +0000</pubDate>
      <link>https://dev.to/dmitryame/the-end-of-vibe-coding-2e78</link>
      <guid>https://dev.to/dmitryame/the-end-of-vibe-coding-2e78</guid>
      <description>&lt;p&gt;The "Move Fast and Break Things" era has met its match in Generative AI. We are currently witnessing a split in the engineering world. On one side, there is &lt;strong&gt;Vibe Coding&lt;/strong&gt;: a frantic, prompt-heavy workflow where developers describe a goal, "re-roll" until the code looks right, and pray the edge cases don't implode in production. On the other, there is &lt;strong&gt;Spec-Driven Development (SDD)&lt;/strong&gt;: a disciplined, architectural approach that treats AI not as a magic wand, but as a high-velocity compiler for human intent.&lt;/p&gt;

&lt;p&gt;If you are building mission-critical systems, the "vibe" is no longer enough. Here is why the industry is shifting toward the Power Inversion—and how you can lead the transition.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Lethal Trifecta of Vibe Coding
&lt;/h3&gt;

&lt;p&gt;Vibe coding feels like a superpower during a weekend hackathon. You aren't bogged down by syntax; you are describing a vision. However, when that prototype needs to become a foundation, three structural limits emerge:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;The Assumption Problem:&lt;/strong&gt; AI hates ambiguity. If your prompt is vague, the model will aggressively fill in the blanks with its own assumptions. This leads to code that looks perfect but is quietly, dangerously wrong.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Context Decay:&lt;/strong&gt; AI models have the "memory of a goldfish." As a project grows, the model forgets the architectural decisions you made last week, leading to a messy patchwork of local fixes.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Accountability Gap:&lt;/strong&gt; In vibe coding, the code is the only source of truth. You lose the audit trail of &lt;em&gt;why&lt;/em&gt; a decision was made, making professional governance impossible.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Solution: The Power Inversion
&lt;/h3&gt;

&lt;p&gt;To harness AI without the chaos, we must embrace the &lt;strong&gt;Power Inversion&lt;/strong&gt;. In the old world, "Code was King"—if the docs and the code disagreed, the docs were wrong. In the SDD world, the &lt;strong&gt;Specification is the Truth&lt;/strong&gt;. If the code deviates from the spec, the code is broken and must be fixed.&lt;/p&gt;

&lt;p&gt;This shift transforms the developer's role from a "prompter" to an &lt;strong&gt;Architect of Intent&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  The SDD Framework: Five Non-Negotiables
&lt;/h3&gt;

&lt;p&gt;To move from "unsupervised intern" AI to a "high-leverage collaborator," your workflow must integrate these five pillars:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Executable Intent
&lt;/h4&gt;

&lt;p&gt;Your specifications cannot be dusty PDFs. They must be living, machine-readable documents (Markdown) that live in your Git repo. A spec is "executable" when it is so unambiguous that an AI can derive a technical plan and test suite from it without guessing.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. The Clarification Gate
&lt;/h4&gt;

&lt;p&gt;AI agents are eager to please, which makes them prone to hallucinating business logic. Implement a &lt;strong&gt;Clarification Gate&lt;/strong&gt;: the agent is forbidden from coding until it has surfaced all ambiguities. If a requirement touches "Money," "Security," or "Data Deletion," the threshold for ambiguity is zero.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. The Project Constitution
&lt;/h4&gt;

&lt;p&gt;Every project needs a &lt;code&gt;CONSTITUTION.md&lt;/code&gt; (different SDD frameworks may name it differently, but the concept remains the same). This file encodes your "Architectural DNA"—naming conventions, forbidden libraries, and error-handling patterns. It ensures that code written a year from now feels like it was written by the same senior architect who started the project.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Atomic Decomposition (Micro-PRs)
&lt;/h4&gt;

&lt;p&gt;Speed is a liability if the output is too large to review. Break features into tiny, verifiable tasks. If a human cannot verify a code change in two minutes, the task is too big. This "Small Steps Philosophy" prevents &lt;strong&gt;Agent Drift&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Verification-First Governance
&lt;/h4&gt;

&lt;p&gt;Done doesn't mean "the demo works." Done means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The intent is approved.&lt;/li&gt;
&lt;li&gt;The tests enforcing that intent are passing.&lt;/li&gt;
&lt;li&gt;The code is a derived artifact of the spec.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  The ROI of Rigor
&lt;/h3&gt;

&lt;p&gt;Critics argue that SDD slows you down. The data suggests otherwise. By shifting effort &lt;strong&gt;upstream&lt;/strong&gt;—spending more time on the "What" and the "Why"—you virtually eliminate the downstream costs of debugging, rework, and technical debt. &lt;/p&gt;

&lt;p&gt;Companies like &lt;strong&gt;Airbnb&lt;/strong&gt; and &lt;strong&gt;Google&lt;/strong&gt; have proven this at scale, using structured AI workflows to complete year-long migrations in a matter of weeks. They didn't just get faster; they got more deterministic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion: Your New Superpower
&lt;/h3&gt;

&lt;p&gt;In an era where AI can write code nearly for free, the bottleneck is no longer typing speed or framework knowledge. The new bottleneck is &lt;strong&gt;clarity of thought&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Your value as an engineer is now measured by your ability to define intent with absolute precision. Stop serving the code. Start making the code serve your intent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is your spec a North Star, or just a vague suggestion? The choice defines the quality of everything you build.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>engineering</category>
      <category>testing</category>
      <category>workflow</category>
    </item>
    <item>
      <title>From 18 to 3 Hours: When Gen AI Overdelivers (or Did It?)</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Thu, 14 Aug 2025 02:06:39 +0000</pubDate>
      <link>https://dev.to/dmitryame/how-good-is-gen-ai-at-providing-estimates-and-then-holding-itself-accountable-for-meeting-them-3pee</link>
      <guid>https://dev.to/dmitryame/how-good-is-gen-ai-at-providing-estimates-and-then-holding-itself-accountable-for-meeting-them-3pee</guid>
      <description>&lt;p&gt;I wanted to implement the dark mode on my &lt;a href="https://github.com/echowaves/WiSaw" rel="noopener noreferrer"&gt;pet project mobile app&lt;/a&gt; for a while -- could never find enough time and motivation to do it until now. Last night I finally started chatting to Github Copilot (Claude 4 sonnet model):&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%2Ftx8kqkct2lolikqh11to.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%2Ftx8kqkct2lolikqh11to.png" alt=" " width="800" height="577"&gt;&lt;/a&gt;&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%2Fzu942nkdya4wklwwf44t.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%2Fzu942nkdya4wklwwf44t.png" alt=" " width="800" height="577"&gt;&lt;/a&gt;&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%2Fopbonw2kyav0xwsmfywb.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%2Fopbonw2kyav0xwsmfywb.png" alt=" " width="800" height="544"&gt;&lt;/a&gt;&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%2Fyjsyo60hj6v8o6as7a2h.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%2Fyjsyo60hj6v8o6as7a2h.png" alt=" " width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;18 hours? No way. It will take me at least 4 weeks working on this little project solo for 2-3 hours a day after work. &lt;/p&gt;

&lt;p&gt;Let's see what we (Copilot and I) were able to accomplish:&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%2Fo0pggxkassril2yotgq9.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%2Fo0pggxkassril2yotgq9.png" alt=" " width="800" height="862"&gt;&lt;/a&gt;&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%2Fkriihk5shl4vxwo6lseu.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%2Fkriihk5shl4vxwo6lseu.png" alt=" " width="800" height="862"&gt;&lt;/a&gt;&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%2F9n88f7wh7ve4a96nr4bv.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%2F9n88f7wh7ve4a96nr4bv.png" alt=" " width="800" height="862"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are lot more screens, I'm showing only the most significant ones here.&lt;/p&gt;

&lt;p&gt;It took about 3 hours total, talking to Copilot, asking questions, watching youtube videos while waiting for Copilot to complete the response to a particular prompt, then iterate again, and again, and again, until it was ... done!&lt;br&gt;
It touched pretty much every single file in the project. &lt;br&gt;
It's done a lot of heavy lifting -- produced a lot of code, and did it very fast. &lt;/p&gt;

&lt;p&gt;If you know what you are doing (if you know what questions to ask Copilot in the right way) -- your effectiveness as a software engineer will go through the roof. Some unintended findings -- sometimes, you ask Copilot a question, but it kind of knows where you are going with it, so it does a lot more than you ask. For instance, I asked to apply a dark mode styling for a particular card which it missed on one screen, and it figured out that the rest of the cards need to have the same approach applied -- I didn't complained and accepted the change. &lt;/p&gt;

&lt;p&gt;At this point, I ran out of steam -- going to sleep, and will release all these changes tomorrow night after work. &lt;/p&gt;

&lt;p&gt;P.S. After proof reading this post, I realized -- one really has to keep the architecture clean (and simple) in order for Gen AI to be able to help effectively. GenAI praised this project highly, which was very flattering — all the prior decisions on the project helped to implement non trivial tasks super easily in just one session. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Before vs. After: How AI ‘Vibe-Coded’ a Mobile App Makeover That Defies Expectations!</title>
      <dc:creator>Dmitry Amelchenko</dc:creator>
      <pubDate>Sun, 15 Jun 2025 19:04:58 +0000</pubDate>
      <link>https://dev.to/dmitryame/vibe-coding-ux-improvements-for-mobile-app-before-and-after-side-by-side-comparison-h3j</link>
      <guid>https://dev.to/dmitryame/vibe-coding-ux-improvements-for-mobile-app-before-and-after-side-by-side-comparison-h3j</guid>
      <description>&lt;h1&gt;
  
  
  Claude 4.0 Did in 3 Hours What Would’ve Taken Me Months
&lt;/h1&gt;

&lt;p&gt;As previously stated, UI/UX is not my forte. So, today we will try to use the power of Gen AI to apply facelift on existing react-native project. &lt;/p&gt;

&lt;p&gt;In the previous post we've looked at different AI models available in github copilot in Agent mode &lt;a href="https://dev.to/dmitryame/design-smarter-testing-top-llms-for-mobile-interface-optimization-k89"&gt;https://dev.to/dmitryame/design-smarter-testing-top-llms-for-mobile-interface-optimization-k89&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Based on that post, the best model which will work for us is Claude 4.0.&lt;/p&gt;

&lt;p&gt;It took two iterations -- about 3 hours combined, 22 commits total. In the first iteration I hit the rate limit, so had no choice but to punt it to the next day. Still, the amount of work that I was able to accomplish even before I hit the limit is staggering. What I was able to complete in few hours would usually take me weeks or even months. &lt;/p&gt;

&lt;p&gt;Unlike in the previous post, where I gave different Models a high level prompt, asking to make general UI improvements, this time I went one component at a time and was very specific. I will not be sharing the details of my interactions with the Agent (it would be overwhelming) -- I will be sharing only the end results 2 screens (before and after) with some brief notes, and it will be self explanatory. &lt;/p&gt;

&lt;h1&gt;
  
  
  PhotosList component (landing screen)
&lt;/h1&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%2F4jfbrgebie27prrbt4rg.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%2F4jfbrgebie27prrbt4rg.png" alt=" " width="800" height="854"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  improvements:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;top nav bar&lt;/li&gt;
&lt;li&gt;thumbnails

&lt;ul&gt;
&lt;li&gt;more rounder corners&lt;/li&gt;
&lt;li&gt; redesigned indicator for video&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;footer redesign

&lt;ul&gt;
&lt;li&gt;more consistent&lt;/li&gt;
&lt;li&gt;modern looking buttons&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  animation of the top nav bar (hiding text labels on scroll)
&lt;/h2&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%2Fyqtl8ln3jc6ijmc087cp.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%2Fyqtl8ln3jc6ijmc087cp.png" alt=" " width="800" height="88"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Drawer navigation (hamburger menu)
&lt;/h1&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%2Fgyo04socr8sw0jokxfnv.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%2Fgyo04socr8sw0jokxfnv.png" alt=" " width="800" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Starred Photos (empty list)
&lt;/h1&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%2F3ho0p1brwxlpe8u972pr.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%2F3ho0p1brwxlpe8u972pr.png" alt=" " width="800" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Search Photos (empty list)
&lt;/h1&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%2Fpm1w3qq38089o6po5odl.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%2Fpm1w3qq38089o6po5odl.png" alt=" " width="800" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  improvements:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;input text box&lt;/li&gt;
&lt;li&gt;action button&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Thumbs with comments on Starred and Search Photos
&lt;/h1&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%2Fszk4td91ug19c0r7ishk.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%2Fszk4td91ug19c0r7ishk.png" alt=" " width="800" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Photo Details screen
&lt;/h1&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%2Fkb60u76fveyu5mlhwyqs.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%2Fkb60u76fveyu5mlhwyqs.png" alt=" " width="800" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  improvements:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;dark theme&lt;/li&gt;
&lt;li&gt;top nav bar&lt;/li&gt;
&lt;li&gt;more modern card view approach for components:

&lt;ul&gt;
&lt;li&gt;comments&lt;/li&gt;
&lt;li&gt;AI recognized tag, text, moderation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;label based design for the individual tags&lt;/li&gt;

&lt;li&gt;better colors&lt;/li&gt;

&lt;li&gt;bottom footer redesign&lt;/li&gt;

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

&lt;h1&gt;
  
  
  Add comments screen
&lt;/h1&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%2Fxs90qhop7ze6p0opbokd.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%2Fxs90qhop7ze6p0opbokd.png" alt=" " width="800" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Zoom View Screen
&lt;/h1&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%2Ffp2a3b86z9o3y37xwbac.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%2Ffp2a3b86z9o3y37xwbac.png" alt=" " width="800" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Overall Tablet improvements
&lt;/h1&gt;

&lt;h3&gt;
  
  
  photos list
&lt;/h3&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%2F7t5s2816wpelfjjla8av.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%2F7t5s2816wpelfjjla8av.png" alt=" " width="800" height="618"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  detailed photo view
&lt;/h3&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%2Fc7m6fwhqn18uin3a3rp1.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%2Fc7m6fwhqn18uin3a3rp1.png" alt=" " width="800" height="618"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Works on Android too (love react-native)
&lt;/h1&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%2Ffvz4rqvw8lip6g6wywgi.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%2Ffvz4rqvw8lip6g6wywgi.png" alt=" " width="800" height="1718"&gt;&lt;/a&gt;&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%2Fgo77tnjwnmchlqlprwb4.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%2Fgo77tnjwnmchlqlprwb4.png" alt=" " width="800" height="1718"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Extras bonus
&lt;/h1&gt;

&lt;p&gt;I noticed, as the Agent was making improvements, in one of the commits it added support for Haptic feedback -- I will take it as a free bonus. Unfortunately not able to test it until the changes rolled out to prod, but hopefully they just work. &lt;/p&gt;

&lt;h1&gt;
  
  
  Using the right LLM for the right purpose
&lt;/h1&gt;

&lt;p&gt;After making all these cool updates, releasing the mobile app to the app store is still task on its own. Especially after all these UI changes -- need to update the app store screenshots. I don't even have the right tools for slicing and dicing the images, but I do have ChatGPT, let's give it a try. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;prompt:&lt;/strong&gt; generate iTunes store screen shot image, use first image as the the most up to date screenshot and the second image as a guidelines for design, the dimensions should be 1242 × 2688px&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%2F0gr7cnw26io0h2vxy2rr.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%2F0gr7cnw26io0h2vxy2rr.png" alt=" " width="800" height="785"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chat GPT:&lt;/strong&gt;&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%2Fokhlnke3dxi7aa68u6h8.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%2Fokhlnke3dxi7aa68u6h8.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;prompt:&lt;/strong&gt; take the mobile phone content area only from the first image and apply it to the second image in the correct place of the phone screen&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chat GPT:&lt;/strong&gt; &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%2Fsezj29vc746thl8ajqfz.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%2Fsezj29vc746thl8ajqfz.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;prompt:&lt;/strong&gt; you lost the headline from the second photo, apply it to the results&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chat GPT:&lt;/strong&gt;&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%2F7qwbb4dqojbmc271ev02.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%2F7qwbb4dqojbmc271ev02.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;br&gt;
Well, not exactly what I was hoping for, and kind of funny results, oh well, some day soon I'm sure it will be able to do it correctly. &lt;/p&gt;

&lt;h2&gt;
  
  
  Let's try the same prompt with Claude 4.0 model in copilot Agent mode.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;prompt:&lt;/strong&gt;&lt;br&gt;
generate iTunes store screen shot image, the output dimensions should be 1242 × 2688px, apply the screenshot which is #iphone1_1.png to the phone screen image on the #iphone1.png maintaining the proper expected screen size, position, rotation, preserve the headline on the top of the iphone1.png, final image output file name iphone1_2.png&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude:&lt;/strong&gt; Sorry, your request failed. Please try again. Request id: 4bd0b681-6758-4471-9c91-9c17a0231be9&lt;/p&gt;

&lt;p&gt;Reason: Please check your firewall rules and network connection then try again. Error Code: net::ERR_HTTP2_PROTOCOL_ERROR.&lt;/p&gt;

&lt;p&gt;and it fails today... it probably ran out of limit for the day... will have to try again tomorrow... stay tuned for more updates.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>reactnative</category>
    </item>
  </channel>
</rss>
