Why design before development?
Questions from real developers
I am often asked by developers:
"If design can be iterated on rapidly, why do we have to design before develop?"
For many designers, the answer is so fundamental that the answer given is never quite fully fleshed out, because who would ask such a thing? Naturally, it leaves those asking the question in further feeling unsatisfied by the answer. So let's examine this from a development perspective.
When we write code, there are three users good code serve:
👩💻 The code itself is written for other developers, thus it should be readable, reasonable API surface, etc.
🛕 The codebase and architecture quality is for the organisation, thus it should be robust, technologies and frameworks future-resilient, thoroughly tested.
🙋♂️ The functionality and usability is what the user gets.
We can see here that the user is only a small portion of the considerations in designing and implementing good code. Moreover, the user is factored in a business-centred context.
When we spend the effort to research, understand, test and refine a strategy, the user as a human attempting to achieve something within a system becomes the focus for every subsequent decision.
The scientific method
There are seven steps to the scientific method:
You know what this looks a lot like? Yep, you guessed it. The research process in design is essentially the same thing. Design is not about making things look pretty, it's the application of a scientific process to develop a strategy for building a solution to a problem. Why would we skip this important process? I suspect that developers don't see the value because designers have not capitalised on the communication opportunity, such as directly developing and delivering functional and technical specifications, but that's for another article.
Have a look at the two loops overlayed.
Clarity of vision
A singular unifying understanding of the purpose and journey is critical to any well-functioning team, but even more so at the grand scale of ambition in delivering a seamless and smooth end-to-end service. A clearly defined strategy also helps efficient allocation of resources all things a developer can appreciate.
With limited resources, managing risk well becomes one of the x-factors to delivering a great solution that is also profitable for all stakeholders. We can avoid or proactively mitigate these risks through the scientific methods of the design process.
In summary, designing before development is a strategic and practical approach that contributes to the success of a project by providing clarity, efficiency, risk mitigation, and better communication among team members and stakeholders. While there may be cases where simultaneous design and development work well (e.g., in agile development), a well-defined design phase is still crucial for guiding the overall direction of a project and key to managing and mitigating risks.