A framework for building high-quality products
One of the great paradoxes about quality is that everyone can tell when a product is high quality – the iPhone, Swiss watches, Scandinavian furniture, etc. but evidently creating a high quality product is relatively a rare feat. I’ve been thinking about what separates high quality products from the rest and can we create processes to create high quality software at product orgs consistently. Specifically, at early stage companies which have very little data, an objective definition of high quality can be hard to specify. Putting together a framing that can help guide early stage teams to a North Star definition of high quality.
Thinking about the products most people deem as high quality, they share these four characteristics.
Functional: High quality products do the job that these products were hired for very well. The Swiss watch keeps time. Patagonia jackets keep me warm. Function is the foundation on which a high quality product is built. High quality products engender trust with users because you know it always works.
Performant: All the high quality products seem to excel on some vector of performance. They are either the fastest, most durable or very reliable on a variety of conditions. Swiss watches are meant to last for a lifetime. The Tesla strives to be the safest car in a variety of road conditions.
Cohesive: Products are typically a collection of features. One of the hallmarks of high quality products is that the features feel cohesive. They seem to be part of one product instead of disparate functions. Apple products embody this in the best way. Apple integrates the hardware and the applications(and even its product suite) into one cohesive experience. Swiss watchmakers care as much about the dial and the strap/bracelet on the watch as they care about the quality of the timekeeping.
Well-Crafted: The word craft for me evokes an early childhood memory of watching a Kashmiri weaver knotting and weaving colorful woolen threads of various hues into a rug (Kashmiri rugs are the equivalent of Persian rugs in South Asia). Like a skilled weaver, craft is about weaving together function, features and performance into a cohesive product. Craft is about bringing together beauty and function by caring about the details, thread by thread. It’s probably the most subjective characteristic that separates one high quality product from another because how you trade-off beauty and function shows up as the creator’s individual signature on the product. For ex. Scandinavian furniture leans more on function and clean lines over ornate designs such as in French furniture, though both are considered high quality in their own ways.
When applied to building products, this is how I see the above characteristics manifest in the development cycle and things you can do to keep bending the product/feature towards a high quality experience for your users.
• Start with absolute clarity on who the user is and what goal you are trying to solve for the user
• Once you know that, put yourself in the shoes of the user. Think about different types of people who might be users of your feature/product.
• Dogfood, dogfood and more dogfood using that lens. Ask yourself again and again – What are they trying to do in their real lives ? Are you solving the problem this person has in their lives ? Note: dogfooding is not the same as testing. Testing is also very important, however, the distinction with dogfooding is where you evaluate the product as a user would , and not just against a checklist of test conditions. Dogfooding helps you evaluate the feature in context of the overall product, whereas testing doesn’t.
• Get feedback from others through design crits where you review experiences you are building and through others around you dogfooding to help you avoid personal blind spots.
• Fix every bug that prevents the user from having a functional experience
• Does your feature work on a variety of conditions – spotty network, low bandwidth, across device types, small screens/large screens
• Have a point of view about what performance metrics matter for the feature you are building. If you are creating a backup feature, the time to restore a backup should be a metric you should care about. If you are building Stories from the ground up , you should care about the time it takes to compose and post one.
• After you launch a product, measure these metrics and fix them if they aren’t trending in the right direction.
• However, metrics are not the only criteria that should be used to evaluate, but should be considered one signal among other performance indicators including bugs and crashes
• UX: How does this fit into the overall app ? Does it feel like an integrated experience or a disjointed experience? Will it make the rest of the app feel cluttered or break the flow of another part of the app or the user’s existing mental models about the product. ? Pay attention to the palettes, the choices of UI patterns to tie it all as one experience for the user. Iterate and iterate until you have an experience that feels cohesive.
• Performance: Is this going to slow down the rest of the app? Is it going to impact key metrics – time to load the chatlist screen, time to compose and send a message? Will it crash/block the rest of the app ? Measure and fix bugs and metric drops that would impact the rest of the app.
• Craft is achieved by paying attention to the details – the pixels on the screen, the language, the transitions. If you’ve built a high quality experience, you should achieve “flow” – when the product does what the user would expect of it. The UI should feel simple, intuitive and consistent and the user should feel confident in moving from one screen to another.
• Iteration and feedback are your friends here as is a little bit of inspiration.
• For consistency, ensure that things work the same across the areas of the app (such as specific components, patterns, interactions).
• Craft is also how you communicate the brand of your product and hence, aligning with the brand voice is important here.
What are other processes or tools we should think of to enable building high-quality products at scale? Leave your suggestions in the comments
Many thanks to my colleagues at WhatsApp, Idit Yaniv and Priyanka Kodikal for their feedback on the note.