Chapter 2: Let's start with design thinking

(By Mario Linares-Vásquez, Diana Solano-Beltrán, Cristian Vinasco-Castañeda)


Before starting this chapter, you should check the "22+ Funny Design Fails Show Why You Need A Designer" article by Viktorija G.

(Free photo by Mikael Kristenson on Unsplash).

Funny right? Google "design fails" and you will find hundreds of funny examples.

Why do we care about design? As engineers, our main goals are to provide solutions to real life problems (in particular software-based solutions), and propose innovative ideas that will improve everyday activities. >Wait a second..., some social networks might not have improved everyday activities :smiley:.

Let's think about design as a mechanism that assures that we are building solutions, products, or services that can be innovative or will be accepted by a sample of the population. In the specific case of software engineers, design is a very powerful tool that helps build software solutions that achieve high quality as perceived by the users. Here, the meaning of quality is very important. Let's define quality as how good a solution is to satisfy/comply with stakeholder requirements. In this sense, quality includes not only the quality attributes of a software system, but also the ability of the system to provide the users with the right features (i.e., useful and expected features) implemented correctly (i.e., the features work in the expected way).

The ISO defines quality as "[t]he totality of features and characteristics of a product or service that bear on its ability to satisfy stated or implied needs". [^1]

If we ask you to make a list of the phases of the software development lifecycle that involve design.... our guess is that you will answer "duuh!! the design phase dudes". However, we would like to respectfully disagree with you and tell you that all the phases in a software development process must involve design. We design software structures using software engineering and architecture methods. We also design test cases and verification procedures to assure the quality of the system. We even design the features and GUIs of systems... and there is more. We design/tailor software processes to specific contexts.

Software systems are amazing structures that need to satisfy stakeholder requirements. Therefore, design is a must and an activity that concerns the whole software development lifecycle. However, how can we assure that design is involved in all the activities? "Easy": thinking always as designers!!!

[^1] http://www.fao.org/docrep/w7295e/w7295e03.htm

Last updated