paint-brush
Designing Complex Software: Tips for UX/UI Designersby@abramova
1,198 reads
1,198 reads

Designing Complex Software: Tips for UX/UI Designers

by Olga AbramovaOctober 19th, 2023
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Designing complex software presents a challenge for a UX/UI designer. Firstly, familiarity with the software and its target users is crucial. Researching existing usability patterns and user behaviors, understanding varying levels of user expertise, and accommodating transitions from other software or previous versions are essential to create a qualitive user experience. Collaborating closely with developers throughout the design process enables efficient prototyping and minimizes design bugs, particularly in complex areas like 3D software. Careful planning for screen space and optimizing system responsiveness are essential to ensure efficient and user-friendly experience. Moreover, creating a design system that is comprehensive, clear, and adaptable is crucial for the effective design and development processes. Generative color systems can enhance visual appeal and save time, while directly integrating design elements into the final product streamlines the development process, reduces potential inconsistencies and saves resources. Encouraging user feedback and providing designated channels for communication can drive continuous improvement and keep the software aligned with user needs.
featured image - Designing Complex Software: 
Tips for UX/UI Designers
Olga Abramova HackerNoon profile picture


My name is Olga Abramova; in this article, I will share valuable insights and practical tips acquired through my extensive 7+ years of experience in the world of UX/UI design, including my experience in designing browser-based cloud 3D software, which, in turn, represents a highly complex and professional-grade software endeavor.


Firstly, let me elaborate on what should be considered under the umbrella of complex software from a UX/UI perspective. Complex software refers to sophisticated applications meticulously crafted to execute specific and often intricate tasks. Such applications find common usage in scientific research, data analysis, simulations, 3D modeling, and various specialized domains, primarily catering to professional needs. Embracing advanced functionalities, these software solutions are well-equipped to tackle complex algorithms and challenging operations. On the other hand, we have simple software applications and websites, falling under the category of basic IT products that have limited functionalities and scope, designed for common tasks, providing a more straightforward user experience that is easy to navigate and comprehend.



Figma interface, an example of a complex software


So, which characteristics are most common in complex software?


  1. Complex software is task-specific and feature-rich: it is designed with a specific purpose in mind, boasting a multitude of functions tailored to fulfill intricate tasks.
  2. Complex software typically targets professional and diverse user groups, and in some instances, it is designed for the user of any level.
  3. Complex software can be either machine-based or browser-based, offering flexibility in how it is accessed and utilized.
  4. In some instances, complex software requires intensive resource usage: owing to complex algorithms and the substantial weight of assets employed in operations, this software may demand significant production capacity.
  5. Many complex software solutions support teamwork and multitasking, enabling seamless collaboration among users on intricate projects.



Blender 4D interface, an example of a complex software



Taking into account the complexity of the aspects I mentioned, which the UX/UI designer needs to consider when approaching this challenging task, I have prepared certain guidance to help optimize the workflow and achieve the best possible outcome. Furthermore, one study has revealed that UX implementation can effectively reduce wasted development time by 50% initially and a further 50% down the line. This is definitely important for companies that focus on complex software, given the volume of the resources such companies spend on development and engineering purposes. Therefore, making the right strategic choices can significantly impact resource allocation within the software company itself.


Tips for UI/UX professionals

Familiarize Yourself with the Software

This is quite obvious, but you have to have experience in the software you are working on. So, before diving into the design process, you should acquire a thorough understanding of the software or similar types of software you are going to deal with. While every project has its unique aspects, there are often existing user experience patterns within the industry that you should be aware of. Research and explore previous versions or similar software in the market to identify common patterns and industry norms. You will have to become a user yourself to dig into the peculiarities of the tasks regular users face in their work process. Becoming a user yourself will give you valuable insights and ensure your designs align with user expectations.


Account for Layers of Complexity

Consider the varying levels of expertise among your users. Some may be newcomers to your software or even novices in this field, while others may be advanced users seeking to leverage the full potential of your software. To cater to both categories, you can incorporate features like Autopilots, Presets of Actions, clear onboarding processes, and comprehensive Help and Learning sections. Additionally, providing advanced users with precise settings and hotkeys will enhance their efficiency.


Take Care of Users Who is Transitioning from Other Software/Versions

Take into account users who may be migrating from other software or previous versions of the software you're designing. For users transitioning from other programs, consider incorporating preset hotkeys that align with popular software they are familiar with. For users upgrading from a previous version, ensure that the Help section provides information about the changes and new features to facilitate a smooth transition.


Define User Roles in Multi-User Environment

When designing software for multi-user environments, determining the appropriate roles and access levels is essential. Consider the different needs and permissions required for roles such as Owners, Editors, and Viewers. Additionally, address sharing and security aspects to ensure seamless collaboration while safeguarding data integrity.


Leverage Initial Information and Statistics

Collect and analyze available statistics, user data, and business requirements. This data is crucial in understanding user behavior and aligning your design decisions with the desired outcomes. Relying on assumptions alone can lead to surprises, so leverage the available information to rely on real data. For example, sometimes you can be provided by the assumptions the company has about its audience, but the reality might appear different after proper research and will surprise everyone.


Utilize Established Usage Patterns

Over time, users have developed familiarity with common digital patterns such as search functionality, project page layouts, or accessing help. While introducing new ideas is valuable, it is generally advisable to adhere to well-known patterns for major actions while incorporating innovation in smaller details. This balance ensures a sense of familiarity and reduces the learning curve for users. Nevertheless, sometimes, these patterns can be neglected to teach users new, bold, and useful ways of using familiar things.


Collaborate with Developers

Developers can be valuable allies in the design process. They possess technical expertise that can help you overcome prototyping challenges, particularly in complex areas such as 3D software. Collaborate closely with developers, listen to their ideas and thoughts, and actively participate in their work-tracking platforms like Jira. This collaboration will enhance the efficiency and effectiveness of your designs while minimizing design bugs. A study of successful Agile collaboration between UX designers and software developers in a complex organisation proves that closer collaboration significantly benefits the outcome of the project and also increases the participants’ satisfaction.


Plan for Screen Space

Unlike websites or apps, where loaded interfaces can be divided into several steps, screen sequences, or partly hidden on a backend side to make the user journey easier to perceive, complex software interfaces often require fitting multiple functional elements within a single screen. Carefully evaluate all the necessary functions and ensure they can coexist harmoniously without overlaying. Thoughtful planning and organization of the interface will contribute to a seamless user experience.


Optimize System Response

Software can involve heavy processing, especially in cloud-based environments. It is crucial to build up a system responsiveness to ensure a comfortable user experience. Some procedures can take hours to complete. Your users can run several tasks at a time. Their computer can lose its network. The object they are using can be too heavy and need time to get visible on a screen. These and many other situations need system response solutions. So, account for situations where processes may take extended periods or run concurrently, the network can be lost and think of others. Consider implementing loading indicators, optimizing network performance, and providing visual cues to manage user expectations during resource-intensive tasks.


Enhance Cursor Interactions

The cursor is a subtle but crucial aspect of the user experience. Consider different cursor states beyond the default arrow and hand, as they can serve as intuitive indicators or enhance specific interactions. For instance, Figma changes the cursor to a bubble when users switch to the Comments section, providing visual cues for the intended action.


Encourage User Feedback

Providing a designated space within the software for users to provide feedback is essential. Feedback channels can help you gather insights, identify areas for improvement, and establish a user-centered design process. Actively encourage users to share their thoughts and ideas to drive continuous improvement.


Ensure Visibility in Dynamic Environments

In software with dynamic backgrounds, ensure that font colors, sizes, outline colors, and weights are tested for optimal visibility in all situations. This consideration becomes especially critical when working with editors or interfaces where the background may change dynamically.


Explore Generative Color Systems

When extensive color usage is required, such as in user profile pictures or layer differentiation, consider developing a generative color system in collaboration with your development team. A generative color system can automate the process of generating visually pleasing color combinations, ensuring consistency and scalability.


Make a Useful Design System

Complex software requires a flexible and comprehensible design system. This implies the ability to accommodate various layouts and details while remaining easily adaptable and understandable for both designers and developers. How do you make your design system useful?


  1. Ensure that only final designs are stored within the design system;
  2. Utilize versions for a design system and describe changes properly;
  3. Create the design system in a sequential manner, with Elements encompassing minor design aspects like fonts, colors, and icons; Components consisting of more significant layout elements, accompanied by detailed descriptions for developers; and Master serving as the repository for the final screens;
  4. Provide developers with clear and detailed design descriptions to minimize additional questions. Although developers may use Figma to check certain characteristics, comprehensive descriptions can save time in the long run.
  5. Remember that an effective design system encompasses more than just files in Figma; it should also include well-established processes for collaboration with developers and product assembly. It is important to agree on the stages of work and determine potential roadblocks (e.g., using Jira) where unfinished design issues might hinder the development process. It is also vital to agree on which UX and UI issues could act as blockers for the build and determine their level of criticality. Employ chat platforms and channels to facilitate discussions with developers about new versions and consider organizing meetups to foster effective collaboration and communication.


Directly Integrate Design Elements into the Product

Seamless integration of design elements into the final software is possible and useful. This can involve directly transferring colors, fonts, icons, and sections of finished layouts from Figma directly into the product. Sometimes, developers create bespoke plugins for this, but your team can also search for ready-made solutions. By streamlining this integration process, you can enhance efficiency and minimize potential inconsistencies between design and development.


Conclusion

Designing complex software presents a challenge for a UX/UI designer. Firstly, familiarity with the software and its target users is crucial. Researching existing usability patterns and user behaviors, understanding varying levels of user expertise, and accommodating transitions from other software or previous versions are essential to creating a quality user experience. Collaborating closely with developers throughout the design process enables efficient prototyping and minimizes design bugs, particularly in complex areas like 3D software. Careful planning for screen space and optimizing system responsiveness are essential to ensure an efficient and user-friendly experience.


Moreover, creating a design system that is comprehensive, clear, and adaptable is crucial for effective design and development processes. Generative color systems can enhance visual appeal and save time while directly integrating design elements into the final product streamlines the development process, reduces potential inconsistencies, and saves resources. Encouraging user feedback and providing designated channels for communication can drive continuous improvement and keep the software aligned with user needs.


By incorporating these tips into their workflow, UX/UI professionals can optimize the design process, enhance the user experience, and contribute to the success of complex software projects in various professional domains.



Text by Olga Abramova

Cover Illustration by macrovector on Freepik