What do good software development teams have in common?



There are many development teams that are performing poorly for a variety of reasons, such as teams whose members can't speak out because they fear their boss, or teams that waste weeks of time because their work priorities aren't clear. .. Software developer Dennis Yu said, 'Working with a variety of software development teams,' the high performing teams have something in common. '

Habits of High-Functioning Teams | deniseyu.io

https://deniseyu.io/2020/05/23/habits-of-high-performing-teams.html

◆ High psychological safety
Yu said that high-performance teams were able to achieve the psychological safety of a natural environment in which they can stay without being frightened by other people's reactions or feeling shy. To achieve psychological safety within a team, leaders and managers must first understand the individual members' social and political backgrounds and interpersonal relationships, and understand how they influence discussions.

According to Yu, the psychologically safe team had four characteristics.

1: Everyone understands that continuous feedback is necessary for business improvement, and team members can openly criticize themselves.
2: Individuals spend less time on business problems. There is a time limit on how to deal with problems individually, and when time is up, ask a team member for help.
3: Each member considers his / her own value in the team and visible business results separately. The results of the members are the results of the whole team, and even in the code that I wrote, I used the expression 'the code that we wrote' instead of 'the code that I wrote'.
4: Many people take vacations. The team as a whole shares sufficient technical technical decisions so that the lack of members does not affect the progress of the work.



◆ Easy to understand business status
According to Yu, high-performing teams took a little extra time to record and manage business activity in software development. For example, four customs were mainly rooted in the team to which Mr. Yu belonged.

1: When

committing , describe the changes in detail and at least include the verb in all explanations. All commits are numbered and maintained for easy later retrieval.
2: Assign class names and method names that are easy to use according to the rules of the language and framework.
3: Do not use meta-syntax variables such as 'hoge' and 'piyo' for variables , but use variable names with a clear purpose.
4: Do not communicate between teams with tools that may delete history or tools that new members cannot see.



◆ Gain experience evenly
Experienced engineers may be able to handle difficult tasks with peace of mind, but it is also a characteristic of high performance teams that they do not impose similar tasks to some members. It's important to give the team a chance so that the whole team can deal with any job to some extent.

The good team has also given difficult work to inexperienced engineers in order to gain experience, Yu said. Of course, even if an inexperienced engineer stumbles, it is a prerequisite that the members share the progress status so that an experienced engineer can immediately follow.



◆ Spacious communication
Frequent communication between teams creates an environment where questions are easy to ask. However, the person asking the question does not have to ask anything, and it is important to ask the surrounding members only if they do not understand it after conducting a basic survey.

Yu also argues that 'the person being asked should be generous.' He concludes that the other person has less knowledge than himself, and points out that he should not try to teach what the other person already knows or reveal his own knowledge more than necessary. It is ideal for the respondent to explain while confirming the understanding of the other party rather than unilaterally teaching, such as confirming 'Do you want to know about ○○?'

in Note,   Software, Posted by darkhorse_log