<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Delivery on rjrowland</title><link>https://rjrowland.com/tags/delivery/</link><description>Recent content in Delivery on rjrowland</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 23 Jul 2026 09:00:00 -0500</lastBuildDate><atom:link href="https://rjrowland.com/tags/delivery/index.xml" rel="self" type="application/rss+xml"/><item><title>Ship Small, Ship Boring, Know When You're Done</title><link>https://rjrowland.com/posts/engineering-practices-delivery-feedback/</link><pubDate>Thu, 23 Jul 2026 09:00:00 -0500</pubDate><guid>https://rjrowland.com/posts/engineering-practices-delivery-feedback/</guid><description>&lt;h2 id="vertical-slices-not-horizontal-layers"&gt;Vertical slices, not horizontal layers&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s a failure mode I&amp;rsquo;ve watched play out on almost every large feature: the team builds all of one layer before starting the next. Every database table first, then every endpoint, then every screen. Progress looks real — the database layer is &amp;ldquo;done,&amp;rdquo; the API is 70% there — right up until week six, when integration starts. The data model was built on assumptions that turned out wrong. The API contract doesn&amp;rsquo;t match what the UI actually needs. Two weeks of rework follows.&lt;/p&gt;</description></item></channel></rss>