(Disclosure: I work for Google, but these are my personal opinions.)
Many people in the tech world believe in launching and iterating. The idea is to get something out in users’ hands as soon as possible, rather than running the risk of building a polished implementation of a mistaken idea (as Paul Graham puts it). After all, there are worse things than your app not scrolling smoothly or tap areas being too small — that nobody cares about the product you’ve built. If the worst thing users have to say about your app is that it doesn’t scroll smoothly, then you’re in good shape.
But the result of this philosophy is that users are exposed to a barrage of half-assed apps and web sites. I think there’s a difference in incentive between the teams building the products and users. Product teams want to obtain feedback as quickly as possible, and fail fast if needed. But I don’t want to be a guinea pig. And neither does my mom. Most people want stable, reliable, polished products.
I think launching and iterating should be in terms of features, not quality. It’s fine if a company wants to launch an app with fewer features, and iterate to add the most badly needed feature, one at a time. But each feature they ship should be well thought-out, both from a product and a UX perspective: it should be the simplest way of achieving the given goal. Users should not be asked to make confusing choices. The copy should be clear, and expressed in terms users think about in their day-to-day life. Every screen should be simple and cleanly laid out. Wizards, if they exist, should have the fewest number of steps. Every page should scroll at 60 FPS. And so on.
One way to think of this is that each iteration should be a finished product by itself, albeit one that has fewer features. It should be as if you’d set out to build a product with fewer features, as opposed to building a half-assed product.
It’s fine to have a separate beta program for the small fraction of users who want to live on the bleeding edge, who want to be the first to try out new features and new builds and provide feedback and shape the development of the product. This will help those users get what they want, and the company building the product can get feedback. But the vast majority of users want something stable and well-thought out and polished and that lets them achieve their goals with a minimum of fuss.
Apple helps here, by setting high standards for the iOS app store. As they say, if your app is less than very good, it may not be approved. Minimum standards are important, both because otherwise you’ll get people shipping crappy stuff in the name of launch and iterate, and also because it sets a standard for every other developer to at least meet.
Let’s raise the bar, and launch and iterate products that are awesome at every iteration, rather than half-assed and slowly sucking less over time.