Over the past few months, I’ve been reflecting on how long it really takes to build good applications. Something I’ve noticed is that as you approach what I’d call “final fidelity”—the stage where users actually experience the finished product—the process slows down in ways that aren’t purely about engineering.
Early Speed vs. Final Polish
Vibe coding and modern tools definitely help accelerate the path to a Version 1. You can get something functional into users’ hands faster than ever before. But once you get past that first milestone, the climb to true final fidelity takes significantly longer. It’s less about just writing code and more about refining product details that directly shape the user experience.
This stage demands both careful craftsmanship in code quality and a high degree of product intuition. High volume coding alone isn’t enough—you need to deliberately reason about the small details, the polish, and the edge cases that users will feel, even if they can’t articulate them.
Timeframes Haven’t Collapsed—Yet
In my own experience building a couple of apps recently, I’ve noticed that timelines haven’t shrunk as much as I expected. An application that used to take me around three months is still taking about two to three months. I am slightly faster, yes, but the “missing details” still account for a huge amount of time and thought. They simply can’t be skipped or automated away.
The Unicorn Engineer’s Edge
This connects with a recent discussion I was part of about “the best builders” or so-called unicorn engineers. The distinguishing trait of these builders isn’t just technical speed. It’s their almost intuitive understanding of the user—being able to reason at a very high level about product experience while still executing on the technical details. That combination leads to products that feel really good in users’ hands.
And ultimately, that’s what sets apart good applications from great ones.
If that’s the case, AI path might take more efforts in longer duration project as it reduces repeatability and increases cognitive load on the developers (need to look at both prompts and codes to understand how we got bugs).