Everything created by humans is designed, software as a subset of everything, is therefore always designed.
A short video that is simply the best example of what it means to be a Software Developer AND Designer without the methods and thinking in this short course. Without raising our hands, I assume we are all guilty of the punchline delivered at the end of this that asks and answers the question, "Who designed this?".
Considering the needs of Humans will more positively impact your users' outcomes, business outcomes and can increase the enjoyment of your programs. Doing this will allow you to maintain control and sanity over your software development and deployment. The Business Value of Design
Tools have existed by some accounts for at least 2.6 million years in and around human civilization. These physical devices, had baked into their manifestation or implementation the various interfaces we used with them. Think of an axe or shovel, intrinsically these have the affordances to cut or move things. The handles, as a signifier, eventually shaped to more comfortably fit the hand, signify that you could pick it up on that end of the tool. On the other end, you have some sort of stone or eventually a sharpened metalhead, again another signifier to possibly avoid that end of the tool. This hard end would eventually be sharpened to enable the cutting of wood or into the earth.
Affordances and their signifiers are intrinsic to the history of man and the development of civilization, and in fact science suggests it is part of our DNA. Studying how babies explore and learn about the world around them, they don’t notice that things are metal, shiny or colorful. Instead they categorize items by their capabilities, in other words affordances and signifiers have been with you from your first day on the planet.
As we move to virtual and digital experiences, by using screens, fingers, hands, mice and keyboards, for our interactions, with software, we have lost the intrinsic affordances and signifiers that have been baked into our tools for millennia. The amazing thing about software is that it can provide the affordances to do nearly anything, however, the worst and best is that software can be anything. This capability to do or be anything, gets juxtaposed with the challenge that humans are not getting any smarter, especially when measured against the increasing capabilities of computing, networking, storage, and memory. The challenge and opportunity for us as developers, is to provide the affordances and signifiers for our fellow human users for the software that we create.
The intersection of the science and art of software development and the science of what makes us human, and how they combine will be a core theme of the next few modules.
Computers enable just about anything, which is the power and danger of them in the context of giving people hints about what is capable with the software delivered by us. With the power of AI/ML, OptaPlanner, and Moore’s law, more capabilities are available via software, however, humans are not getting any smarter, and evidence suggests that humans are getting more and more overwhelmed with all of the extensive choices afforded with technology, thus leading to increasing unhappiness and dissatisfaction.
The prompts and other indicators that signify to an end-user what use/s are available and empowers the user via self-discovery of the capabilities inherent to the experience being delivered.
Humans make mental models of the world around them, including the software that they use. When creating these models, they can easily and simply ignore something in front of them. Humans can happily and easily ignore the low hum of noise in a coffee shop, but the second someone calls their name, they will instantly turn their head to face the caller of their name. Even if this call is super faint and barely audible to the user. Our 5 senses are constantly bombarding our brain with stimulus and our brains cancel out those items that are not deemed important, thus allowing us to clearly and simply miss things.
More than 25 years ago Jakob Nielsen created what is, and still the best checklist for evaluating software to see if it meets the needs of humans. These 10 items in a concise manner empower you to think about the signifiers and affordances of your software. While you might think this list only applies to software with a GUI, I would argue that RESTful APIs, command-line programs, and general APIs will benefit from thinking about these 10 items and fairly grading your adherence and compliance to them. Your first activity, will be to use the linked spreadsheet below, to score something you are working on, have worked on, or have used.
Pick a specific feature flow, hopefully, something you don’t work on every day, and use the below spreadsheet to score it. The Ten Heuristics Worksheet, make a copy to edit