We often think of software design as a linear process: understand the problem, come up with a solution, implement it, done. Occasionally, somebody remembers to draw a feedback loop from the implementation back to the problem statement.
The way we actually do software design is rather different. It’s non-linear. Through the act of design, we not only learn to understand the problem, but to reframe it. The purpose of domain modelling is to look for novel abstractions, and metaphors that change or perspective. We can explore the solution space until we come up with an interpretation of the problem that makes it solvable.
In this talk, I’ll tell stories from working on real world cases, like copyright claims systems and oil rig monitoring systems, to illustrate how with a richer understanding of our design process, we can create better solutions.