User experience (UX) approaches help improve the entire lifecycle of software products, and user research can help you gather nuanced insights to do so.
Everyone has experienced frustration as an end user working with different types of software. Scientific software developers and research software engineers (RSEs) are no different, yet we have also surely produced software that has caused frustration for our end users. Collectively all individuals involved in the production of scientific software are able to work to reduce such frustration. Key to reducing and hopefully removing such frustration are software development processes grounded in gathering user requirements, designing a usable experience, and evaluating the product to identify areas for improvement. Scientific software development work increasingly needs to incorporate user experience (UX) practices (e.g., research of users, human-centered design, and usability testing) to successfully reduce user frustration, as commercial software has done for decades. For scientific software, user experience practices are employed to ground software and service requirements in the needs and challenges of end users (e.g., domain scientists) and customers (e.g., the project teams building systems for a user community). Doing so helps you and your team ensure that your development processes can lead to effective and secure software that meets the needs of your user community while being usable and accessible.
What is user experience?
People most immediately think about graphical user interfaces (GUIs) when they hear the term user experience or user interface. However, UX should encompass far more, from command line interfaces, APIs, and documentation to the actual policies and processes for running services and facilities. For example, researching and designing how a high-performance computing (HPC) facility allocates time and resources to inform the account signup and system usage process can be essential to making these complex ecosystems more accessible and understandable for end users. Definitions for UX vary, but our team at Berkeley Lab think of this work as the practice of developing services and products that provide consistent, relevant, productive, and joyful experiences for users. We emphasize these four terms because they impact the entire lifecycle of scientific software, from its conceptualization (it should be relevant to domain needs and enable productivity) to design, adoption, and sustainability (it should provide consistent results across the experience over time, and it should make work easier and more fun to accomplish).
UX practices can be leveraged to affect the entire software product lifecycle through varied practices. Four key practitioner roles commonly make up this work, and often in scientific contexts one individual will have to wear many hats. UX research helps identify user needs and how the product fits within a larger ecosystem; UX research also examines an RSE team’s processes to map out a complete user journey from learning about a piece of software to adopting and using it while it is maintained over time. UX design leverages research to craft interfaces, documentation, and so on in alignment with an envisioned user journey and experience that UX engineering then helps implement as part of the software. Less common in science, but just as important, is UX writing, which helps improve API text, documentation, and so forth to ensure clarity and consistency for end users. The remainder of this post focuses on the value of UX research. Future posts will discuss UX design, UX writing, and UX engineering.
The value of UX research
UX research is a sociotechnical approach (where social and technical are recognized as deeply connected issues) for improving software usability and sustainability by translating the context and requirements of software users to the design and implementation of software products. There are a range of qualitative and quantitative user research methods. (Nielsen Norman Group has an expansive overview1 and GitLab has a great public overview of their organizational approach2.) Both types of methods are useful for improving scientific software. Qualitative research provides scientific software teams with a deep, direct understanding of user needs through interviews or observations of people working. Qualitative data is often key to gathering sufficient insights to help design and build usable products, particularly when a product’s user base is non-existent or small, and helps a team push beyond the what to explore the how and why of work and user needs. For example, when studying scientific data change, our team conducted interviews with scientists from multiple domains and asked them to test a prototype of a command line interface for identifying changes in large datasets across computing systems.3
Quantitative research is helpful to contextualize a software product within a larger ecosystem. Surveys, analytics, or log analysis can surface issues a large number of users are facing (e.g., confusion navigating an HPC facility’s user portal or a product’s documentation) to help the team identify areas for further investigation and improvement. Usability testing often blends qualitative and quantitative methods to gather contextual information from users, testing a product while also measuring users' ability to complete specific tasks in a consistent, efficient, and effective manner.
Incorporating UX practices end-to-end across the software lifecycle helps shape the scope of the software being created, iteratively design and test the various user interfaces and documentation, and evaluate and improve the team’s processes for its development and maintenance as a usable product. UX research is most effective when leveraged to examine an entire user journey, from initial engagement with a product to the ways backend processes and systems support it. Successful teams balance the use of qualitative and quantitative methods over the lifecycle of their product development and support. UX research is taking place today in pockets of the DOE community and beyond, with some visibility. Scientific software teams should strongly consider adopting these key methods to improve their software and make it more cost effective and able to be sustainably stewarded for scientific research over the long-term. Conducting the right UX research at the right time helps focus the efforts of a team in an appropriate direction, saving time and money, which will amplify their impact through more successful software delivery and hopefully improve the sustainability of products over time. Leveraging qualitative interviews and observations during the project conceptualization phase can help clarify core requirements and open up avenues for a proposal to explore. Likewise, quantitative research of an existing product can help identify issues for focus during a new development phase. Usability testing can help solve lagging problems as a product nears release.
Conclusion
Overall, doing user research for scientific software requires appropriate rigor yet flexibility to meet dynamic scientific needs across computing environments. UX approaches crafted for scientific contexts are better positioned to support stakeholders than generic commercial materials by recognizing the nuances of this working environment and user needs. As scientific software developers, we are all accustomed to the need to understand often nuanced, complex requirements; making usable tools and systems consequently requires more concerted effort that UX practices and professionals can offer.
This post is the first in a series about the user experience of scientific software. Upcoming articles will explore UX design, UX writing, and UX engineering, while highlighting experiences from members of the US-RSE User Experience working group. Additional suggestions for articles would be most welcome!
Confused and want a clarification? Curious to learn more? Reach out or explore the further information links!
Further information
- Join the US-RSE community and the User Experience working group in particular to engage with others about UX or identify resources to help your own software team.
- Join the provisionary UX working group in the Consortium for the Advancement of Scientific Software (CASS) dedicated to improving the user and developer experience.
- Check out STRUDEL for tools and resources to improve your scientific software’s user experience
- Nielsen Norman Group has an array of general purpose UX information and resources
Author bio
Drew Paine is a 2024 BSSw Fellowship Honorable Mention and User Researcher in the Scientific Data Division at Lawrence Berkeley National Laboratory. He contributes to a range of UX projects (https://ux.lbl.gov) and has over a decade of qualitative user research experience in scientific software and commercial cloud environments. He holds a PhD in Human Centered Design and Engineering from the University of Washington and a BS in Software Engineering from Rose-Hulman Institute of Technology.