We’ve joined the Appfire family! Learn more
Dec 04

How to handle complexity in complex applications?

After joining SoftwarePlant, I’ve had a small crisis. The UX I had to work with was different than anything I’ve read about. We work on BigPicture, an app dedicated to Project Portfolio Managers. To say “at first sight, it’s pretty complicated” is a gross understatement. The system has its jargon, popular only among managers, and I didn’t understand most of the vocabulary.

Moreover, I’ve heard subject research would be difficult because we have so many different users — each of them with different needs, a different position in a company, a wide variety of duties, working in multiple industries, and using diverse methodologies. How can we provide good UX to such a heterogeneous audience? I felt it’s just an impossible task…

And then, I discovered the article on the NN group website about complex applications. What makes them different? I will explain it with BigPicture as an example.

Complex Apps

Complex apps are characterized by a lack of one specific user path — users not only have multiple ways available; they often try to achieve widely divergent goals. User flow isn’t linear here, like in most mobile apps or websites. Think about Figma, Photoshop, Excel, or other similar tools. These programs support some main aims but without step by step instructions. In BigPicture, the general goal is to manage projects or project portfolios. We can try to split it into different aspects like task schedule, resources, or risk management. Still, even though it is all about administration and management, the desired outcome might be entirely different for each user.

It follows that users need to know about Project Portfolio Management, or at least Project Management, to navigate our application. Moreover, our users usually work with large, complex sets of data — this should allow them to make the best decisions. Still, in reality, it’s only as useful as the design of the application allows it. In BigPicture, this data comes from projects’ scope, defined based on connections with other platforms like Jira or Trello. These connections lead us to the next characteristic — a collaboration among multiple tools and platforms. Finally, security is crucial because, in a complex system, it is necessary to have clearly defined permissions and roles.

5-layer framework

How to handle complexity in the application? The NN group answers with a 5-layer framework which are:

  • integration complexity,
  • information complexity,
  • intention complexity,
  • environment complexity,
  • institution complexity,

and explains the challenges of each of them.

Integration

Integration refers to the connection between application, server, databases, and other systems. In BigPicture, this has always been one of our primary concerns, as we have tried to facilitate a more straightforward use of multiple tools. Integration was still the name of the game.

Synchronizing data between various external tools and platforms posed quite a challenge. All this connectivity required us to develop a generic approach that will be compatible with each platform. It sounds impossible, especially taking clarity and usability into account, but we try hard to keep things as simple and straightforward as possible for our users.

Moreover, each data flow takes time, which may slow down the system. Remember, data is stored both on the frontend and partially on the backend, leading to different interface requirements. For example, when it’s on the front, data validation can be performed with no delay. However, if data is kept in backend databases, a user has to perform an action that serves as a trigger. Next, the app has to ask the server for status. And wait for a response. Understandably, at this level of complexity, developers usually say, “it’s impossible,” “no, we can’t do that,” “sure, but…”. It’s not just a matter of making things work — they have to work well. All the while, we must also always keep in mind that one tiny change may have a massive impact in many other areas.

What can you do? It’s good to know some essential technical words, to understand your application’s complexity and, more or less, how the system works. Talk with developers, ask them for explanations and suggestions. You don’t have to know everything, but you should have a rough understanding of the app’s technical aspects.

Information

This layer is all about data and actions such as sorting, grouping, filtering, etc. The biggest challenge lies in creating a straightforward and easy to navigate Information Architecture. Applications must present data in a cohesive and readable form, so data visualization is critical. In complex apps, we quite often see tables — not very sexy, but useful. Our users have extensive data structures with many nodes and connections. We often ask ourselves how many elements we should display on the screen to provide the most value and not muddle things up.

We usually approach this layer with a lot of research. The competitive analysis gives us answers regarding what already exists. We are not trying to reinvent the wheel just to be different; our application doesn’t exist in a vacuum — existing solutions have a massive impact on user expectations and experience. This approach is relatively cheap and quick. We also talk to our users and ask what they need to accomplish. Based on that, we form requirements for the screens. Then we add appropriate tooltips and descriptions. Finally, we track users’ clicks to find the most popular options.

Intention

The NN Group says that intention complexity is about an unstructured way to achieve goals and the broad possibility of actions. Many app scenarios are usually left unmapped by us, making design challenges. How can we, at the same time, facilitate people’s work from healthcare, automotive, and the military industries? Or how can the same tool support both agile and waterfall methodologies? It is impossible to take all scenarios into account.

On the other hand, it’s compelling that there are almost no limits for the customers. It’s our goal to facilitate a flexible workflow. At the beginning of my work on BigPicture, I often heard there is no happy path in our tool. I was pretty frustrated, convinced it must exist, and determined we would discover it. I failed almost immediately and started doing the opposite thing — adding more actions to the right-click menus to support many ways of achieving user goals. The last thing on this layer is to consider all corner cases, design the worst possible ones with dirty data, and check what a user will see under those circumstances.

Environment

Quite often, we repeat: “it depends.” Users interact with the applications in their own, unique, usually complicated way. They use multiple tools, and they are dependent on their coworkers. They want to synthesize collected data to support better decision making. In BigPicture, we have to understand how project management functions and get to know different methodologies. Also, essential for us is the knowledge about users’ position in the company. We differentiate between types of users and the resulting needs. We must understand all factors that bombard them every day, all the connections between them and coworkers. That’s not easy.

The NN Group recommends field studies to see the users’ environment with your own eyes. It’s crucial to conduct IDIs (Individual Depth Interviews) to ask direct questions. You can do it in person or using remote tools. If push comes to shove, you can still extract some value from small, more limited tools like surveys. Ask users to describe their background, daily tasks, tools they use and understand their reasons behind it all. I also check articles, forums, and groups dedicated to project managers, and I try to discover as much as I can about them and their work.

Institution

This part is about us, practitioners, and the formal and informal culture of our organizations. We navigate between many limitations, trying to provide the user with the best possible experience. That’s challenging. Quite often, organizations work using old models and are afraid of change. Sometimes you can hear, “why should we modify something if it works?”.

How can you change it? Be a UX evangelist, describe good patterns, and show your competition as an example. Present data. Nothing works like numbers! If you build awareness in your colleagues, changes will be met with less resistance. And the last thing — create a team you love to work with that will support you when you want to give up :)

So next time, don’t think you’re doing something wrong! Complex apps are challenging by definition, and designing them is even more challenging. However, as I tried to show you, it’s not impossible to do it. The path is demanding but satisfying in the end.

My favorite team!

About The Author

Marta Mazurkiewicz - UX Designer & UX Researcher at SoftwarePlant