In architecture, it’s common to work with a wide range of materials such as concrete and steel. These materials are what the architect will use to create their end product — a building or structure. Similarly, product designers also work with a wide range of materials, such as typographic elements, iconography, or color. In designing financial services products, specifically, the most important material we work with is a functional flow.
A functional flow is an action-oriented path that solves a focal job to be done in the product area. While UX flows are often linear, when working with a functional flow, different contexts bring more complexity and inevitably change its design semantics. I learned that good design of a functional flow simplifies a complex relationship between users’ focal paths, their micro-actions within a flow, and the broader contexts they live in.
Focal path and micro-flows
A focal path should allow users to stay focused on a particular goal and guide them through the flow. For example, a checkout flow in a virtual terminal is a functional path that helps sellers take payments quickly from their computers. It has a focal path of charging buyers with items in an efficient manner, however, it diverges to other micro-flows, depending on the seller’s situational context. Imagine if a seller wants to create a new customer or a new item in that context. Different actions in the flow lead sellers to different micro-flows.
The value of any functional flow is not what elements get built but more what gets used and is useful in every step of the flow. So, it’s important to learn during design research what micro-flows bring the most value to sellers because it helps to compose the hierarchy of design affordances. This also enables us to structure the flow and make it easier for users to discover new features. reduce issues with user discoverability of new features.
Fluid interactions and micro-actions
If a functional flow is a material, then the interaction is a form that is being designed by both designers and users because so much is dependent on one’s context.
Good design of a functional flow drives a seamless and fluid end-to-end interaction between micro-flows.
Meanwhile, a micro-flow drives an intentional set of actions that users can take to achieve their own specific goals. Designing a coherent experience of a functional flow made me think more about ways to reduce friction between user micro-actions. Seamless in-flow additions craft a delightful user experience, minimizing context switching and friction. This reduces interface clutter and affords more fluid user navigation through a functional flow.
Another important aspect of a fluid interaction is consistency across interaction patterns. System consistency, for example, ensures that both visual elements and functional interaction models behave in the same way across all surface areas. Sellers would then have the same expectations from interface behavior, thus adopting new features easily. If a customer creation pattern is repeated in different touchpoints in different functional flows, it has to have similar typographic hierarchy, interaction behavior, and button copy. Sellers would then learn how to quickly create new customers from all different touchpoints, adapting to their own contexts.
Contextual complexity costs
Micro-actions in functional flows tend to be associated with complexity. On the one hand, they lead to different types of user interactions with design elements. On the other hand, they are part of broader technical edge cases and permission-related issues. One example might be filtering customers when adding them to the checkout. It is a micro-flow that lets sellers efficiently retrieve buyer information, but it also costs software complexity if there are additional restrictions that prevent sellers from doing so. Affording a new interaction compounds in multiple user states, which ultimately makes software inaccessible and hard to use for sellers.
Simplifying is key to an accessible interaction. I learned that a good simplification process entails asking the right questions. We think a lot about how hard it would be for the engineering team to add a new design element in a functional flow. Instead, we might want to ask how users’ experiences will get complicated in micro-flows with that design element. By tying our decisions to the direct needs of our users, we can better simplify their experiences and ultimately provide more accessible financial tools.