All developers are Design Thinkers – even if they don’t know it

You may not be familiar with the term Design Thinking, but you are likely applying it in your work. Let me show you!

Jakub is Junior Software Engineer at Infobip. He works on internal services, primarily using the Java programming language. He finds peace in writing clean code that will save the world :smile:

Jakub Hricik

Jakub is Junior Software Engineer at Infobip. He works on internal services, primarily using the Java programming language. He finds peace in writing clean code that will save the world 🙂

Have you ever been discussing some features with the product owner?

Have you ever been struggling with your colleagues on some brainstorming session?

Have you ever been trying to define some approach to solve specific problems, implement solutions, test them, and repeat this process every time (sprint)?

That’s right, “every” software engineer does. That’s simply our day-to-day job, to solve some problems, test solutions, deploy them, and repeat.

What if I tell you, that this process is Design Thinking in practice?

What is Design Thinking?

Design Thinking is both an ideology and a process that deals with solving complex problems in a way that is primarily user-centered so it’s focused on the user, on people, trying to understand people’s needs and come up with effective solutions to meet these needs. We call this a solution-based approach to problem-solving.

OK, enough of theory let me show you some examples.

Imagine a team of software engineers tasked with developing a new feature for an online collaboration tool designed to enhance virtual team meetings. Simple assignment but hard to do right.

Let’s break down the approach into these 5 steps:

  1. Empathize: The team starts by empathizing with users, interviewing them, and observing virtual team meetings to understand their challenges and frustrations.
  2. Define: From their research, the engineers identify a key issue: users struggle to follow discussions when multiple people speak at once or topics change rapidly.
  3. Ideate: The team brainstorms solutions like an AI feature summarizing key points in real time, a visual conversation flow, and an interactive agenda for pinning and revisiting topics.
  4. Prototype: They decide to prototype the AI-powered summary feature, believing it offers the most direct solution to the problem identified.
  5. Test: The prototype is then tested with a small group of users, gathering feedback on its effectiveness and usability.

Throughout this process, the software engineering team applies principles of Design Thinking: they start with understanding the user (empathize), clearly define the problem (define), think outside the box to generate creative solutions (ideate), build a clear representation of their solution (prototype), and finally, test their solution in the real world (test).

Of course, this example is just theoretical, it would be great to have such a team that can develop a new AI-powered feature to summarize meets in real life and it works like that, right?

Design Thinking counts with that and suggesting us to repeat this process as we want, not to create solutions from scratch but righter solve problems step by step to accomplish the main goal – people paying attention during meets.

Source: Idea Validation vs Minimum Viable Product | Simpleweb

Source: Simpleweb | Idea Validation vs Minimum Viable Product

Similarities between daily software engineering work and Design Thinking

You might be wondering, “How is this different from the Scrum process?” and you have a point. This approach is indeed similar to Scrum, let’s compere some principles:

  • Empathize with the End User: Similar to the ‘Empathize’ phase in Design Thinking, Scrum focuses on understanding user needs. User stories and backlogs in Scrum keep the development team aligned with the user’s perspective and requirements.
  • Iterative Development: Scrum’s sprints mirror Design Thinking’s iterative nature, where ideas are prototyped, tested, and refined. Each sprint aims to create a potentially shippable product increment, promoting continuous feedback and adaptation, similar to the ‘Prototype’ and ‘Test’ stages in Design Thinking.
  • Collaborative Ideation: Just as ‘Ideate’ is a crucial stage in Design Thinking, Scrum encourages team collaboration and brainstorming sessions, such as sprint planning and daily stand-ups, to ideate and tackle tasks creatively and effectively.

So, the daily work of software engineers, especially with Scrum, shares key similarities with Design Thinking: both prioritize user empathy, iterative development and testing, and collaborative, cross-functional teams.

There are also some differences. Scrum is designed to develop large software projects and is mainly used in the development and IT sectors. On the other hand, Design Thinking can be applied to any field you can think of.

So feel free to enhance your daily work with useful elements from Design Thinking that are not part of Scrum.

How to improve your day-to-day practices

While Scrum provides a robust framework for managing complex projects, integrating Design Thinking practices can significantly enhance its effectiveness, leading to more innovative solutions and a deeper understanding of user needs.

Here’s how you can infuse elements of Design Thinking into your Scrum events, along with the benefits you can expect from this synergistic approach.

  • Embracing Empathy in Sprint Planning

Sprint planning is more than task assignment and goal setting; it’s about connecting with user needs. Begin sessions with a brief user story or persona, like feedback from an interview or a day-in-the-life scenario, to align the team’s efforts with real user problems.

  • Ideation in Daily Stand-Ups

Daily stand-ups focus on progress and issues. To add Design Thinking, occasionally have mini-ideation sessions to tackle specific challenges. For example, brainstorm solutions for a blocker together, fostering collaboration and innovation.

  • Prototyping in Sprint Reviews

Sprint reviews are an opportunity to showcase the work done during the sprint to stakeholders. Enhance these sessions by adopting the prototyping mindset of Design Thinking. Instead of only presenting completed features, consider showing work-in-progress prototypes or even paper sketches for upcoming features. Encourage feedback not just on the work done but on these prototypes as well. This practice can lead to valuable insights and ideas that can be incorporated into the next sprint.

  • Testing and Learning in Sprint Retrospectives

In the sprint retrospective, reflect and learn by incorporating the ‘Test’ phase of Design Thinking. Review not only what was done but also user feedback, analytics, or test results. Discuss implications for the team’s approach and how to adapt strategies moving forward.

Design Thinking is universal

Design Thinking is a universal problem-solving framework that can be applied across various fields. Whether dealing with academic complexities or professional challenges, Design Thinking provides a structured yet flexible approach that promotes deep understanding, creativity, and continuous improvement. Its principles can be adapted to almost any area, making it a valuable tool for anyone aiming to solve problems more effectively and empathetically.

For those new to Design Thinking, always start with empathy. Take the time to truly understand your users and their needs before jumping to solutions. Keep an open mind during brainstorming sessions and don’t be afraid to explore wild ideas – they often lead to the most innovative solutions.

By combining the structured approach of Scrum with the creative process of Design Thinking, you can deliver more innovative and effective solutions.

Jun 18th, 2024
5 min read
Jakub is Junior Software Engineer at Infobip. He works on internal services, primarily using the Java programming language. He finds peace in writing clean code that will save the world :smile:

Jakub Hricik

Jakub is Junior Software Engineer at Infobip. He works on internal services, primarily using the Java programming language. He finds peace in writing clean code that will save the world 🙂