Building software is an exercise in trade-offs. There is always an abundance of ideas and a shortage of money or time. Working to balance competing constraints is what I do. As a developer, I try to estimate and minimize implementation time without sacrificing quality. As a project lead, I help clients prioritize features to build the most complete product we can for a given budget. But these aren’t the only factors that we need to consider, and I’ve been struggling with what to do about another critical aspect — joy.
Here’s the challenge: there’s only so much money, and there are a lot of capabilities that seem necessary, but the underlying assumption is that whatever is built will be great. *Excellence* is always assumed. But excellence isn’t automatic and free. What is excellence for our particular product, and to what degree must it be achieved? This conversation, in my experience, doesn’t usually happen in a clear and explicit way.
No one wants to build broken or unusable software. A good team will never build a shoddy product, but usability is a continuum. A great team working to a tight budget will still produce satisfying software, but teams under pressure will default to a utilitarian design, working with tried-and-true patterns rather than pushing the envelope. Product and project managers feel the budget burn or time pressure, and teams can naturally fall into a pattern of pushing out features as quickly as possible to fill out the matrix.
But this mode of working isn’t necessarily best. Some products can be spartan in their interaction and personality, but others must win over customers and engender passion to be a success. Some can be plain when efficiency is paramount. Others must be intuitive and a joy to use. The number of features may matter less than building an emotional connection with the user, satisfying and delighting them.
Marketers have long considered the emotional response and associations between people and a product; it’s a core part of branding. A brand is an identifiable product or provider and the experiences and associations people have with it. The emotions invoked and associations with a brand are collectively referred to as brand image.
Whether it’s intentional or not, every piece of software has a brand, arising from the users’ experiences. Great software can earn its place as an indispensable tool or something people love.
As software makers, we directly impact the brand image of our product. What a product does and how easy it is to use is a big part of it, but we can achieve more nuanced results as well. We can craft something beautiful, surprising, elegant, professional, or reliable. We can invent interactions that delight users and make software fun to use. We can do these things, but too often we miss opportunities because “joy” isn’t easy to manage within a project.
An Agile Approach
So how do we prioritize an emotional connection in an Agile project? Here’s one possible strategy:
Set a Target
Start by having a conversation as a team about the nature of the relationship between the software and various personas and what brand attributes should be projected. What emotions and associations do we want them to have? How important is that reaction success of the product? If success depends on turning users into advocates and generating word-of-mouth buzz, then the answer is probably “very”. If users captive and budget extremely tight, then maybe not so much.
Aim Your Tasks
Use this shared understanding as the basis for discussion and consideration of feature design and prioritization. Consider potential new features and enhancements with respect to how they affect three attributes of the product:
- Capability – What users can do with a piece of software. New features and options add to the capability of the software, facilitating the achievement of more goals.
- Usability – How easy it is for users to accomplish their goal. This aspect encompasses many things, such as simplicity, familiarity, and ease.
- Brand image – The extent to which the software projects desired “personality” (e.g. premium, secure, friendly, innovative) and evokes an intended emotional response (fun, joy).
These factors are interconnected, not independent. Adding features increases capability, but may either strengthen or weaken usability and brand image. Rethinking an interface for accomplishing a task may increase usability and enhance the brand image, but may not have any impact on capability. A great solution to a design challenge will enhance all three.
Based on the goals for and need of the product, identify where effort might fruitfully be spent enhancing usability or brand image or both. Then prioritize these enhancements against secondary features that might be added. Where usability or brand image are key factors of success or otherwise align with business goals, enhancements in these areas should be prioritized and balanced against the completeness gained by adding secondary features.
A team with a shared understanding of business goals and vocabulary for considering usability and brand image in relation to completeness and prioritizing them appropriately is best suited to building the *right* product, instead of merely the most *feature-complete* product. I hope that by putting these ideas into practice, my future teams will be better-equipped to make the right trade-offs for users and better achieve business goals.