Designing the architecture for software-intensive systems can be difficult, even for experienced architects, let alone developers transitioning into an architect’s role. While the prevailing literature does a great job of describing core software architecture concepts, it does a relatively poor job of sharing practical advice for how to actually “do” design. As a result we, as a software architecture community, know a lot about software architecture but have a hard time teaching new architects how to apply this knowledge.
Design Thinking is a framework for understanding and creatively resolving problems. Design Thinking practices are often human-centered and encourage designers to build empathy with stakeholders who experience the problem and will ultimately benefit from a solution. While Design Thinking has roots in industrial design and urban planning, it has only recently been applied within the software industry and only then within the relatively narrow scope of user interface design. This is too bad as I’ve found Design Thinking to be a useful tool in the context of software architecture as well.
During this talk I will share my experiences adapting practices from the user experience community for use in architecture-centric design. I will first establish a foundation for user-focused design theory and then describe practical methods for applying design thinking in the context of software architecture with examples from my direct experience.