<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Developer-Experience on rjrowland</title><link>https://rjrowland.com/tags/developer-experience/</link><description>Recent content in Developer-Experience on rjrowland</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 28 Jul 2026 09:00:00 -0500</lastBuildDate><atom:link href="https://rjrowland.com/tags/developer-experience/index.xml" rel="self" type="application/rss+xml"/><item><title>If Running Tests Takes Willpower, They're Too Slow</title><link>https://rjrowland.com/posts/engineering-practices-fast-feedback-loops/</link><pubDate>Tue, 28 Jul 2026 09:00:00 -0500</pubDate><guid>https://rjrowland.com/posts/engineering-practices-fast-feedback-loops/</guid><description>&lt;h2 id="the-layers-of-feedback"&gt;The layers of feedback&lt;/h2&gt;
&lt;p&gt;The practices in this series keep circling back to feedback, for a reason: the speed of your feedback loop sets the speed of your learning, and the speed of your learning sets almost everything else about how effective you are.&lt;/p&gt;
&lt;p&gt;Feedback loops come in layers, and the right fix is different at each one.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Editor feedback.&lt;/strong&gt; Compiler errors, &lt;code&gt;go vet&lt;/code&gt;, &lt;code&gt;staticcheck&lt;/code&gt;, inline warnings. Zero latency, the tightest loop that exists. Investing in it, stricter linting, more complete type coverage, pays back with compounding interest.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unit tests in watch mode.&lt;/strong&gt; Sub-second, on the file you just changed. If your unit tests don&amp;rsquo;t run automatically on save (&lt;code&gt;gotestsum --watch&lt;/code&gt;, or your editor&amp;rsquo;s built-in runner), you&amp;rsquo;re leaving real developer experience on the table.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local rebuild-and-run.&lt;/strong&gt; A change reflected without a full redeploy. Trivial to script with &lt;code&gt;air&lt;/code&gt; or &lt;code&gt;reflex&lt;/code&gt;, and often just left off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integration tests.&lt;/strong&gt; Should run in seconds, not minutes. A slow test doesn&amp;rsquo;t get run. That&amp;rsquo;s not a discipline problem, it&amp;rsquo;s an incentives problem: a four-minute suite gives engineers a reason to skip it before pushing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI.&lt;/strong&gt; Parallelize aggressively. A twenty-minute pipeline is a morale tax paid on every single PR, and the cost isn&amp;rsquo;t just the twenty minutes, it&amp;rsquo;s the context switch of sitting there waiting.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The heuristic: if running tests takes willpower, the tests are too slow. Running them should be the path of least resistance, not a deliberate act you have to talk yourself into.&lt;/p&gt;</description></item></channel></rss>