A good design communicates the intended use of an object. In the physical world, this communication is known as an affordance. Though he’s not the inventor of the term, I first encountered the concept in Donald Norman’s The Psychology of Everyday Things. This book is well worth reading if you design anything that other people will use, such as software.

The classic example of a poor design in the physical world is a door that makes it hard to tell if you need to push or pull to open it.

Programming languages also have affordances, and these affordances influence the kinds of solutions we develop. The more languages we know, the more we expand our design space so that we can come up with better solutions to the problems we face every day.

Over the next several weeks, I will give examples of affordances in the programming languages I’m most familiar with and discuss how those impact the kinds of solutions I design in those languages.