Software Architecture and Design Thinking
The phrase Design Thinking was popularized by David Kelly, the founder and CEO of Ideo, a global design company that has worked extensively with Apple and other major organizations – to deliver key innovations in human-centric design. For example, Ideo designed the mouse that was used in the earliest MacIntosh computers in the mid-1980s. David Kelly’s most significant contribution lies in the fact that he recognized design as a process and described it as an iterative, human-centric activity – one that can deliver successful innovation in a sustainable manner. The foundations of Design Thinking can be traced back to a book by the economist/cognitive scientist/computer scientist (and a Nobel Laureate), Herbert A Simon, in his book – The Sciences of Artificial, in the year 1969. Many of the ideas in this book evolved into the principles of Design Thinking. A fascinating man, Herbert Simon was one of the few who were awarded the Nobel Prize and the Turing Award.
At its core, the design process encompasses the following steps:
Empathize: put yourself in the user’s shoes and identify needs and problems
Define: the problem statement
Ideate: create ideas, challenge existing state-of-the-art, find solutions
Prototype: find solutions for the problems identified in the first three steps and build experimental prototypes
Test: test your solution and refine it by revisiting any or all of the previous steps
This article does not explore the various principles of Design Thinking or elaborate on the process defined above. It does however, explore the relationship between Design Thinking and software architecture in the context of building innovative digital solutions. Excellent material is available all over the internet for people without a design background, who want to read further. In addition, there’re several online courses that can help a reader acquire a basic understanding of the principles behind Design Thinking. But, one must recognize that this is a specialized discipline which requires years of education and practice to become an expert.
Design Thinking has also been applied to solve problems in areas beyond product or service design. The process has been successfully used to define as well as refine corporate and marketing strategies, in addition to problem-solving in general. Even internal software architecture and design problems can be solved using the process defined above (something that knowingly or unknowingly is being done so very often under the umbrella of agile methodologies).
In the context of digital solutions, Design Thinking needs to be supplemented by support from software architecture teams for favorable outcomes. There are two important questions one must keep in mind while following the design process:
Feasibility: is the solution feasible, given the state of technology at any point in time?
Viability: is it likely to become a part of a sustainable business model?
Here’s where software architects come in:
Software architects can contribute towards assessing the feasibility of solutions that are being considered during the ideation phase, thus eliminating fruitless prototyping of solutions that are not feasible, given the contemporary state of technologies. They can help the design teams ‘fail fast’ with ideas and solutions that cannot be supported by software development using the tools and techniques available to the engineering teams in the present or the near-term context.
Similarly, they can ascertain the viability or the possibility of sustainable success of a digital solution by assessing the scalability of the proposed solutions. It is possible that a solution or an idea is extremely innovative and has the potential to improve the user experience by an order of magnitude. But, if the quality of the experience deteriorates as more and more users start using the system, the long-term sustainability of the solution becomes questionable? This aspect can be effectively addressed by experienced software architects in the design process.
They can also assess an additional aspect of the ideas generated out of the Design Thinking process, and that is testability. All ideas generated by the process must be testable. From here, assessing the testability of an idea is a non-trivial problem, especially in the context of a digital solution. But if an idea is not testable, or if it is too expensive to test, or if the test results are hard to quantify, then such ideas must not be passed on to the prototyping stage. This is again, keeping in line with the principle of failing fast. Solutions not likely to succeed must be discarded at the earliest.
As one can see, the involvement of software architects in the design process can contribute significantly towards the assessment of the feasibility and viability of designs. Equally, software architects can benefit by participating in the design process by applying the principles of Design Thinking into the components that are under the hood. Server-side software, data storage, and other invisible stuff can be designed better by following Design Thinking principles.
Many design professionals have pointed out that software architects and developers seem to be extremely left-brained and are not very empathetic towards users’ problems and concerns. After all, these are the guys who think that the Linux command line is the best UI or that Emacs is the best editor! While these concerns may be valid in some instances, by and large, software architects tend to be early adopters of experimental products and therefore can appreciate what kind of experience is good for the user, or even bring in new ideas from software that is really in the fringe areas of the geek spectrum.
Apart from software architects, people from other disciplines such as finance can contribute to assessing the viability of the solutions. In general terms, it might be beneficial to involve people with diverse skills and viewpoints in the design thinking process. An organization must consider exposing people from all disciplines to the design process as well as the method of Design Thinking. The results may surprise everyone.
Having said that, of course, design and UX professionals must eventually lead the effort and own the outcomes.
Read other Extentia Blog posts here!