Typical Software Development Process
For decades, most software development has followed a process much like this:
- Use Case – We need software that does something meaningful.
- Specs – We gather specifications and create scope documents.
- Design – Our designers create wireframes and screens.
- Develop – Our developers code it.
- Test – We make sure it isn’t buggy and meets the specs.
- Deploy – Launch and everyone is happy, right?
No, often everyone isn’t happy. It works, but it doesn’t. It fails to address the needs and pain points of the users. It missed key functionality that was under the radar. It might even be worse than what they had before, and your team hates what is being forced upon them. If you are lucky, multiple costly iterations later, it starts to become useful. If you are unlucky, it might be a total failure, and you have to refactor or start over. If you are really unlucky, your company is crippled or doesn’t survive.
So, what went wrong?
Most reasons for software failures that plagued companies in the past are no longer an issue. Software engineering has come a long way in the last decade, and the days of software riddled with bugs are, thankfully, mostly over (assuming your engineers are competent). But brilliantly engineered, cloud-native, containerized software that meets the specs with great DevOps can still fail. Spectacularly.
This isn’t an engineering problem, it’s a cultural problem.
The Design Thinking methodology can help you solve this problem. It focuses on concepts like Empathy, Ideation, and Collaboration. It’s simply a framework for building great products. Let’s compare the typical development process to one that is driven using Design Thinking principles.
Planning & Specifications
Prototype & Validate
This illustrates a completely different mindset. Software development focuses on the solution, but good product development focuses on the problem.
We are not going to cover every aspect of Design Thinking in this short article but know that the first step of a great product development journey is empathy.
Empathy & Falling in Love with the Problem
We human beings are passionate and about our ideas, and it is far too easy for us to fall in love with our solutions. The great Richard Feynman wrote:
The first principle is that you must not fool yourself, and you are the easiest person to fool!
When we engage with companies wanting to create software, whether they have a SaaS idea or need to build something to automate a business process, it is common for them to believe they know what their customers or their team wants. If they don’t, it can create the “Solution in search of a problem” scenario, where what is built doesn’t truly address the needs and pain points of the user. This can happen at every level, and it is not uncommon for even big companies to go down the wrong path and create systems and solutions that just don’t work for their intended use.
You might be thinking: “But wait! I know my market / customer / team, and I have a great idea that I know they need.” Hold that thought – you certainly might have the greatest idea since the invention of the wheel, but what if you are wrong? The cost of that is enormous.
As proponents of Design Thinking, we know that falling in love with the problem is one of the most critical aspects of the product development journey. What does this actually mean and how do you practice it?
Design Thinking gives us a framework for stepping back and starting with the most fundamental part of the development journey - empathizing. Empathy for the user means that we are in sync with their needs, desires, motivations, and goals. We listen, observe and care about the problem. And it’s collaborative – your users and team guide you at every step.
So how do you do this in real life? Here are a few activities around this process you can implement:
Engage with your users, watch what they do, and you’ll see what they need. Get inspired!
Ditch the surveys. Talk to your customers and users. Lean Canvas and other processes are great for learning about their needs, pain points, and truly understanding their problems.
These can be a great way to learn what people do, say, think and feel as it relates to a specific problem.
Those are just a few of the tools in the Empathy toolbox, and in the future, we’ll talk more about this.
We’ll be talking a lot more about Design Thinking principles in upcoming articles, but I’m going to highlight another aspect of Design Thinking that’s crucial to the product development journey – Innovation.
The three principles of innovation are Desirability, Feasibility, and Viability. Innovation lies at the nexus of those three principles.
All three of these are required, and organizations that ignore any one of these principles are doomed to have a failed product.
The Product Development Journey
Creating great digital products just doesn’t happen. It takes the right mindset and a better approach. Shifting your focus from the solution to the problem is a powerful thing, and this way of thinking can permeate every aspect of your organization’s decision-making. When applied to your systems, your users and customers will have far better experiences that meet their needs, will be more feasible, and sustainable as a business model.