How to cope with growing user expectations in an enterprise environment
This article is intended for designers, developers and product owners working amongst multiple teams having to share ideas, designs and code. I might not have to convince all of you of the importance of user centered design, but let's try to look in the same direction. I want to explain the emergence of (mobile) applications that are easy to use and the influence they have on modern UI and UX design. This creates the need for practical design documentation and a short user feedback loop.
In the beginning software was designed for technical people. It was the user who had to learn using the software (and accompanying hardware). They had to become an expert. As software got integrated in more and more aspects of our daily lives, its ease of use also gradually improved. We have more intuitive devices as well as accompanying software. Listening to and understanding the user is a gamechanger for selling your products. The richest man on earth has been repetitively saying for over 20 years: “Obsess about customers, not competitors.” Besides Amazon, most successful disruptive companies have one thing in common: they make easy to use products and services. Of course we can't all be disruptors, but I hope we can agree to put the user in the first place.
The spoiled user
Typical user expectations of how software should perform and how to interact with it are high. Our mental models are greatly influenced by mobile applications. We use about 30 different apps on a monthly basis. We spend more time on a smartphone than on a desktop computer. We love apps that quickly get us where we need to be. Just a few swipes and clicks without having to log on or type full sentences on a (onscreen) keyboard. More intuitive mobile applications lead to higher standards and expectations for web applications. Less intuitive (web) applications lead to frustrations.
Important factors for great user experiences in mobile applications are consistent UI design and UX patterns. This is made easy for app designers and developers by style guides. The reason mobile applications are so easy to use is, amongst other things, the constraints and guidelines of their design and development. Apple and Google have quite elaborate style guides: iOS and Android.
Consistent UI design
Many companies embrace the use of UI component libraries as building blocks for their applications. This ensures a consistent look and feel across all user facing applications. A component library makes life easier for designers. You have a single source of truth. Once all the "boring" buttons, boxes and form designs are documented, you have time to focus on the fun stuff, the more complicated challenges.
Also life becomes easier for developers. Multiple teams working on different applications share code to work more efficiently. And with a well documented library, less input is required from designers in the day to day work. However, once all the building blocks are designed, you shouldn't stop there. Where do you place them on the screen? How does the interaction between different elements work?
Consistent UX patterns
Once you have consistent user interfaces, they become easy to use when consistent UX patterns are applied. Patterns that describe how the components align on the screen, and to each other. Patterns that describe how the user interacts with the components, but also on the application as a whole. How do interruptions work? Think of errors, alerts and notifications that need the user's attention.
UI + UX ==> Design System
You can combine look and feel and interaction patterns in a design system. One of the best examples out there is Google's Material Design. This is the design system that Google uses for nearly everything they put out into the world. Because it's so elaborate it also restricts a lot of choices. But within the boundaries you're still able to craft a distinguishable design.
Think about how much designer freedom you need versus proven patterns. Think about how revolutionary your ideas really are. Do you really need to introduce new patterns or can you build on existing ones? Our colleague Sil wrote a great piece on how he built a custom design system tailored to his client's needs.
Remember for whom we are doing this. In the first place it's the user. Whether we are using a predefined open source design system, or we are using one of our own: the application should be easy to use. When creating a tailor-made company design system you have a somewhat greater responsibility on user testing. You have to validate more assumptions compared to proven systems. But it doesn't mean you can skip doing user testing when you use Material Design for example. E.g. there's not much discussion on which type of element goes where on the screen, but the most used element could end up last in the list, or only become visible after scrolling. When you're adding new interaction patterns there should be time to test them. Prototyping and user testing should be part of the agile iteration process.
"We must design for the way people behave, not for how we would wish them to behave." --- Donald A. Norman
Today, in enterprise environments, a lot of the times the design is deemed finished before development starts. It could even be that your assignment as a designer is stopped when the development starts. These assignments are waterfall projects in disguise. When changes need to be incorporated, developers could be already ahead developing new features, with no one left to modify designs. Things will get out of hand, rather quickly. Developers lose trust in the design system and applications will be developed with the best of intentions, but lack an overall consistency. Especially when multiple teams develop different (parts of) applications.
Hereby I want to re-iterate the importance of keeping designers close to developers. You create together. You improve things along the way together.