Embracing complexity brings anxiety for a lot of designers. We tend to strive for simplifying the experience for people using our products. This often puts us at odds with our developers and product owners. When I moved to enterprise software, this was one of the major points of contention across teams and disciplines. Designers focus on taking out unnecessary complexity. However, when we look to the design team and build a system, we tend to ignore how a system will scale for new users, roles, and access points.
Designers need to embrace complexity in the system early in the process. Consider where it makes sense to create a simple experience or design for the expert who expects complexity but requires efficiency.
Tips for embracing complexity
Understanding the complexity of the problem
When you are thinking about a software solution for a problem, consider the context this will need to work in. Who will need to use this, and what are the conditions they will need to access this software and its data? I started my UX career in a startup that focused on mobile payments. Immediately, we realized that we were actually working on two app experiences with one for the consumer and the other for the merchant. At IBM, we are trying to wrap our heads around the variety of experiences a whole organization with numerous roles.
Aligning tasks to feasibility
After you have mapped out and validated the different people who will interact with the app, focus on what they will need to do. If we go back to the mobile payment app, then a person who needs to purchase an item on her mobile device will need to do the following.
- Browse for an item
- Add the item to a cart
You will also need to decide when this person will need to add this information.
- Create a profile
- Add a payment method
- Add an address
Now, you will also need to consider the other side of the transaction. The merchant will need to do the following.
- Receive a notification about the order
- Review the order
- Approve the order
- Fulfill the order
This part is overly simplified. There are also actions that can be automated. Nonetheless, the designer and her developers need to understand the breadth of the interactions between two different types of users. One the customer side, this experience should be easy as possible. For the merchant who is dealing with possibly multiple customers at once, the designer needs to consider efficiency.
Once the team has a better understanding of the 50,000-foot view or how complex this application can be, you will need to narrow down the scope. There are a number of ways to do this. I feel there is some combination of design thinking, UX research, and user story mapping.
You can use some design thinking methods to align the team with stakeholders on the problem and who you are trying to help. You can begin to prioritize what to work on in design thinking sessions but use UX research to validate the early assumptions. User story mapping can help focus the team and stakeholders on what the core experience and subsequent releases should be.
Coordinating roles, views, and permissions
It never fails that mapping out complexity leads to garbled conversations about the roles in the system. Surfacing scenarios leads to debates which lead to whiteboarding. Eventually, the team figures out a solution until the next controversy comes up.
Invest time to map out the system as it appears to specific roles. For example, a customer will see an e-commerce app a certain way. The workflows will differ from the merchant. The merchant and the customer may need to see the same screen differently. If the merchant has permissions for adding and removing products, then how will this affect a product screen?
Nailing down a system-wide experience
When you are considering how roles, views, and permissions cause experiences that diverge. Find ways to converge the experience with styles and patterns. Make sure colors, type, animation, icons, layouts, and terminology are consistent. Define a design language that communicates your solution to the different users.
Before designers can create a streamlined experience, they need to understand the breadth of the system and who will need to use it. Ask the questions that will help conceptualize how roles intersect. Then strive to simplify for where it makes sense for certain users.
Read more about designing for systems.