Applying Design Thinking in Software Engineering
Digitization, Digitalization, Digital Transformations .. these are the buzz words we hear often in all the organisations. This has become even more essential in the COVID era and all the organisations are racing against time to transform their business model to “Digital Business” to provide innovative products and services to its customer on multiple channel, improve customer experience and operational efficiency.
May I ask you a question — How do you define a Digital Business?
To me, Digital Business is a Business Model that is Digital. You may say that in today’s world technology is woven in the fabrics of all the business. This is true, still i would say in digital business model, business requirements, customer value and outcomes should always be prioritised over tech solutions and platforms in digital initiatives.
Why Design Thinking ?
In this digital age, ability to leverage power of small ideas and continually innovate determines winners and losers among teams. Expectations from Information Technology (IT) / Digital Technology (DT) leaders are at all time high. To be successful in this digital era, Software Engineering teams must shift focus from project to product mindset. In this direction, software engineering leaders can focus on
- DOING RIGHT THINGS that matters to the customers or businesses? Team should clearly understand the right customer problem they are solving.
- DOING IT RIGHT WAY by adopting modern software engineering practices and technology stack and platform to build a digital ecosystem.
One of the common pitfall i see with SWE teams is immediately getting into solutions mode by wearing technology hat. In the process they loose oversight of the customer value due to lack of insights on customer empathy, clarity of big picture and real problem to be solved. This often leads to applications or products loosing its relevance sooner than expected after launch.
Where Design Thinking fits into Software Engineering?
I see modern Software Engineering teams are getting mature in doing the things “Right Way” with adoption of Agile, Lean & DevOps practices. Question Product Managers and Engineering managers should ask first — Am I doing the “Right Things” to be successful in this digital world. Software Engineering teams needs to focus on adopting these three pillars for shifting from applications to product mindset — Design Thinking, Agile Development & Secure DevOps.
- Design Thinking — Product Managers and Engineering leaders must adopt customer centric approach for value creation. This means focus should be on understanding the customer journey, customer empathy to understand the pain points and then design and develop what (solutions) that matters to the user most. In lean manufacturing world, this is also called Gemba walk — go to place where your customers are or real work happens. Team should think big, go wild, come up with all sorts of ideas and follow the approach — prototype, test and refine to narrow down to the fittest idea or solution.
- Agile Development and Lean Startup — From the choose set of validated ideas or prototype its time to scale the solution — getting from Pilot to production phase. By now product features and roadmap would have taken a good shape. Software Engineering team should follow Agile development to deliver product features iteratively and taken early feedbacks from the market or customers. Through this continuous feedback loop, development team continues to refine the features to align with customer value. Some of the teams also apply Lean Startup — build, measure & learn cycle to refine the product features and strengthen in market success of the product. One of the common trap product development team get into is mixing user centric design process and lean startup. Recently i came across a very good article from IDEO on When To Use Design Thinking Vs. the Lean Startup Approach ?
- Secure DevOps Practices adoption enables collaboration among IT & business teams, building continuous delivery pipeline for accelerated product delivery with focus on data security & regulatory compliance. Key to success over here is standardisation of Software Engineering practices, setting the right culture (collaboration & shared vision) and extreme automatons of repetitive development tasks — Infrastructure management, code quality checks, build, deployment, testing and operations activities. This is a key enabler in product features releases on demand and thus improves overall agility of product development process. Setting DevSecOps right is a separate topic all together and i will share some of the best practices in a separate article.
What is Design Thinking ?
Tim Brown from IDEO says
“Design thinking is a human-centered approach to innovation that draws from the designer’s toolkit to integrate the needs of people, the possibilities of technology, and the requirements for business success.” Thinking like a designer can transform the way teams develop products, services, processes, and strategy.
I was introduced to the principles of Design Thinking and how to apply the same during a workshop i attended in MIT Sloan School of Management, Boston. Since then i have been an avid practitioner of Design Thinking at work and also in my weekend volunteering activity in helping solve education inequality in our society. I have experienced immense benefits that is sometime hard to quantify but easy to experience.
Here is a very good explainer video on Design Thinking from IDEO U that i would recommend.
There are multiple methodologies for applying Design Thinking. But core principles are same. I am following Design thinking process laid out by Stanford Design School. This is a five step process
- Empathize — Empathy is the foundation of human-centered design. Here you work to fully understand the experience of the user for whom you are designing. Do this through observation, interaction, and immersing yourself in their experiences.
- Define — In the define mode, you unpack your empathy findings into needs, insights and scope a meaningful challenge.
- Ideate — The goal of ideation is to explore a wide solution space — both a large quantity and broad diversity of ideas. From this vast repository of ideas, you can build prototypes to test with users.
- Prototype — Prototyping gets ideas out of your head and into the physical world. Develop a low-cost physical model to experiment with your ideas. Driving interactions among design team , users & other stake holders with prototypes drives deeper empathy and shapes successful solutions. Follow agile practices for iterative development of prototype or product itself. Continue to take the feedback from the stakeholders.
- Test — In the testing phase you test the MVP (Minimal viable product)1 or prototype with a diverse set of user personas to gather feedback, refine solutions. Remember we build product or services for our users and so do not shy away from continuing to learn about your primary users of product. The more we are connected with the end users, the better chances of adoption of the product. Take bold decisions if you need to take course corrections in terms of feature re-design or repriosatization.
All the cross functional team members from agile teams should participate in the design thinking process in ascertaining the problem they are solving is the real problem that exists and coming up a creative solution. Final solution should bring together bring together what is desirable from a human point of view with what is technologically feasible and economically viable.
To summarise, Design thinking is a multidisciplinary process that helps building innovative solutions for complex problems in a technically feasible, commercially sustainable and meaningful way. Applying design thinking techniques in Software Engineering to solve business problems can help teams offer greater value to customers, innovate and stay relevant. It is helping me making a big difference to the product we are developing by addressing the customers critical needs in a better way to improve customer experience and business productivity.
For further deep dive on the Design thinking process, below are some references
I hope you liked this article and found it informative. If you have any further questions or a feedbacks, pls do leave a comment.
Note : Feature images picture credit — pexels.com
This article has been re-printed from https://amitnotes.com/2021/03/21/applying-design-thinking-principles-in-software-engineering-to-drive-innovation/