Humans instinctively try to avoid things they do not understand. How do you overcome the difficulty of “facing uncertainty” and utilize it for human relationships with yourself, members, and team management? How to bridge the perception gap between management and engineers. Aiming to be an “agile team”? How to eliminate technical debt? This book presents ways to deal with important questions, while also incorporating knowledge of business administration, psychology, and software engineering.
"If you want to solve problems, you have to refactor not only the code but also the "structure" of people's thinking, organization, and business."
There are many unreasonable and emotional conflicts in software development. It is as if the human thought contained a bug.
The "beginning" in the realization of software is often an ambiguous requirement. From there, proceed to concrete and clear output. Engineering is the act of reducing ambiguity and increasing concreteness and clarity before it is realized.
What is important in engineering is the idea of how to efficiently reduce uncertainty. Successful software development requires "thought refactoring".
■ "Environmental uncertainty" and "Communication uncertainty"
Where does uncertainty come from? It lies in the future and the stranger, "what we don't understand." The future is unknown until it comes, and it becomes clear by observing actions and experiments. This is called "environmental uncertainty". On the other hand, others cannot understand it and can only reduce it through communication, and it is called “communication uncertainty”.
When dealing with uncertainties, there is anxiety. When anxious, people tend to instinctively choose to avoid or attack. Generating information is essential to reduce this uncertainty.
With this in mind, engineers will be less stressed by uncertain requirements and uncertain means. If there is any other means of reducing uncertainties other than writing software, proposing it is also part of engineering.
To convert a complicated problem into a simple one, three ideas, "a blind spot in logical thinking," "empirical and hypothetical thinking," and "system thinking" are useful.
■ The blind spot of logical thinking
Logical thinking is possible when the two preconditions of "correctly recognizing rules and events" and "correct deduction" are met. Therefore, we must know when and how the perception of ourselves and others is distorted.
On top of that, it is important to remove the “cognitive distortion” that causes negative emotions and anxiety.
■ Empiricalism and hypothesisism
In order to secure uncertainty, it is necessary to understand it, acquire knowledge through experiments, and find out what you do not understand by action. In short, the idea is to take action and confirm.
In order for empiricism to work well, two things must be emphasized: "what can we do?" and "can we observe what happened as a result of our actions?"
"Hypothesis thinking" enhances the productivity of empirical principles. "Hypothesis thinking" is a concept that boldly infers from a small amount of information and verifies its correctness.
■ System thinking
A person takes responsibility for the problem, or thinks locally optimally without capturing the whole picture. In system thinking, after understanding that, "it may not be the whole picture" and "Is the problem related?", and tries to clarify the structure of the problem. When a conflict occurs, grasping the overall relationship from a one-dimensional perspective can lead to the elimination of the conflict, which is another merit of system thinking.
What is true communication ability?
Communication uncertainty, or communication uncertainty, separates people who know information from those who do not. This expands the "information asymmetry". People tend to misunderstand that others are aware of their challenges. Or they tend to act on the desire to know.
In addition, human cognitive ability is limited. Therefore, "limited rationality" occurs in which reasonable actions can be taken only within a limited range.
Mentoring is a technique to create people who think for themselves. Through dialogue, the mentoring ability of the mentor is temporarily lent out to broaden the range of thinking. This is a method to correct the person's cognition, promote the next action, and grow.
The point that mentoring is superior to directly teaching (teaching) is that you can acquire the applied power of what Menti notices. This applied power arises when we acquire knowledge by our own awareness, not by persuasive knowledge given by others. The former is called "persuasion" and the latter is "self-persuasion".
In mentoring, we emphasize self-persuasion rather than persuasiveness of others and encourage the acquisition of it.
According to Google's labor reform project, the factor most closely associated with team productivity is "psychological safety." Psychological safety is a state in which teams share the belief that taking interpersonal risk is safe. It means a state in which one can express himself and work without fear of having a negative impact on an individual's career or self-image. The effect of increasing psychological safety is that members can speak openly, have healthy discussions, and mitigate failures. Furthermore, innovation can be promoted by being able to focus on goals rather than on obstacles within the organization.
■ "Agile team" self-organization
Agile is an “ideal situation where the team is adapting to the environment and reducing uncertainty most efficiently”. (Specifically, the asymmetry of the information is small, the psychological safety is high, and the goal recognition level of the entire team is high.)
A group that is advancing toward such an ideal state is called an "agile team." This is called self-organization.
Agile methodology can be thought of as an organizational learning approach to thinking about ways to reduce uncertainty in order for a team to reach an ideal state. Specifically, we think that it may be possible to delay decision making by facing anxiety, emphasizing dialogue with a small number of people, not binding members to specific roles, and reducing the risk of catastrophe in advance. There are such things.