# Good Design and Bad Design What makes bad design bad? Mind that I am not referring to how "beautiful" or "ugly" an object or device can be, which might be a bit too subjective to be discussed in this text (although we will still discuss aesthetics a bit at the end of this section) but more about how *well* the object accomplishes its intended function. For starters, the word *well* needs some unpacking. Accomplishing a function *well* includes: - Being intuitive: it is possible to figure out how it works with objective information provided in a non-judgmental way? Or just by looking at it if the thing is simple enough. - Being simple: to operate it requires a small number of steps and configurations. - Being self-contained: to enjoy it you only need said object and little else. - Being reliable: the object functions without faults or unwanted interruptions for a stipulated time (we discuss this in deeper depth when we discuss [[Fault Tolerance and Security (Start Here)|fault tolerance and reliability]]). All this results in an object performing without friction. A lower-friction design ensures the object can harmoniously be part of a larger design and contribute to the intuitiveness, simplicity, self-contained nature, and reliability of its parent object. ==System-level harmony seldom comes from using a magic wand at the end of the development process but thanks to the individual contribution of low-friction objects that compose a complex system.== It is important to observe how the aspects of 'good design' listed above are cross-coupled. With higher simplicity we increase the probability of intuitiveness; it's harder to make things intuitive as they get more complex. With more self-contained designs, we increase simplicity because we reduce dependencies. With simpler designs, we decrease the probability of malfunction due to smaller combinatorial mechanisms of failure. An important factor to highlight is how these aspects are independent of scale. It does not matter if we are talking about a microscopic system-on-chip or a 560,000 kg large wide-body airliner. These things can be well designed, or not. Bad design happens and, alas, happens quite often. Bad design is somewhat puzzling considering that practically no technical object produced today depends on one single designer's judgment. Bad designs go through several steps and reviews and receive the scrutiny of several—let's assume competent—people. Ill-designed objects usually: - Take for granted we know things about them we don't know. - Take for granted the operators have skills they may not have or overload the operator with too many things to take care of at once. - Leave critical aspects of operation up for the occasional operator interpretation or judgment. - Work due to 'accidental reliability': no one knows how long they'll work and it's a remarkable miracle they do in the first place. - Invalidate the main function they are supposed to fulfill. Story time: years ago, a spacecraft that had a "safe mode" programmed in its system software experienced a malfunction. During a phone call with the supplier of the control computer, one of their senior engineers said that "safe mode is unsafe and should not be used". We could only shrug. ### Rams' Ten Commandments Dieter Rams, a highly influential German industrial designer, is renowned for his work with Braun and Vitsoe firms in the late 20th century. His design philosophy is centered around the idea that good design is as little design as possible, which led him to articulate the 10 principles of good design. These principles are often referred to as the "Ten Commandments" of design and have had a profound impact on the philosophy and practice of design across various disciplines. Here\'s an overview of each principle: 1. Good Design Is Innovative: Innovation in design is essential, as technological development continuously offers new opportunities for innovative design. Good design should exploit these possibilities to help products meet the users\' needs in a novel way. 2. Good Design Makes a Product Useful: A product is bought to be used. It must satisfy certain criteria, not only functional but also psychological and aesthetic. Good design emphasizes the usefulness of a product while disregarding anything that could detract from it. 3. Good Design Is Aesthetic: The aesthetic quality of a product is integral to its usefulness because products are used every day and have an effect on people and their well-being. Only well-executed objects can be beautiful. 4. Good Design Makes a Product Understandable: It clarifies the product's structure. Better still, it can make the product talk. At best, it is self-explanatory. 5. Good Design Is Unobtrusive: Products fulfilling a purpose are like tools. They are neither decorative objects nor works of art. Their design should therefore be both neutral and restrained, to leave room for the user\'s self-expression. 6. Good Design Is Honest: It does not make a product appear more innovative, powerful, or valuable than it is. It does not attempt to manipulate the consumer with promises that cannot be kept. 7. Good Design Is Long-lasting: It avoids being fashionable and therefore never appears antiquated. Unlike fashionable design, it lasts many years—even in today's throwaway society. 8. Good Design Is Thorough Down to the Last Detail: Nothing must be arbitrary or left to chance. Care and accuracy in the design process show respect towards the user. 9. Good Design Is Environmentally Friendly: Design makes an important contribution to the preservation of the environment. It conserves resources and minimizes physical and visual pollution throughout the lifecycle of the product. 10. Good Design Is as Little Design as Possible: Less, but better -- because it concentrates on the essential aspects, and the products are not burdened with non-essentials. Back to purity, back to simplicity. Rams' principles of design have become a foundation in design education and are widely regarded as a set of criteria against which the quality of design work can be measured. They emphasize the importance of simplicity, functionality, and sustainability in design, values that continue to resonate in the design community today. ## Complex Can Be Simple All the systems we design have a user. The user has a key role in dealing with the complexity of what we do. Here, a _user_ is a very broad term outside the typical “human customer” role. A user can be either a human or just another system connected to our system. Computer science tends to use the word actor when referring to a computer interacting with another computer. The word user better captures the essence of what we are discussing here, instead of actor. A user is an entity that interacts with a system to utilize the system’s main function for some purpose. Users do not need to be human. Then, computers can be users of other computers. If the user is a human trying to use a computer system, it will be commonly called Human–Machine–Interface (HMI). In any case, while coupling to the system through an interface, the user is exposed to what is given to it for using the system of interest. In this process, choices can be made for showing or purposely hiding complexity from the user. Complex things can be perceived as simple things. Often, when we interact with the world around us, we realize it may be described in terms of underlying rather simple objects, concepts, and behaviors. But when we look a bit closer, we see that these simple objects are composite objects whose internal structure may be complex and have a wealth of possible behavior. That wealth of behavior can be irrelevant on a larger scale. Similarly, when we look at bigger scales, we discover that the behavior at these scales is not affected by objects and events that appear important to us. The world around us can be described by means of levels or layers of description. A level is an internally consistent picture of the behavior of interacting elements that are simple. When taken together, many such elements may or may not have a simple behavior, but the rules that give rise to their collective behavior are simple. The existence of multiple levels implies that simplicity can also be an emergent property. This means that the collective behavior of many elementary parts can behave simply on a much larger scale. The study of complex systems focuses on understanding the relationship between simplicity and complexity. This requires both an understanding of the emergence of complex behavior from simple elements and laws as well as the emergence of simplicity from simple or complex elements that allow a simple larger-scale description to exist. Complexity, in the end, heavily depends on the point of view. Complexity is part of the world, but it should not be puzzling: we can accept it if we believe that this is the way things must be. Just as the owner of a cluttered desk sees order in its structure, we will see order and reason in complexity once we come to understand the underlying principles. But when that complexity is random and arbitrary, then we have reason to be annoyed. ==Modern technology can be complex, but complexity by itself is neither good nor bad: it is confusion that is bad.== Forget the complaints against complexity; instead, complain about confusion. We should complain about anything that makes us feel helpless, and powerless in the face of mysterious forces that take away control and understanding. ![](you_are_here.png) > [!Figure] > "The Blue Pale Dot". Picture of the Earth as taken from Voyager-1. All complexity of the world is a dot in the sky for a distant observer (source: https://science.nasa.gov/resource/voyager-1s-pale-blue-dot/) ## The Tooling Problem If only complexity would be just a technical problem. But complexity creeps in every single aspect of an organization. As the organization evolves, everything in it gets more complex: logging in to corporate online services gets more complex, door access controls get more complex, devices for video calls get more complex, coffee machines get more complex, and even hand-drying equipment in toilets gets more complex. More people, more departments, more managers, more everything. More is more. As it can be seen, the Universe does not help us engineers in taming our complexity issues: everything around us gets more complex. As more souls join the organization, the division of labor gets more granular, communication complexity combinatorially skyrockets and cross-department coordination becomes a game of chess. Departments start to feel they have difficulties correlating their information with other departments’ information. There is an increasing sense of “lack of”: “lack of control”, “lack of tracking”, and “lack of awareness”. The result: an explosive ecosystem of tools and methods. With more and more elements in the org hierarchy appearing, gray areas bloom. Nothing like the ambiguity of something that perfectly fits in two or more different narratives, depending on who you ask. All of a sudden, spreadsheets fall in disgrace and everybody wants to replace them with something else, and a frenzy for automating everything kicks in. The automation, tooling, and methods _confusion_ can be tricky because it transversally cuts the organization. Thus, tooling grows detached from particular projects or departments’ realities and needs. They become ‘global variables’, in the software sense of the word. You change one and the implications are always ugly in many places. ==This is a sort of paradox: tools are usually used by the practitioners, but for some reason, the practitioners rarely get to choose them, but managers do== (they are defined top-bottom). As the big system evolves, practitioners long for tools more specialized for their roles. Organizations will spend lots of energy in stretching and adapting tools for use cases they were not designed for. In all this confusion, a great deal of revenue is made by the tooling world. This is a moment when the organization builds high switching barriers that may be impossible to overcome further ahead. On the other hand, allowing every team or project to define its own tooling and methodologies would be impractical. Hence, as the tech organization expands, a key part of the tech leadership needs to look after cross-cutting integration, with a very strong system orientation, to harmonize tools and methods to work the best way possible well across the _multiverse_ of projects and systems. Switching barriers are not only a result of greedy suppliers wanting customers to stay captive of what they sell. Teams create their own internal switching barriers as well. Switching barriers can take many forms, but in tech organizations, it frequently materializes in the system architecture and in the ecosystem of ad-hoc homegrown tools that have expanded and encroached beyond initial plans, where all of a sudden changing them becomes (or feels like) impossible, since the tool or subsystem is now affecting or influencing too many places and processes. You can feel the horror when thinking of changing those things for something else; usually, a shiver goes through your spine, it feels just impossible or prohibitively costly. This brings up a sort of “paradox of the bad component” where the apparent impossibility of changing them makes organizations decide to continue extending the conflicting components only to make the problem worse under the illusion that they would eventually get good in some uncertain future provided enough tampering and refactoring is performed. By adding more complexity to poorly architected things, we just make them worse. This is one of the main beauties of [[Modularity|modular design]]: it puts the power of choice back in designers' hands. Modular architectures make switch barriers lower, which is an asset when products are in the maturation process. Modular thinking can be applied at all levels of the systems design activity, and not just to the system under design. Ideally, all architectural decisions should be made with the mindset that no element of the system is irreplaceable. ## What Makes Bad Design Bad? Restrooms are like cathedrals of bad design. First of all, there is absolutely no standardization around toilets: soap delivery systems change like the weather. In one WC, you have to push a lever, in some other one, you must wave your hands like you’re [Marcel Marceau](https://en.wikipedia.org/wiki/Marcel_Marceau). In Rome, for instance, you may have to step on some pedal to get soap (I thought all Roman toilets were soap-dry until I embarrassingly realized this). Hand drying as well: paper towels from under, from above, air blow, air curtains. And what to say about that overly questionable rolling cloth concept that always gets stuck and uncomfortably wet? How come that thing ever passed a design review? Awful design. ### Signs of Good Design I will quickly leave any aesthetic matters out of the discussion. I am not referring to how “beautiful” or “ugly” an object can be—this might be a bit too subjective—but more about how _well_ the object accomplishes its intended function. Mind the word _well_ needs some unpacking. Accomplishing a function _well_ includes: - Being intuitive: it is possible to figure out how it works with objective information provided in a non-judgmental way. Or just by looking at it if the thing is simple enough. Which paves the way to the next one. - Being simple: to operate it requires a small amount of steps and configurations. - Being self-contained: to enjoy it you only need that object and nothing else. - Being reliable: the object functions without faults or unwanted interruptions for a stipulated period of time All that results in the object performing without friction. A lower-friction design ensures the object can harmoniously be part of a larger design and contribute to the intuitiveness, simplicity, self-containedness, and reliability of its parent object. System-level harmony seldom comes from using a magic wand at the end of the system integration but thanks to the individual contribution of low-friction objects that compose such a system. It is important to observe how the aspects of ‘good design’ listed above are cross-coupled. With higher simplicity we increase the probability of intuitiveness—it’s harder to make things intuitive as they get more complex. With more self-contained designs, we increase simplicity because we reduce dependencies therefore reducing the number of steps to operate it. With simpler designs, we decrease the probability of malfunction due to smaller combinatorial paths to failure. An important factor to point out is how these aspects are independent of scale. It does not matter if we are talking about a microscopic system-on-chip, a toilet dispenser, or a 560,000 kg wide-body airliner. These things might be well-designed, or not. Bad design is puzzling because almost no artificial object produced out there depends on one single designer. Bad designs typically go through reviews and the scrutiny of several—I want to believe—judicious people. I like to imagine the design review of the rolling hand cloth concept criticized above: It does take some skill and teamwork to design really, really bad things. Ill-designed objects usually: - Take for granted we know things about them we don’t know. - Take for granted the operators have skills they may not have. - Leave critical aspects of operation up for the occasional operator’s interpretation or good/bad judgment. - Work due to ‘accidental reliability’: no one knows how long they’ll work and it’s a remarkable miracle they did in the first place. - Invalidate the main function they are supposed to fulfill: for instance, a toilet towel that leaves your hands dirtier than before using it. In conclusion; luckily, we are surrounded by a majority of reasonably well-designed objects we don’t pay attention to, principally because they just work so we can carry on with our lives. Badly designed things annoyingly get our attention when we should be minding something else. Now and then, weird designs can give us a [chuckle](https://www.amazon.com/review/R397LX7BKT5Q0N) or two.