DevOps + Design: The Key to Continued Quality User Experience
Dan Vos | July 11th, 2019
Numerous industry leaders and software development experts are calling for companies to bring down the silos around their development and IT operations teams and adapt a DevOps approach to their software development processes. The integration ideally leads to flexibility, shortened lead times, and increased collaboration across teams when making a change to an application, software, or system – all while ensuring high quality.
A bad practice of adopting a DevOps culture, however, is to solely focus on developing fixes and updates to deliver as quickly as possible and disregarding the software’s user experience. How do you ensure dev teams consider the user experience of software when also focusing on continuous delivery and deployment? Or that updates in the front-end code or changes in the back-end infrastructure don’t negatively alter how a user will interact with the software? The solution is to break down the third silo: design.
Incorporating design in DevOps is as important as bringing a blueprint to a construction site. For instance, without the blueprint, the construction team (Dev) may be able to create a functional building with features specified by the client, but the maintenance team (Ops) would need to keep coming back for renovations if a new tenant (user) has an accessibility complication or there aren’t enough rooms for the tenants’ desires. The team creating the blueprint could have researched the buildings tenants to add the appropriate features or thought of the different rooms the tenants would use ahead of time.
Be sure to read our in-depth “DevignOps” series about the essential integration of design in DevOps during software development, starting with this overview of DevOps, design, and their connection.
What is DevOps?
DevOps is not a single method, but rather a culture of different sets of software development practices that help shorten and optimize the software development life cycle (SDLC). DevOps teams consist of development and IT operation teams who use different toolchains, which are sets of programming tools used to perform complex development tasks throughout key aspects of the development (Dev) and delivery (Ops) process. Such aspects of the development and delivery process include coding, building, testing, packaging, releasing, configuring, and monitoring. The goals of DevOps include higher deployment frequency, increased speed-to-market, lowering risk of failure for new fixes, and shorter lead times for fixes getting to production.
Making changes to a system and placing those changes into production is difficult to achieve if the development teams and IT operations teams are in silos and only focusing on their respective tasks. By breaking down the silos, creating a culture of collaboration, and considering all aspects of development and IT operations, DevOps teams can streamline the time between making changes to a system and placing those changes into production – ensuring high quality at the same time.
What is Design?
In the software development life cycle, design is an integral process that works in coordination with the various other SDLC components. The design process focuses on the software’s user experience in the discovery phase, which includes identifying user groups and mocking up how users will interact with the software, including wireframes, wireflows, and high fidelity mockups. The discovery phase ensures designers answer the correct problem by understanding and considering the stakeholders business goals when prototyping the different features that will comply with the user’s desired actions of the software.
Design teams also help with the information architecture of systems, ensuring an easy-to-follow information format to help users find what they are looking for. Design thinking helps ensure user feedback is part of the development and deployment process at a much earlier state, helping inform developers on the value of user experience and filling in the gaps between the client, user, and developers.
To put it simply, design is creating a plan that ensures developers are building the software they should be delivering – all while keeping the user experience front of mind.
The Embeddedness of DevOps and Design
The concept of having development and IT operations teams work simultaneously on a fix or update to an existing system has been a brilliant approach to ensure increased deployment frequency and faster delivery rate of high quality features to existing systems. However, DevOps often siloes off a key component: design. What’s the point of producing a functional fix or update if the user has difficulty using the new feature?
While the silos surrounding the development and IT operations teams break down to ensure the continuous deployment and delivery of high quality updates, the silo surrounding design remains standing, leaving the risk of underestimating the user experience of the new fixes. Encouraging the collaboration between development, IT operations, and design teams can reduce the failure rate of new releases due to poor user experience.
Design teams bring their knowledge and forward-thinking on how users will interact with the fix or update to the application, ensuring the update being implemented is the update that should be implemented. Design teams can ensure the information structure is being considered when back-end developers are updating databases for a fix, or front-end developers are updating the user interface of the existing system to give a seamless user experience.
DevOps should encompass design as a critical process when making changes to systems to create updates and fixes not only optimized for functionality and high quality, but the user experience as well.
DevOps ↔ Design = DevignOps
In conclusion, not having design be a part of DevOps is a mistake. “But I can just focus on saving some time by leaving design out of DevOps.” Although a company’s invoice may get fulfilled quicker and they develop a functional product, users struggling with the new experience or changes made without the bigger design picture in mind could cause rework or additional alterations later for the whole team. Furthermore, there may be elements of the system developers are not considering, such as the information structure or the rest of the user interface, when making a change.
Having a blueprint for a house makes life easier for the tenants, construction workers, and maintenance teams, just like having design in DevOps makes life easier for the developers, IT operations team, and users.
Check out the next article in the series: the top benefits of including design in DevOps.