Good design is one of the core elements of the Enterprise Architecture discipline. I recently came across and was inspired by Mike Monteiro’s presentation at Webstock 2013. Mike’s presentation was a ‘call to action’ to designers of all walks of life to take their responsibility seriously and deliver good design. This caused me to re-visit a paper I presented some time ago at the Software Engineering Conference in 2010 that aimed to identify the principles of good design[1].
Mention ‘design elegance’ – and you usually get a knowing look, polite smile and a quick change of conversation topic. It is a subject often reserved for the nerd-dom elite, however, I’d like to contend that it is arguably the single most important challenge we have as architects and designers. Anyone can design a solution to a problem; it takes real ingenuity to design something that really makes a difference.
Conventional wisdom states that good design is one that satisfies key stakeholder requirements, however, more often than not stakeholders are the very people that made the decisions that lead to the ‘less than optimal’ current state environment. They rarely approach the table with a ‘whole-of-enterprise’ perspective as their priority, and on some occasions stakeholder requirements can simply promote poor design ideas.
In this post I’ll outline just three core principles that I contend are evident in all examples of good design (e.g., the iPhone, the Dyson vacuum cleaner, the Burj Khalifa, OOP and SOA, and Grameen Bank) and briefly describe how these principles might be meaningfully applied. These three design principles were identified after conducting an analysis on sets of design principles from a range of sources[2]and are specifically formulated to be used in a variety of business, information, application and technology design scenarios.
The principles are as follows:
- The Principle of the Separation of Concerns: A design should be comprised of a set of independent components each of which addresses discrete functionality requirements within the design problem space.
- The Principle of Optimisation: A design should provide a complete solution for the design problem space while achieving maximum economy of components, interfaces, and resource usage.
- The Principle of Coherency: All design components should be harmonised with the design purpose.
TOGAF®9.1 contains an excellent template for documenting principles that includes guidelines for how to document the name, principle statement, rationale and implications. I like to extend this template to also include a section that has a set of ‘assertions’ – statements that can be answered ‘true’ or ‘false’ depending on whether the application of a principle is evident or not in a given design. These statements provide a simple practical mechanism for assessing one design over another and the extent to which a given design principle has been applied.
The following are suggested assertion statements for each principle:
The Principle of the Separation of Concerns:
- Each component addresses a discrete and unique set of design functionality requirements.
- Replacement or failure of any one component does not compromise the design as a whole.
- Each interface type between components is standardised.
The Principle of Optimisation:
- The design problem space is completely addressed by the solution design.
- There are no unnecessary or redundant components within the design.
- All opportunities to re-use components have been identified and are realised within the design.
- Given the scope of the problem space addressed by the design, the design is evidently the most efficient in terms of resource consumption and execution time.
The Principle of Coherency:
- The design purpose is clearly described and well understood.
- All design requirements derive directly from the design purpose.
- Each component can be mapped to one or more design requirements.
Design Elegance Applied in Service Design Thinking
These assertions can also be applied to the outputs from business and service design thinking initiatives. The ‘Test’ step in an iterative Business Design Thinking process is a point at which to further refine an initial design. The principles and assertions outlined here can be incorporated into this step to rapidly call out opportunities to enhance the efficiency, rationalisation and robustness of a design prototype.
This posting is obviously not intended as the last word on elegant design, but rather to describe a simple, practical and evolving framework offered as a perspective through which to evaluate your own designs as an architect and designer as you take up Mike Monteiro’s call-to-action.
Further refinement of the wording of the principles, and/or contribution of additional supporting assertion statements is welcomed at the end of this post, as is further discussion on the comprehensiveness of these three core principles of elegant design, and their relevance to service design thinking.
[1] Note this material is based on a paper presented at the 2nd European Workshop on Patterns for Enterprise Architecture Management 2010 at the Software Engineering 2010 Conference in Paderborn, Germany.
- The reader is referred to the conference proceedings for additional detail on the principles and their application.
[2] Visual design principles, Construction industry design principles e.g., https://www.resilientcity.org, TOGAF 9.1
Image source: Flickr, Kennymatic