Infusing Design Thinking in Software Development
I was 8 years old when I first felt the frustration of being clumsy. In art & craft class, my friend Nia was cutting paper into perfect pieces to make a bird. Next to her was I, admiring her talent, wondering would it be possible for me to make something like that ever.
Never, I thought.
When I couldn’t even properly tie my shoelaces, unbutton the shirt, or even open and hold the door, cutting a paper to make a bird was the next level of “talent” that I could only wish for. These frustrations only increased as I grew up, until, in the mandatory piano classes—that I didn’t want to take knowing that I would never be able to play it well, my teacher pointed out that I would be needing a piano designed for a left-handed person.
I was left-handed, I knew it well, but is it the reason behind me not being able to do those simple, day-to-day tasks swiftly? For so long, nobody noticed it! No one at home or in school figured out that I am left-handed and since most of the things in the world have been designed for right-handed is because I am not-so-swift at everything.
The design has been the reason for my years of frustrations and I didn’t even know it. Does it even matter that the button is always on the right side of the shirt, that the door opens from the right side, that the debit card is inserted in the ATM machine from the right side, that a smartphone has volume and power keys on the right side?
The “stuck” feeling that I always had since childhood was just because of the design of the object and not the object itself? That I was as capable as everyone else. Considering the gravity of the challenges I faced, I needed a stronger reason. A more valid reason to justify my frustrations. But all I got was a simple right and left design versions.
Sometimes it is the smallness of the problem that makes it more complex. The obviousness of the situation, that makes the problem skip from our eyes. Lately, the importance of design has grabbed the attention of the thinkers, the thought leaders and we have got the term “design thinking” that makes people more aware of the design problems, whether it is hardware or software.
Design Thinking in Software Development
Applying design thinking methodology in software development is necessary to develop an user-friendly and intuitive application. It does not require extraordinary skill to achieve this intention. If business leaders empathize with users and developers empathize with business, it is possible to develop a software application, which is user-friendly and intuitive. Design thinking process should be automatically embedded into the processes of software development.
Keeping empathy at its core, software developers can enter into the world of customers, and investigate how they use a software product, analyze their pressing needs, understand their conveniences and build for them a solution-focused software.
The initial investigation is important to succeed in inculcating design thinking in the software development process. These investigations must be based on the key questions that could cause or eliminate frustrations when the software is being used. Some of the key questions are:
- Who is the target customer?
- The software is the solution of what key problems?
- Why would they choose the software?
- How would they begin using the software?
- How would they reach the final solution?
Do not dismiss anything. A good design can make the software product more intuitive. Consider all the possibilities of the “obviousness” for your targeted customers, just like it never occurs to a right-handed person that how much the volume key on the right side of smartphone increases their convenience.
Actually, we need to infuse empathy in creating software design. When you are building the software for others, you have to wear their shoes to ensure maximum ease of use.
Software Design for Providing Increased Value
When we discuss software design, it is not just the user-interface design we are talking about. Software design in context with service design thinking is about the overall experience that the software application delivers to the users. The easiest example of experience could be of Facebook’s “reactions” buttons so that Facebook users can express themselves well.
While designing the software, a software design agency has to understand it is the business interacting with the customer, and this interaction must be smooth, error-free, and does not make users feel “stuck” anywhere in between till they achieve the software goals.
With the introduction of AI-powered apps in the market, achieving UI/UX design goals for AI-enabled apps have become more complicated. UI/UX designers have to ensure that the capabilities of artificial intelligence are never in conflict with human intelligence, and also collect the relevant data to generate business insight. When building AI-driven apps, UIUX designers and software developers must adopt human-centered design thinking process to ensure harmony between machine and human intelligence.
The Phases of Design Thinking in Software Development
Design thinking method consists of 5 phases—empathize, define, ideate, prototype, and test. As it is an iterative process, each phase is not independent of each other, means you need empathy at all stages, defining a problem and deriving ways to combat the challenges should be kept in mind at every phase.
Phase 1. Empathy in Software Development
This is the first stage of design thinking in the software development process. At this phase, you need to create design-thinking mindset, which can be done through getting an empathetic understanding of the targeted software users through rigorous user research. It is one of the most human-centric tasks in the software development process. Make sure to keep aside your assumptions and biases.
Phase 2. Define Users’ Needs and Challenges
After considerate and empathetic user research, define their key requirements and their existing challenges. One of the well-attempted ways is to imagine the software development process backwards, as it will give a glimpse of how your end product will function so that you can investigate the development-related requirements more confidently.
Phase 3. Ideate—Create Ideas to Combat Challenges
This phase of design thinking in software development calls for a healthy, robust brainstorming session. Create a storyboard to include every aspect of users’ journey. Come up with as many options possible, build many roadways to reach the defined goals, consider all possible challenges users might face for building an initial design of the software.
Phase 4. Create a Prototype of Solutions
It is time to materialize ideas. Choose the best option available and create a prototype of the software. Remember, coding begins at this stage, which involves a lot of technical stuff. Pick the options wisely, as, at a later stage, it may hurt you from the cost perspective.
Phase 5. Test the Model
Now the prototype of the software is ready, test the model from the usability perspective. No matter how technically-efficient and beneficial your software is, if it is not user-friendly, it will only lead to frustrations. So always test the software from users’ perspective.
If the software does not seem to be user-friendly at the testing phase, reiterate the phases of design-thinking to come up with a more effective and intuitive solution.
Today, in the era of design thinking innovation, if someone asks me what should be the highest benchmark of design-thinking, I would say it should be as empathetic, intuitive, and obvious that a right-handed person never realizes how almost everything has been designed to their convenience, that they totally forget they coexist with left-handers.
As for me, I have adjusted to the ways of the world. It is still the “adjustment” though. But I don’t want your customers to be in a similar situation for any reason, have the frustrations that I had for years. And by the way, I have learned to play the piano well.