Introduction
Software is created by people with different interests and skills who must work together to create software
effectively.
Develop practices that foster a healthy team environment. A healthy team environment enables effective collaboration,
which aligns the interests of project participants (development team, quality assurance, product stakeholders, and
customers) and helps project participants develop a shared understanding of the project.
Practices
Maintain a common understanding
Project participants require a common understanding of a project to cooperate effectively. Otherwise, disorder sets in,
because the team members cannot align their understanding and interests, and will then work with different purposes.
Be proactive communicating and sharing information with project participants. Do not assume that everyone will just
find what they need to know, or that each person has the same understanding of the project as everyone else. Use work
products (such as the Vision, Work Items List, and Requirements) to align the understanding between the stakeholders and
developers. Use the architecture to focus and align the interests of the developers. At the end of each iteration, get
agreement on whether the iteration goals have been reached and, if not, what actions must be taken.
Foster a high-trust environment
People who do not feel safe will not communicate their ideas, take initiative, or admit their ignorance. In these
low-trust work environments, activities must be laboriously planned in detail, carefully supervised, and extensively
audited. A team working in a low-trust environment may not be able to keep up with rapid change.
Take actions that foster a high-trust environment:
-
Manage by intent. Create an environment where teams manage themselves, and managers serve as
mentors to teams to help them complete their objectives.
-
Tear down the walls. Work to remove both the physical and mental barriers that inhibit
development of a common understanding among project participants.
-
Walk a mile (or 1.6 kilometers) in someone else's shoes. Respect and try to understand the
perspectives of others before criticizing their ideas or responding to their criticism.
-
Respond to conversations with relevance. People, especially technical workers, often respond
with argument or disagreement, which leads to rivalry and establishes a pecking order in which only a
few people contribute to the discussion. Develop and encourage behavior that values curiosity and relevance
over argument and disagreement.
-
Always look to yourself first for the source of communication problems. Understand that
everyone has a perspective that is largely invisible to the individual (although it is often obvious to
everyone else). Develop the habit of identifying the assumptions and prejudices within you that lead to
argument or lack of communication. Learn to overcome these in the moment of the conversation. This takes
practice. There are times when others may be intractable, but often the problem can be addressed by wrestling
with your own perspective.
-
Understand the constraints of the workplace culture. Some organizations operate in a way that
allows people to admit mistakes, ask questions, and experiment. Some organizations limit these expressions, but
they may change, with time and effort. Some organizations have no tolerance for error, and their workers put
themselves in danger if they admit mistakes or experiment. Understand your environment and protect yourself
accordingly. Understand that low-trust organizations have more problems in achieving their goals, and provide a
less satisfying environment.
Share responsibility
There may be disadvantages for individuals when they work alone. Communication with the team can become sporadic, and
then stop. People may get into trouble and not ask for help, or not realize that the team is in trouble and needs their
help. Their understanding of the project may become misaligned with the rest of the team. In the worse situations,
trust breaks down as individuals see the team working at different purposes to their interests.
While individuals have primary responsibility for their work products, responsibility for work products is shared.
Nothing is someone else's responsibility. This may mean either taking up slack and working with someone who is lagging
for some reason, or asking for help. Experienced staff should be extra-vigilant and watch over less-experienced staff,
encouraging them to ask for help if necessary.
Learn continuously
Not only is software development a fast-developing field where technical skills rapidly become obsolete, it is also an
empirical process, where software is developed in a manner that sometimes resembles trial and error. Furthermore,
software is developed by teams of people who must work together to achieve results.
Continuously develop both your technical and interpersonal skills. Learn from the examples of your colleagues. Take the
opportunity to be both a student of your colleagues, as well as a teacher to them. Always increase your personal
ability to overcome your own antagonism toward other team members.
Organize around the architecture
As projects grow in size, communication between team members becomes increasingly complex. While all team members
understand the overall system, they can focus primarily on the one or more subsystems that they are responsible for.
Organizing around the architecture also helps with communication by providing the team with a common vocabulary and
shared mental model of the system. Communication between team members becomes increasingly complex.
Organize the team around the architecture, and the vocabulary and a shared mental model of the system. However, be
careful that individuals and teams organized this way do not form a so-called silo mentality, where they
focus strictly on their subsystems and become ignorant of the other subsystems.
An architecture that reflects the organization’s structure is not in itself evidence that the team has successfully organized
around the architecture. If organizations and teams are not organized around the architecture, then the architecture
will naturally conform to the organization, as a result of political and cultural influences. In the end, the
architecture and the organization will almost always be a reflection of each other. The goal is to guide team
organization from the needs of the architecture as much as possible.
|