“I think nature's imagination Is so much greater than man's, she's never going to let us relax” ― Richard Phillips Feynman
Richard Feynman is one of the best communicators I've ever heard. He is the kind of person you can listen to for hours.
My favorite video about him is the one where he talks about a way of thinking. In the video, there is a story about him conducting an experiment to explore our perception of time. He counted on his own trying to do different things at the same time, such a reading, washing cloches and another ones. However, he also realized that he couldn't speak while measuring the passage of time.
He shared his insights with a friend, who immediately said, “it is not possible for you to read and count at the same time. However, I can count the time and speak ”. After testing it, Freyman astonished because, effectively, his friend could count the time and speak at the same time.
They spent a lot of time arguing how that could be possibly, when they went thought the method each one used, they realized that the Feynman method involve counting the time while speaking by himself, nevertheless the friend's method was completely different; it relied on visualization of each number.
Perhaps it was impossible for Feynman to speak and for his friend to read due to the different methodologies used.
High quality discussions are always worthwhile. There is no way to avoid debates in technology and business, the main reason is that uncertain times require companies to change, even faster than few years ago, but also these changes require agreement within teams. The adobe CEO shared some thoughts, “I can't remember the last time that the team was complete aligned”.
There are a couple of the “antipatterns” in tech discussions, two of them are particularly remarkable. The first is when people decide to put facts away and instead move forward in the discussion using emotions. The second is the rule of meanings, which states that if there are ten people in a room discussing one definition, we will have ten different definitions.
Being emotional about different things is natural for humans, we are influence from experiences we have lived before, and sometimes people decide to fight tooth and nail backing up a point based on their experience, omitting all the arguments on the table.
This article is focused on sharing some thoughts around discussions and debates, backed up it with information from different sources. It is relevant in the field of software development because as software developers we need to be ready to discuss and argue about technology. Technology is mostly about change, which often involves change people mindset. “ If you want to change things, you need to change people's mind”.
There is a beautiful term called semantic disagreements, which refer to two or more people giving the same word defining meaning.
The title 'Why penguins can't fly?' comes from an interesting study that was shared recently. In this study, people were asked to describe different animals and politicians, asking for different adjectives to define them.
The results were fascinating, because that showed that even when people are agreed in some things (for example, not confusing a penguin with a puffin) they mostly disagree on abstract definitions and descriptions based on a lack of experience.
One interesting example is regarding penguin weight, some people have a very strong intuition they are heavy because they can't, fly, even though they have never touched a penguin before.
Another important finding in the study is that the majority of people thought that others would agree with their definitions. What this means is that people are unaware of how misaligned they are.
Technology is mostly about abstractions
Design patterns, serverless architecture, algorithms, CI/CD and many more concepts in this field are abstracts. These concepts often become the main topic of discussions in technology, involving people in discussions about abstract terms and even terms that don't have official definition. The probability that they have the same definitions is close to 10%! , that is crazy.
How deal with misalignment?
Certainly there are some ways to address discussions. One approach could be that every disagreement should start with some agreements. This is one of advice from Bo Seo, who has been a two-time debate champion. It helps establish some 'frameworks' before to take decisions.
When and why use certain architecture? When should you use certain technology? What is the purpose of these technologies on our context? . These are some questions that could help to define a good bases from a discussion. However, without doubt, a good tool to use in argues it is the question of What do you mean?.
What do you mean?
It is common to find people in different roles participating in tech discussions, the reasons is because it is necessary to analyze architecture and implementations in different angles. One thing that comes to mind is an analogy from my university days when we were discussing cloud computing with our teacher.
There is a parable called 'Blind men and an elephant' which consists in six blind men in village which were discussing how an elephant looks like. A generous owner of a garden with elephants decide to help them by letting them enter and visit an elephant, each man starts to appreciate the elephant by touching it for different sides ended up with different descriptions, such as shake, wall, huge fan and so on Show Figure 3.
This situation happens in different context, whether it's defining a technology, understanding a problem, or analyzing different solutions. Each person sees the issue from different angles, and it is not wrong, what we must do is learn to deal with it. Clarifying twice is crucial to align with other teams. Words like real-time have multiple meaning depending on who is defying it. To avoid mistakes like over-engineering, it is important always ask what do you mean?
“We are what we know". Experience is one of the more valuable things as professionals, because that give us light to know where to walk. However, using experience keeping in mind the context is so important. Remember that correlation does not imply causation you may have a bad experiences before with some technologies, but that doesn't mean they will never work.
There are a lot of cognitive bias, which human use to create their 'subjective reality'. One of the most dangerous is confirmation bias, Show figure 4, the reason is that even though a person is wrong, they will try to find limited information ignoring a big part of source just because it helps to confirm their point and makes them feel confident about it.
Cognitive bias+misalignment is the perfect equation for chaos it is so essential to be aware about different cognitive biases, engage in introspection, and recognize when you are experiencing them. Learning how to detect it and deal with these biases and finally practicing good habits can help you to avoid them. One such habit is listening carefully.
Technology is about changes and now things are changing faster than few decades before. Each year we are seeing new remarkable trends. Companies are striving to surf the waves of these trends, which in the technology side means implementing new stacks, architectures, methodologies and more innovations. Therefore, software developers need to have the necessary skills to have worthies argues through different teams backing up opinions and ideas with facts, addressing the direction of companies in the correct way.
Then what is your answer, why penguins can't fly?