Over the past eighteen months, I have begun to notice a trend across a number of startup teams, taking the design process and applying new computational techniques and algorithmic developments. Through doing this, they are demonstrating their ability to find better solutions faster than a human designer might be able to unaided.
These companies are working on design problems across many areas. Most work has been done to date on applying these techniques to the rapid design of more attractive and intuitive layouts and interfaces, but we are now seeing them applied to design problems in areas including engineering (a component for a specific purpose), architecture (a layout for a new building) and biology (a molecule to target a specific disease).
So what computational approaches are people using here? Let’s look again at the five steps we outlined above:
- Empathise: This is generally still human led, with the work to understand the problem still being undertaken by the designer.
- Define: Programming frameworks are being created in each domain that allow the designer to encode the problem definition in a machine-understandable way through a set of rules or constraints.
- Ideate: Computers explore the search space set by the definition, performing a ‘brute force’ generation of potential solutions, and using evaluation heuristics including machine learning algorithms to narrow this list of solutions.
- Prototype: A subset of the solutions can then be prototyped, often through building advanced computational simulations which enable you to both visualise them and analyse their performance.
- Test: With advanced simulation, you often get the ability to test your idea in many situations or environments and generate quantitative results which allow you to benchmark different options. On other occasions, people may still rely on humans to evaluate the prototypes, and this is an area where crowd testing or A/B testing can be used to do this quickly and at scale.
Summarising this process in somewhat technical language, one could say that design is the process of exploring the solution space specified by a set of rules, evaluating options using heuristics to narrow this space down to a short list, simulating these potential solutions, and then benchmarking their performance to pick an optimal solution. Perhaps this design process then looks more like the below:
We are already seeing commercial applications that use these new design processes, but a number of interest challenges and areas for improvement remain:
- Creative spark: While good solutions to design problems often exist within the initially specified constraints, some designers would argue that the best solutions come when you break out of these in a ‘creative’ way. While the debate about whether an algorithm can ever be truly creative is ongoing, those building these new systems should think about how they can capture some of this creative rule breaking essence at the generation stage.
- Problem input: How good a result you get is today still governed by how well the input framework and rules allow the problem to be specified. As the power of AI increases, computers may be able to better comprehend the underlying problems themselves, more closely coupling problem discovery with solution generation to allow even more powerful exploration of the result space.
- Compute cost: While compute power continues to drop in cost and is today rarely a consideration I was surprised that, in some applications I have seen idea generation can still consume many hours and thousands of dollars. Advances in exploration and evaluation techniques will likely improve this, which will also allow for quicker iteration during the design process.
- Result presentation: User experience questions still exist about the best way to present back results. Those building these systems will need to establish how much of the internal reasoning and analysis needs to shared for designers to trust that the solutions outputted are good ones.