Teamwork in Software Development
In the profession of software development, teams are common. They are very effective in splitting the amount of work among people with different knowledge from the various areas of computer science. Due to complexities of software, it would take one person a long time to code the thousands of lines needed. In the following paragraphs the characteristics of a good team, the problems associated with teamwork, possible solutions to those problems, communication skills, and possible teamwork skills will be discussed.
In software development, the size, group composition, command structure, and development process are important.
A Microsoft case study conducted by Elif Demirors and others said that the ideal size of the group was said to be 2-12 people, but the book stated 3-9 people for a general group. That difference comes from the difficulties and scope of developing software. The group's composition is vital as well and is made of people with backgrounds in the many different subfields of computer science. That means the members are heterogeneous when it comes to their specialty in computer science.
The structure of the group can be described as there being ""...no single individual who is responsible for everything...Even if a leader exists, the decision-making within the team is democratic, and every member has a chance to raise his/her voice"" (Demirors). This clearly shows that a democratic or laissez-faire leadership style is preferred. Lastly, the study mentioned that an important thing is for the group to have the same common goal that is reasonable, which is what any other effective group would do.
Possible barriers to teamwork are a low commitment, too much autonomy, and too many specialists which all are interconnected to each other. From a case study on several software companies conducted by Torgeir Dingsèyr and others said that too much specialization is the main cause of low commitment because it caused members to care more about their goals as opposed to the groups. This involves the individual goal/group goal and leadership/followship dialectic tensions.
The different goals came from the too much autonomy that is mainly caused by a lack of communication. This can be explained due to ""...highly specialized developers in companies A and B focused only on their ""own"" modules and had little interaction with others. This resulted in difficulties aligning decisions on the operational level because team members didn't know what others were doing"" (Dingsèyr). This bad communication negatively affected the autonomy of the group.
Having too many specialists that were unorganized with too much autonomy and poor communication allowed them to have different goals. The study also mentioned another problem is them keeping their code to themselves so that they would have more value to the company. A possible solution to this involves having fewer specialists work with people who have several computer skills who could help with other parts of the project. Communication was common among the causes of these problems so with it being constantly done, it makes sure everyone is on the same page and possible means not having to have fewer specialists because they know what they should be doing.
There are some communication skills that may help a person be more effective. Somez mentions that the quality of honesty with a person not being afraid of disagreements, conflicts, and showing concerns in a polite way is necessary. That quality involves the tension of the conflict/cohesion dialectic. Along with that, the person needs basic communication skills like the ability to communicate with a variety of different people, being able to listen and understand verbal and nonverbal communication, and the ability to understand what they are saying.
An important teamwork skill is the ability to take responsibility because ""...not doing thus will serve to plummet the success of a project. during this method, developers should make sure that they're answerable for their own actions and responsibilities, which they're ensuring that their fellow team members do an equivalent."" (Rayhan). Somez mentions the ability for someone not to make extra unrelated work while working on a project is a good skill to have. A person may have finished their part and want to work on something else, but it is more efficient to help someone else on another area of the project.
A group that is effective in software development must have a certain number of people with different knowledge, have a democratic or laissez-faire leader, and a common goal for them to function properly. When it came to problems the low commitment, too much autonomy, and an excess of specialization were the main ones. For communication skills, the ability to deal with conflict, disagreements, and concerns is very important. With basic communication skills also needed to handle conflicts being very valuable.
Of many teamwork skills, not making extra work when others need your help is needed but, the ability to take responsibility is considered one of the most significant ones. For me to be able to succeed in group work in the future there are a few things I will need to improve on. What I need to work on is how to figure out good conflict resolution, and to talk to people without stuttering due to nervousness. I need better confidence when talking to others in a group meeting but only during the forming stage because it is easier for me to talk to people once I get to know them a lot better.
Teamwork in Software Development. (2019, Jan 01). Retrieved from https://papersowl.com/examples/teamwork-in-software-development/