When Apple launched Maps in 2012, it replaced Google Maps with a product that directed drivers into lakes, misidentified landmarks, and turned entire cities into abstract art. The backlash was immediate and loud. Apple’s CEO Tim Cook issued a public apology within weeks. What almost nobody noticed at the time was that Apple kept the feature live, iterated aggressively, and rebuilt it into one of the most-used mapping services in the world. The launch wasn’t a failure. It was, in retrospect, a strategy.
This pattern repeats across the industry with enough consistency to suggest it isn’t accidental. Tech companies release buggy software on purpose, and the business logic behind it is airtight. Understanding why requires looking at how software development actually works, what it costs to wait, and what companies gain by releasing early.
The Cost of Waiting Is Higher Than It Looks
The traditional software development model, sometimes called “waterfall,” demanded that teams fully specify, build, test, and polish a feature before users ever saw it. The logic was sound in theory: ship something complete and avoid embarrassment. In practice, this model produced software that was technically polished but often wrong. Teams spent months perfecting features users didn’t want, in interfaces users found confusing, solving problems users didn’t actually have.
The shift toward “agile” development in the early 2000s reframed the entire conversation. Instead of optimizing for completeness at launch, companies began optimizing for learning speed. A feature that ships at 70 percent and generates real user feedback within a week teaches you more than a feature that ships at 100 percent six months later. The time cost of those six months isn’t just the salaries of the people building it. It’s the market intelligence you didn’t collect, the competitors who moved faster, and the assumptions baked into your design that turned out to be wrong.
Facebook’s internal motto “move fast and break things” became notorious, but the underlying economics were real. Every week a feature stayed in internal testing was a week competitors could close the gap. The deliberate trade-off was accepting some user friction in exchange for compressing the feedback loop to days instead of quarters.
Real Users Do What Internal Testers Never Will
There is a second, less-discussed reason companies launch incomplete features: internal testing is structurally limited. Software testers know what they’re looking for. They approach a product with expectations, documentation, and professional caution. Real users approach it with none of those things.
This matters more than it sounds. A team of fifty engineers will collectively make the same assumptions about how a feature works, because they built it and they share a context. One million users will find failure modes the engineers genuinely never imagined, because they bring fifty million different contexts, devices, network conditions, and use cases. The bugs that surface in the first 72 hours after a public launch are often bugs that couldn’t have been caught any other way.
This is actually why tech companies deliberately slow down their own websites during user testing, a practice that reveals how users behave under realistic conditions rather than optimal lab conditions. The same principle applies to feature launches. Controlled environments produce controlled results. You learn what you designed for. Public launches produce chaos, and chaos is informative.
Google has turned this into a formal methodology. Products often spend years in public “beta,” a label that sets expectations while allowing Google to collect behavioral data at scale. Gmail was in beta for five years. During that period it wasn’t hidden from users; it had hundreds of millions of them. The beta label wasn’t a disclaimer about quality so much as a signal about development philosophy.
The Strategic Value of User Attachment
There is a third dynamic at work, one that gets discussed even less openly. When users adopt a broken feature and it improves around them, they feel ownership over the outcome. The product got better, and they were part of that. Research in behavioral economics describes this as the “IKEA effect”: people assign higher value to things they helped create, even partially.
Tech companies exploit this deliberately. Early adopters who reported bugs, submitted feedback, or simply tolerated rough edges become advocates when those edges get smoothed. They watched the product grow up. That emotional investment is hard to replicate through any amount of polish at launch.
This is also why tech companies deliberately hide their best features from new users. The staged reveal creates a sense of discovery over time, which deepens engagement. A product that reveals itself gradually feels like a relationship. A product that shows everything on day one has nowhere to go but familiar.
When the Strategy Backfires
None of this means the approach is without risk. The calculus changes significantly based on what the broken feature actually does.
For a social feed ranking algorithm that surfaces slightly irrelevant content, user tolerance is high and the cost of iteration is low. For a medical device, a financial transaction system, or a security-critical authentication feature, the same logic collapses entirely. Boeing’s 737 MAX certification failures and the subsequent crashes are an extreme case, but they illustrate where the “ship and fix” mentality hits a hard wall. Some failure modes aren’t recoverable.
Even in consumer software, trust erosion has real costs. Companies that repeatedly launch features that are visibly unfinished train users to distrust announcements. Early enthusiasm calcifies into cynicism. The feedback loop that makes rapid iteration valuable depends on users believing the company will actually fix things. Once that belief fades, the system breaks down.
There is also a talent dimension. Engineers who are repeatedly asked to ship work they know isn’t ready eventually lose the professional standards that made them good at their jobs. The norm of “good enough for now” tends to expand over time. This connects to a broader pattern in how tech companies pay more for worse programmers once they hit 100 employees, as organizational incentives drift away from craft and toward throughput.
The Honest Version of the Strategy
The companies that execute this approach well share a few common traits. They are transparent with users about what is and isn’t finished. They actually fix what breaks, on a timeline users can observe. They restrict the strategy to features where failure is recoverable, and they treat user feedback as the actual product, not just a side effect of launching early.
The companies that do it badly use “iterative development” as a cover for chronic underinvestment, ship broken features and then quietly deprioritize the fixes, or apply the logic to systems where the cost of failure is too high for the math to hold.
Launching broken features isn’t inherently reckless or responsible. It depends entirely on whether the company has built the infrastructure, the feedback systems, and the institutional honesty to actually close the loop. Most of the time, the question isn’t whether to ship early. It’s whether you’ve earned the right to ask your users to tolerate it.