fbpx logo-new mail facebook Dribble Social Icon Linkedin Social Icon Twitter Social Icon Github Social Icon Instagram Social Icon Arrow_element diagonal-decor rectangle-decor search arrow circle-flat

Designing for Complex Systems

Julia Salameh Tandem Alum

At Tandem, we work on enterprise applications that usually involve interdependencies of multiple systems as well as large, diverse user bases. These complex systems bring unique UX challenges that can be solved with thoughtful design practices.

To start, let me demonstrate what I mean when I say ‘complex system.’ For several years, we’ve worked with the U.S. Department of Defense to create an enlistment application called MIRS. Each individual arm of the DOD has its own unique recruitment system, which has to send and receive data from our application.

Image shows five different military systems, all funneling into the MIRS application
Once information has been received from the original systems, MIRS is used to move each applicant through the vetting process. That process requires us to integrate with additional external pieces of software and hardware:

Image shows five military systems feeding into the MIRS Application, as well as back-and-forth communication between the MIRS Application, fingerprinting hardware, background check software, and camera software

Adding to the complexity of this system is its diverse user base: our application will be used by physicians, military service members, and civilian users, all with different levels of comfort with technology.

Diagram of a complex system showing multiple inputs and outputs, and multiple different user bases

With just one application, we’re accounting for many different system integrations, a massive amount of data coming in and going out, physical machinery, and a diverse user group. Designing for so many dependencies can be a challenge. But, understanding how each system works with your application is critical to designing for success.

The Role of Design in Complex Systems

In a system like MIRS, our team’s software engineers deal with integrations on the most intimate level, since they are responsible for actually writing the code that connects components together. But designers also need to understand how these systems talk to each other: Does a user manually enter data? Or does the system integrate to display data onto the screen? As a UX designer, it’s important to know how we are getting the data. For example, if it’s manual input, there is potential for user error, so I can make design choices to minimize that risk.

Designers also have the most influence on how to account for the human element of a system. In another complex system I’ve worked on, a healthcare app, the system was smart enough to know when a user was going off track from their weight loss goals. But as humans, we know that alerting the user to this information takes some delicacy: how do we use language to avoid causing shame or alarm? The app also had a mood-tracking function: how do we make sure the app’s messaging strikes the appropriate tone when the user is feeling depressed? A system can be super smart, but you need a human to understand that when the user is having a bad day, the language should be encouraging — and when a user is having a great day, the language should be celebratory!

User Research for Complex Systems

To fully understand a system’s complexity, you need to gather multiple perspectives on the product: from the product’s end users, the product’s stakeholders, and your engineering teammates.


For all products, I’m a huge proponent of co-creating with the actual users — and the more complex the system, the more I advocate for this approach. Ask them: if you could redesign your application, what would you do? When we talked to MIRS users, we learned that the legacy application displayed each applicant’s birth date on the screen, leaving the user responsible for doing the mental math to determine whether or not the applicant was 18 years old. It made their lives a lot easier when we redesigned the system to also display the applicant’s age! Tapping into your users’ perspective will always give you practical ideas.

Asking questions will get you a lot of information about your users’ frustrations. What’s even more valuable, though, is just watching them work. This can be awkward at first — a lot of the time, users feel like they have to entertain us or talk us through what they are doing — but once you get them comfortable with letting you just watch as they work, you can discover the hacks they don’t even realize they use to accommodate their legacy systems. Watching a nurse struggle with a label printer is more valuable than just hearing her say “I print labels every day.” A lot of users become accepting of the work-arounds they’ve developed, but when you observe them, you see so much opportunity to make tasks easier!


On many projects, your stakeholders or clients are different people from the end users: sometimes your stakeholders are managing your users, or are creating a product to sell to your users. While the end users will give you the best perspective on how to actually make the product work for them, your stakeholders can provide the macro-level perspective on what business goals the product is expected to achieve.

Software Engineers

Finally, when you’re having user and stakeholder conversations, bring some of your engineer teammates with you. They ask a lot of good questions, because they think about how to implement UX improvements. The engineering perspective is different from the design perspective, so when you’re able to really combine your thoughts from the beginning, you come up with the best and most workable solutions.

Engineers can also help you understand what kind of data visualization is possible. For one project, we wanted to display a lot of details on a map, so we worked with our engineer teammates to explore the libraries and frameworks that already exist to perform mapping functions. Ultimately, we as designers made the recommendation on how to proceed, but by working collaboratively with the dev team we were able to make a good, implementable choice.


Once you’ve gathered information from your users, stakeholders, and engineer teammates, it’s time to synthesize your learnings. Write your teams’ insights on post-it notes, write down even the smallest observations. Once we have all of our thoughts on the wall, we start to group post-it notes by themes. Finding these themes can be challenging. At this point, you’ll start narrowing down your findings to create a synthesized insights report that demonstrates the key findings from your research.

Designing for Complex Systems is More Than UI

Our technology world has widened so much; innovative technologies like virtual reality, automation, and machine learning create so much possibility to improve peoples’ lives. But as a designer, it’s important to never forget the role human beings can play in achieving those same goals.

To illustrate my point: In the healthcare app I mentioned earlier, the original app auto-sent a message to a health coach every time a user logged a meal. This became overwhelming fast: the coach would get a separate email every time somebody ate a banana or had a glass of water! Eventually the coaches would just ignore the notification emails because there were just too many to keep up with. Implementing machine learning helped the app recognize which foods the coach needed to be alerted by, versus the foods that were fine and didn’t require any notification. This made the product better and improved the coaches’ ability to help their clients.

On the other hand, there are some situations where machine learning, or whatever technology we invent in the future, is not the solution. If an app user eats pizza and ice cream for breakfast the machine can identify that the user needs to be coached, but a person has to actually do that coaching and have a human conversation. Could a chatbot send a check-in text? Sure. But the more effective thing to actually achieve a user’s health goals is to enable that personal, encouraging connection with a coach who cares about you. A chatbot won’t likely motivate you to choose a salad next time. As a designer, it’s so important to recognize the way technology and humans each have their strengths and their flaws.

In the end, if you’ve done a good job, your complex system won’t seem complex at all to its end users. Hiding that complexity is the most important — and satisfying — part of what we do as designers.

Designing for complex systems requires a good understanding of each component of the system, combined with an intense familiarity with the people who use the system. Your challenge as a designer is to approach these projects with an open, curious mind so you can learn as much as possible during the discovery phase, and then use your UX expertise to bring simplicity to the complex.

Let’s do something great together

We do our best work in close collaboration with our clients. Let’s find some time for you to chat with a member of our team.

Say Hi