<?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>Forem: Julian</title>
    <description>The latest articles on Forem by Julian (@devblac).</description>
    <link>https://forem.com/devblac</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3261208%2F6e715756-70c0-49bd-8b91-43338cb20243.png</url>
      <title>Forem: Julian</title>
      <link>https://forem.com/devblac</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/devblac"/>
    <language>en</language>
    <item>
      <title>Spec Coding with Kiro: My Experience Building LiftFire</title>
      <dc:creator>Julian</dc:creator>
      <pubDate>Sun, 14 Sep 2025 16:00:00 +0000</pubDate>
      <link>https://forem.com/devblac/spec-coding-with-kiro-my-experience-building-liftfire-g0n</link>
      <guid>https://forem.com/devblac/spec-coding-with-kiro-my-experience-building-liftfire-g0n</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Vibe coding (“one-sentence apps”) is fun, but it doesn’t scale.&lt;br&gt;&lt;br&gt;
Spec coding is a workflow where &lt;strong&gt;.md files (product.md, tech.md, requirements.md, etc.) act as living specs that guide the build&lt;/strong&gt;, supported by automated hooks.  &lt;/p&gt;

&lt;p&gt;I tested this by building &lt;strong&gt;LiftFire&lt;/strong&gt;, a gym-tracking app. Here’s what I learned:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A small site can run on ~50 specs.
&lt;/li&gt;
&lt;li&gt;A real-world app may need &lt;strong&gt;500+ specs and 700+ vibes&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Specs handle the big architecture; vibes nail the details.
&lt;/li&gt;
&lt;li&gt;Humans remain the difference-maker.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It convinced me spec coding is the path forward for AI-assisted development.  &lt;/p&gt;




&lt;h2&gt;
  
  
  From vibe coding magic to spec coding reality
&lt;/h2&gt;

&lt;p&gt;The first time I saw vibe coding, it felt like magic: &lt;em&gt;“Build me a site” → boom, a site appears.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
But that magic doesn’t last when you go beyond toy demos.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One-sentence apps are fun demos, but they’re a dead end for serious development.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Real apps need structure. They need more than vibes.&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%2Fliwy1aa8ladf4zl38l4e.jpg" 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%2Fliwy1aa8ladf4zl38l4e.jpg" alt="Specs, agent hooks and agent steering" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s where &lt;strong&gt;spec coding&lt;/strong&gt; comes in. Tools like &lt;strong&gt;&lt;a href="https://kiro.dev/" rel="noopener noreferrer"&gt;Kiro IDE&lt;/a&gt;&lt;/strong&gt; are exploring this path, and here’s how it worked for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Steering files&lt;/strong&gt; (&lt;code&gt;product.md&lt;/code&gt;, &lt;code&gt;tech.md&lt;/code&gt;, &lt;code&gt;security.md&lt;/code&gt;, &lt;code&gt;structure.md&lt;/code&gt;) act like living design docs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specs&lt;/strong&gt; break down systems into smaller apps, features, or modules — each with its own &lt;code&gt;requirements.md&lt;/code&gt;, &lt;code&gt;design.md&lt;/code&gt;, and &lt;code&gt;tasks.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hooks&lt;/strong&gt; (aka vibe requests) trigger things like tests, commits, or formatting — either manually or automatically when conditions are met.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn’t about replacing engineers. It’s about moving the conversation up from “lines of code” to “intent + architecture.”  &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%2F9jwekidtq3e36c0my84x.jpg" 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%2F9jwekidtq3e36c0my84x.jpg" alt="tech.md and product.md files" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  My scaling law: 50 specs vs 500 specs
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;A small site = ~50 specs.&lt;br&gt;
A real-world app with frontend, backend, DB, AWS, and social features = &lt;strong&gt;500+ specs and 700+ vibes&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Specs move the big rocks.&lt;br&gt;
Vibes hammer the details.&lt;br&gt;
And the &lt;strong&gt;human supervising the process&lt;/strong&gt; makes or breaks the outcome.&lt;/p&gt;

&lt;p&gt;Automation is powerful, but it’s human judgment that gives the project meaning.&lt;/p&gt;




&lt;h2&gt;
  
  
  Specs vs Tickets
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Specs in &lt;code&gt;.md&lt;/code&gt; files beat tickets in Jira. Period.&lt;br&gt;
Tickets scatter intent; specs centralize it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Jira and Trello were built for human workflows, not AI-driven ones. Specs are &lt;strong&gt;closer to code&lt;/strong&gt;, easier to maintain, and directly steer the build.&lt;/p&gt;

&lt;p&gt;I’d even predict:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In 5 years, most startups won’t start with a codebase. They’ll start with a stack of &lt;code&gt;.md&lt;/code&gt; specs.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What it felt like building LiftFire
&lt;/h2&gt;

&lt;p&gt;To test this workflow, I built &lt;strong&gt;LiftFire&lt;/strong&gt;, a gym-tracking app.&lt;br&gt;
Yes, I dragged my nephew into the gym for testing — accountability is a feature.&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%2Flpkumbbpm393ga8nar1r.jpg" 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%2Flpkumbbpm393ga8nar1r.jpg" alt="Home section" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The MVP is functional: track exercises, goals, milestones. It’ll soon be published as an APK on Google Play.&lt;br&gt;
But the most important part wasn’t the app itself — it was the experience of coding differently:&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%2Fdqoes1c1c25ota7gez6p.jpg" 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%2Fdqoes1c1c25ota7gez6p.jpg" alt="Workout section" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing specs in &lt;code&gt;.md&lt;/code&gt; files instead of losing intent in tickets.&lt;/li&gt;
&lt;li&gt;Watching vibe hooks auto-generate tests when files changed.&lt;/li&gt;
&lt;li&gt;Realizing commits, linting, and other chores could fire automatically while I stayed in “design mode.”&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%2Fow4rx88jgsd4or1tued7.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%2Fow4rx88jgsd4or1tued7.png" alt="Workout in progress" width="397" height="845"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It felt less like coding alone, more like orchestrating with a &lt;strong&gt;super-fast junior developer who never sleeps — but still needs guidance&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Most dev tools focus on speeding up typing.&lt;br&gt;
Spec coding focuses on &lt;strong&gt;raising the level of abstraction&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Engineers spend more time thinking about architecture and context.&lt;/li&gt;
&lt;li&gt;AI handles repetitive mechanics.&lt;/li&gt;
&lt;li&gt;Human supervision ties it all together.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;What three devs + Jira do in six months, one dev with spec coding could do in two weeks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It requires more effort up front, but it produces &lt;strong&gt;more robust software, faster, with fewer people stuck in glue work&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And still — people are the key. Without human vision, judgment, and long-term stewardship, there’s no lasting value.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Vibe coding was the fun demo.&lt;br&gt;
Spec coding is the &lt;strong&gt;step change&lt;/strong&gt; toward real, large-scale AI-assisted software.&lt;/p&gt;

&lt;p&gt;It doesn’t mean engineers go away — it means our role shifts: less boilerplate, more architecture, more decisions that matter.&lt;/p&gt;

&lt;p&gt;And from what I’ve seen building LiftFire with Kiro, projects that embrace this model will ship faster, stronger, and leaner than those that don’t.&lt;/p&gt;

&lt;p&gt;👉 What do you think: are specs the new tickets, or am I overselling the future? Would you trust 500 specs / 700 vibes to build your next app?&lt;/p&gt;




&lt;p&gt;If you’re curious about the &lt;em&gt;personal side of this story&lt;/em&gt; — why my nephew got dragged into the gym with me, and how that shaped the LiftFire app, I wrote about it on &lt;a href="https://devblac.github.io/post/building-a-gym-tracker-with-spec-coding/" rel="noopener noreferrer"&gt;my personal blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>kirodotdev</category>
    </item>
  </channel>
</rss>
