5 hours at the software factory
“In a world where things are getting better, faster…”
My brain doesn’t even process the rest of the speaker’s sentence because the dissonance is so loud against my personal experience at this moment.
I have paused to stop and review the state of my app after running parallel agents for the past 3 hours.
My app looks like trash.
·
I’m in a sunny white event space at the Armour Yards in Atlanta. Coincidentally, a few suites down from the old Fullstory office where I worked 9 years ago.
The event is Frontier Build ATL, an intensive hackathon hosted by the team at Obvious.
While I was at RenderATL last month, I saw a presentation by Obvious which was largely a theoretical description of how software work changes when nobody needs to code by hand anymore. The message was: the work shifts to aligning around excellent specs, because swarms of agents can handle the rest from building to QA.
This piqued my interest. So when I saw Obvious was giving away free credits to builders who wanted to play with their software factory for a day, I signed up instantly.
At this point, I’ve been vibe coding sites and apps almost daily. It’s common that I have Claude Code running on one laptop while I’m working with Kilo on another, but I hadn’t yet tipped over into multiple parallelized agents working on a single project.
The event page said, “Bring a repo and a list of features you want to build.”
I’ve got a little side project app, Kitschy, that I’ve been working on every week. I’m thinking maybe I could use these free credits to knock out 20 feature ideas in one day.
In the room, there are artful standing banners that read >frontier in serif font. Sky high quiches and pastries spread out on tall tables. Ain’t No Mountain High Enough tinkling on a portable Marshall bluetooth speaker.
By 10:41 I’m set up with a shiny new Obvious account which looks surprisingly identical to every other vibe coding tool available on the market right now.

I notice there’s a modal suggesting I could connect my calendar, but I can’t imagine anything good coming of that. I’m already drowning trying to manage client meetings and Calendly bookings. The last thing I need is a swarm of agents in that sacred space.
Next, we’re directed to enable Autobuild. This lines up more with the pitch I heard at Render. Welcome to the software factory.

To test the waters, I give Obvious a lowball feature to implement. Kitschy is a kitchen inventory app and every item in the inventory can currently be designated as purchased or homemade. Let’s add a designation for items that were grown in the garden, like the tomatoes we’ve been eating at our house this week.
Obvious starts running a deep scan of my project so it can learn its way around.
My first reaction is this thing feels super slow. Compared to my Kilo code extension in VS Code where the stream of context runs faster than I can read, this app is keeping a lot more work behind the scenes and buffering on the frontend. It feels like it’s thinking really hard.
At some point the spinning indicators are still running but it has produced something that looks a little bit like a Linear project.

It has also generated a spec file which reads like straight up slop. Imagine getting a four page PRD from a pretentious business consultant who got their associate product management job through a family friend without having to interview for the role. It’s overwrought, overly formatted, full of em dashes and practically unreadable. Total overkill for something as simple as adding a new value to an existing field.
Is the problem the model (GLM-5.3)?

Around this time, a member from the team at Obvious pops by my table to check in. I voice my complaints and get some advice.
“That’s just how it works initially. You can add writing rules to Obvious and teach it not to write that way.”
“Yes, the agent is slow. It works better when you run tasks in parallel so you’re not waiting around.”
Bet.
Over in Linear, I’ve got 21 different feature request ideas drafted on issues. I start copy/pasting each of my ideas into Obvious and letting it cook.
The hosts periodically pause to celebrate the attendees with token usage on a leaderboard, “You all have crossed 1 billion tokens!”
I have 200 credits on my account and I’ve barely made a dent.

While the agents are running, we get to hear a few presentations from different members of the Obvious team. The first is a whiteboard talk about why you should customize your loops. Then there’s a presentation on QA which inspires me to add a task for the agents to check for Accessibility. (Out of the box, there’s no explicit check for ADA compliance built-in.)
By the time lunch arrives, the Autobuild feature in Obvious has shipped several GitHub PRs without even stopping to show me what it built.
The next thing on the agenda is a talk and Q&A with Jon Bell.
It’s at this point in the day, I start to feel like I’m living in an alternate reality. Like one of those later season episodes of The Next Generation where Beverly Crusher is being gaslit by her disappearing crew, stuck in a warp bubble that’s collapsing on itself.
I’m listening to leaders who are clearly charismatic, intelligent and visionary. They are describing in great detail how the cost of software will be so cheap to produce we’ll start to get helpful apps in corners of our lives where it wasn’t economically feasible before.
A designer can build their own ergonomic version of Figma with Excalidraw that perfectly fits their workflow. The CEO has their own dashboard app with a bird’s eye view into everything that matters to them. Apps are so cheap and easy to generate that it’s okay for them to be disposable. Fail forward. The city of Rome was built on top of the ruins of Rome.
In this new world, the aim is not to build software that’s maximally precise or efficient. Perfection is an anti-goal. The question, according to Jon, is a matter of underwriting. What is the lowest possible standard for the product that you’re also willing to underwrite?
You don’t need to understand how a plane works to trust you’ll arrive safely at your destination. So why do you need to understand how your software works under the hood?
15 years ago, we’d talk about minimum viable product (MVP) as a critical part of the development process. You ship the minimum version of the solution and get it into the hands of real people as soon as possible so you can test demand and iterate. The assumption was that you’d continuously improve that product and make it increasingly more valuable until it became a “must have” in somebody’s life.
Today everything is MVP all of the time. And there are also infinite timelines and multi-verses for anything you can build. Because it’s so trivial to add a new feature, any customer should be able to fork your product, build their own customized layer on top of it and make it work however they want. In the past, a business might have said, “It’s impossible to provide technical support for 1000s of custom implementations of our product…” but today this doesn’t matter because we don’t actually expect human tech support at all. Everybody gets an AI agent that can tell you why your special fork of the product is broken.
The only real limit is the limit of human attention.
At some point in the discussion, Jon casually mentions he’s been consulting on autonomous weapons at the Pentagon and an ache of terror lands like lead in my guts.
The leaders pushing for “good enough” in the most extreme galaxy-brained philosophy PhD way are also the people we trust to make the call on how agentic AI gets applied in warfare—against enemies and citizens.
We don’t need to understand how the weaponized drones work under the hood. As long as they send a projectile at the right target.
Oh, that drone hit an elementary school? Well, that’s a known trade off. “AI can make mistakes.”
On a much less serious and lower stakes level, my AI agents have been busy making a lot of mistakes.
My autobuild task queue in Obvious is green because the agents have finished their jobs. But each task summary includes a warning. One PR has a merge conflict. Another needs to rebase.
I run npm run dev in my terminal to preview what got built and the app looks obviously worse.
My inventory table now has cutoff dropdown menus and illegible input fields to increment item quantities. The agent added a “workspace” so Kitschy users can share spaces but it replaced the Sign Out link in the nav instead of introducing new UI. It’s a mess.
I’ve got options. I could keep cooking and put more effort into providing better specs. With 190 credits left, there’s no reason I couldn’t write out 20 more tasks and give the Obvious agents better instructions like a reference photo showing how workspace management should look or example components for incremental quantities.
Or, I could walk away from the factory and go back to my humble workshop. Thankfully, I was smart enough to clone my repo before I connected Obvious to my GitHub. The last stable version of my side project is only one cd away.
Whether I’m working with a software factory or vibe coding and deploying, the exciting part of the work is when you get to look at what the agent built and shape the design. I don’t want to read and rewrite a lengthy specs document when a bit of tinkering will do.
For me, designing in the browser before deploying the code still feels more natural and less wasteful.
I could stick with the software factory approach and skip reading the specs, but that just makes the loop of coding → checking what got built → iterating longer and more expensive with generative cruft piling up on my factory floor.

Time to pack it up for the day.
·
On the Lyft ride home, I’m sitting in the backseat of a sticky Tesla Model 3. The air conditioning is on blast and toxic, heavily scented with the sickening chemicals of a bubblegum sweet air freshener. This odor will cling to my hair and haunt me until I’m able to take a shower.
On my phone I’m Googling, “Tesla emergency exit car door” and praying the machine doesn’t become a fiery death trap before I get home.
My email inbox is lighting up with GitHub notifications from the autobuild bot, still at work.

As we wind through Ansley Park, I look out the window and count how many of the historic brick houses have been painted white with black gutters. Color draining from the world, like Pleasantville in reverse.
Desperately I want to believe the world could get better, faster.
I believe the optimists will win. I believe we can solve problems that seemed impossible before.
But today the gap between the vision for abundance and the experience of structural decline feels like a distance measured in lightyears.
The news says the Earth is warming. Will we adapt or will we cook ourselves to death?
Hero photo by Johannes Andersson on Unsplash.