This blog post uses Stairs as a visual illustration of the concept of complexity and gradience. It is the reversal of things being “black and white”.
Stairs distinguish the difference between different floors with multiple steps in between them. This difference between the floors illustrate progression, a form of uni-dimensional complexity. It is uni-dimensional because there is a change in a single dimension: the floor level. It tackles complexity, because the changes are not black and white like there exists the first floor and the second floor, without any transience in between.
Each floor, each step is different
When climbing stairs, you recognize when you’ve changed floors. However, each step you also take in between the floors, you experience a noticeable change in vertical movement.
In the illustration below, floors can be represented as each integer (1, 2, 3, 4), as represented by the
f(x) = floor(x) . On the other hand, the steps can be represented as incremental progress represented by a simple linear function
g(x) = x which is not presented below as it is trivial to visualize.
- Floors – step function (1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 6)
- Steps – linear function (0.20, 0.25, 0.30, 0.50, 1.00, 1.25, 1.50)
In software engineering, each floor might represent clear progression in your career such as progression from a junior software engineer, to software engineer, to senior software engineer. These are discrete changes with corresponding increases in both salary and responsibilities. They correlate with the impact that you bring to the business. On the other hand, each step might represent each 2-week sprint that you accomplish, or each milestone project or feature you build. They may not affect your salary, but they develop your skills and competence.
This illustrates gradience: discrete changes which are significant (floors), and intermediate changes which are incremental (steps).
Note: vertical movement is obvious in each step of a staircase, but it is less noticeable in the continuous nature of elevator movement. Note however, that both steps and elevators illustrate incremental progress; the difference only is that stairs are more akin to a step-function (0.1, 0.2, 0.3, 0.4), while elevators are more like a linear function (0.16, 0.1653, 0.1732, 0.1834, 0.1932, 0.2014).
Examples of gradience in other domains
- Different breakfast meals in volume and complexity e.g.
- a simple piece of toast with eggs
- beef steak, garlic rice, scrambled eggs, orange juice
- a 5-course meal
- Different levels of response to criminal activity e.g.
- a strong reprimand
- a ticket
- jail and fines
- death penalty
- Different levels of intimacy in relationships e.g.
- close friends
- intimate relationships
- Different levels of saying no to a person e.g.
- lightly taking the situation and laughing away while declining
- saying an explicit and plain no
- explicitly setting boundaries and expressing strong aversion to the request
- moving yourself physically away from the person
- filing for a restraining order or requesting external help to say no
Gradience in Social Norms
You, along with many other people, already understand the concept of gradience or levels. Social interactions are naturally complex, as they communicate information through acceptable behavior and norms. Here are some examples:
- We shouldn’t expect a full-course meal with mind-blowing customer service at McDonald’s because it is a self-service fast-food chain.
- We don’t expect death penalty to be sanctioned by parents when their children learn the concept of stealing.
- We know we’re not supposed to suddenly kiss a stranger on the lips, because that’s not a human interaction acceptable for the level of your social relationship.
- We know that it is inappropriate for a woman to file a restraining order immediately after a man introduces himself.
Calibrate using Context
Having acknowledged and observed the different levels of gradience, we now ask: How might I use the concept of gradience to respond to situations with appropriate levels for appropriate contexts?
Here are some prompts to reflect on:
- When was the last time you were angry? Do you remember what you said and did? What would it have looked like if you stepped higher or lower in your anger? Are you satisfied with your response and did it get you the result that you wanted?
- When was the last time you fantasized or desired something? How specifically did you define this dream to make it achievable? Did you step up your efforts to make it a reality, or did you step down and settle for less? Are you satisfied with the outcome, or could you have achieved more if you had taken a higher step?
- When you were tasked to program a certain feature, where did you find yourself in the spectrum of “get it to work” versus “it must be perfect”? Could you have stepped up your efforts to create a more polished feature, or did you step down and settle for a bare minimum? Were you able to distinguish the appropriate level of time and effort to complete the task, or did you overstep or underestimate the amount needed?
- When you want to purchase a new gadget like a phone or computer, what is the appropriate level of money that you feel you should spend for the value you want to get? Could you step up your budget to get a better quality device, or are you stepping down and settling for a cheaper, less capable option? Have you considered all the factors that go into making this decision, or are you making a snap judgement without stepping back and evaluating all the options?
I personally love this mental model because I value growth deeply. What an excellent way to grow by learning about the complexities of life! What I love about it is it begins first with observance: do you acknowledge the difference in discrete (floors) and incremental (steps) changes? And it follows through with action: Which step do you find yourself most comfortable, or more effective in your goals?
The mental model of The Stairs nicely pairs self-awareness with action.
Reversal: Black and white
There are certain situations where there is no “gray area”. For example, for a non-law-practicing layperson, human rights is a clear black and white area. You’re not supposed to infringe on other people’s rights, or harm or kill others.
However, when a layperson enters the court room specifically for a manslaughter criminal case, the professionals from both parties must intervene to define carefully the discrete and incremental distinctions.
Acknowledging complexity is overlooked by many, and for various reasons. Some do it subconsciously because of ignorance, some do it consciously as a way to rapidly trim waste of processing. We explore the following nightmare scenarios:
Naivety: Embrace the unknown
For software engineers, it is important to recognize complexity in order to design effective solutions. However, some may struggle with this due to inexperience.
Inexperience can make the unknown seem like a blank space, where the possibilities are limited to what is already known. This is similar to the concept of fog-of-war in video games, where part of the map is covered in black, representing the unknown. Inexperienced individuals may not know that there are more possibilities beyond what they currently know.
Additionally, a potential lack of creativity can also hinder one’s ability to recognize complexity. Similar to a painter who only uses one color, a person without creativity and a willingness to explore beyond what is already known may struggle to experiment and discover new solutions.
It is important for software engineers to be open to new ideas and to approach problems with a creative mindset in order to effectively navigate complexity. Here are some prompts to reflect on how to embrace the fog-of-war as an opportunity for learning, rather than something to fear:
- How regularly do I acknowledge the things that I know I don’t know?
- How regularly am I careful about sweeping generalizations?
- Am I consciously practicing accurate truth by qualifying my statements?
Laziness: lack of incentive
Laziness could be a factor that prevents a person from putting in the effort to explore the difference, or what each level looks like. There are times when laziness affects our prioritization (I’d rather just sit and relax rather than perform thought experiments).
This highly depends on the context, but it could possibly lead to a person not bothering to recognize, accept, and understand other potential cases and this can be compounded with the failure to make a timely and wise decision to pursue exploring the levels at a more relaxed and controlled environment.
Choosing not to explore the levels does not always entail foolishness. On the cases where the individual actually recognizes and acknowledges that different levels exist, it is not a failure of applying the mental model but is instead a conscious decision not to elaborate on the mental model. This may occur when they have the capability and creativity to infer or expect what is unknown, but a difference in value prioritization dictates that it would be better that they don’t explore at all. You understand and are able to explore the different levels; you just choose not to.
Arrogance: Pride cultivates blindspots
Pride hammers the idea in that all that is already known is all that is there to know. What makes this dangerous is that the individual grows a blindside because of the arrogance. It is dangerous not being receptive to hear something different. Examples of this is when a person is not willing to accept that they can be wrong, or hearing other perspectives or understanding of the situation, or accepting that others do not have to think and act like you do.
Desiring wisdom overcomes this particular failure because wisdom requires you to possess a mindset of humility- knowing that we are working with partial information and that there are things that we could possibly not know.
Recognize and accept differences. Explore different levels. How broad is my experience? Am I lacking in my intellectual vocabulary? Am I missing a step in the stairs? What is the mid-point between two steps in the stairs?
How did you guys like the first article on mental models? Do you have specific applications of the mental model you want to share? Let me know what you think, or if you have any suggestions on how these blog series can be better improved.