People have a wide variety of skills. To be effective in a high-performance team, people need to be cross-functional, which means that the people in the team need to understand and perform all the tasks of the team. This doesn't mean that each person in the team needs to be an expert on all topics. It does mean that the team should not fail when one team member is temporarily unavailable.
We strongly believe that high-performance IT delivery teams have capabilities as a team, the capabilities of the people in the team contribute to the team as a whole, and tasks can be performed by various team members. One team member may be more skilled than another, but that is no reason to only provide work to the team member with the most experience and skills. Think of all tasks as a team effort in which each team member plays a role. Specifically, we think that quality assurance (QA) and testing activities should be integrated in both the DevOps activities as well as the people involved.
Good collaboration starts with psychological safety. Psychological safety is being able to show and employ oneself without fearing negative consequences of self-image, status or career [Kahn 1990]. In a successful team:
- There is freedom to admit mistakes & failures
- We learn from mistakes & failures in a collaborative way
- We do root cause analysis on process rather than focus on individuals
When keeping psychological safety in mind you could say; if there is no status loss or fear of negative consequences for stepping up and stating you did something wrong, the emphasis remains on fixing, learning and growth; not on possible punishment, because even failing to learn is a failure that can then be discussed in those terms and acted upon later.
To ensure a safe environment in the team, people should use "the power of the four walls", which is the concept of taking the team from open spaces to a private space, without overhearing, where people can discuss, learn and grow together. Besides offering a safe environment for giving feedback, it is also useful in conflict resolution, brainstorming out-of-the-box ideas and reflection.
The team needs to have all necessary skills available; this means that team members need to have a variety of skills at various levels in such a way that together they have all the needed skills. Some skills will be very specific, in which case the team may also call in the help of people from outside the team (think of the execution of a penetration test by a specialized security expert).
In being effective at the testing tasks while working towards their result, the team must keep the goal in mind, which is delivering value. Communication itself is never the goal, although a tester / team can take up some communication tasks:
- Collecting data from static and dynamic testing
- Creating information from this data
- Facilitating communication about the information
- Triggering action based on the information
All of this requires a wide variety of different skills, of which we will give an overview in the following sections. We do, however, want to emphasize that this overview is by no means a complete list because specific situations call for specific skills.
In this section the following personal, interpersonal and team skills are described:
- Collaboration techniques
- Expressing yourself
- Team values
- Unfavorable team behavior
- Learn fast
- Skills matrix
- High-performing teams get support from the staff organization
- T-shaped, Pi-shaped, Comb-shaped and beyond
- Test professionals change in mindset
The whole team should be effective in working together and learning together. To achieve this, various techniques can be applied. Very common techniques are pairing and mobbing.
- Pairing is an approach where two people work together on one task.
- Mobbing is an approach where the whole group of people works together using a shared computer, focusing on real-time contributions from everyone to get the full potential of what they are doing (adapted from [Pyhäjärvi 2018]).
Pairing and mobbing have a great number of different advantages that easily outweigh the disadvantage of multiple people working on just one task. Examples of advantages are that a lot of brainpower is available to solve complex problems, interaction stimulates creativity to find better solutions, more people together discover faults more quickly that can be fixed immediately, and (most importantly) people quickly learn a tremendous amount just by observing others at work, asking for clarification about the reasons for doing things and giving direct feedback based on knowledge, experience and intuition.
A whole team working together on one task may sound like a waste of time. It actually saves time, however, not right away, but in the long run, because the team members quickly raise their understanding of their mutual challenges, both in understanding the business value that is pursued and how they complete their complex tasks. High-performance teams are obviously not pairing or mobbing 100% of the time. Pairing is done very often. Mobbing may be done a few times per sprint.
In the mob programming guidebook, Maaret Pyhäjärvi explains: "We continued mob programming as a way of learning, having a session every two weeks. Mob programming became our gateway to pairing and improved collaboration in general. What I thought was a waste of time, turned out to be a time saver." [Pyhäjärvi 2018]
For a person to be effective in communicating within the team, towards other teams and towards other stakeholders and others involved, they will need a wide range of skills to express themselves. An important skill in communication is listening. An easy technique to improve active listening is the LSD technique (Listen, Summarize, Dig deeper). The person who is listening shows that they understand what is being said by summarizing and digging deeper with follow-up-questions.
Another aspect concerns conveying a message. For example, think of writing skills (both in brief notes and in official documents), visual skills (catching thoughts and experiences in sketch notes, mindmaps, etc., and (maybe most importantly) verbal skills and negotiating skills to quickly and effectively communicate in the team.
Another important skill set is presentation skills (for example storytelling). Although, as long as the team can convey their message clearly and properly not all team members need this skill.
The Scrum guide describes important values for a high-performance team. The Scrum guide states: "When the values of commitment, courage, focus, openness and respect are embodied and lived by the Scrum team, the Scrum pillars of transparency, inspection, and adaptation come to life and build trust for everyone. The Scrum team members learn and explore those values as they work with the Scrum events, roles and artifacts." [Scrum 2017] The retrospective is used to evaluate these values and determine improvements with the whole team.
Unfavorable team behavior
Some skills purely relate to individual people. Other skills relate to the team. An example of team behavior that is undesirable is known as "flocking". This is the behavior where the entire team gets alerted when something unforeseen happens, and they all start working on that particular topic. This usually isn't the most effective behavior. Teams have to learn that unforeseen events are investigated by a small group of team members who determine how this event can best be handled. Based on this outcome, the team can decide, for example during their daily stand-up, when this will be handled and by whom. Some events are not urgent and can be put on the backlog for the next sprint. Other events are more urgent but still don't need immediate attention. These can also be added to the backlog of this sprint. Only a few events are so urgent that people must drop their work and turn to solving this.
It may be difficult to distinguish between mobbing and flocking. Mobbing is where the team makes the conscious choice to work together on one task. Flocking is where the team gets distracted from their respective tasks by an unforeseen event and all drop their work and dive into it.
A key quality to be (or become) effective is to grab every learning opportunity. Both the individuals in the team and the team as a whole should foster the quality of learning fast. Some people talk about failing fast, but this is misleading, the objective is not to fail, the objective is to strive for doing the right thing. If something goes wrong in this process, make sure you receive feedback, immediately take that as a learning opportunity and prevent making the same mistake. While learning continuously, keep in mind the pursued value, the quality to be achieved and the risks to be mitigated. Constantly repeating the goal keeps the team focused.
In today's IT delivery, knowledge evolves. We don't wait with starting one activity until the other activity is fully completed, which means that not all knowledge needed will be readily available. Therefore, exploring is a very important personal skill. Every team member must be able and willing to gather information from various sources, in various ways, to explore what is needed (more about exploring, we refer to the section, "Introduction to quality and testing").
To be able to explore, people will need various skills such as creativity, curiosity and critical thinking. But an explorer also needs experience, both in the testing profession and in the business domain. How people explore is influenced by their cultural background, are they used to having the freedom to wander around and use the feedback to the advantage of the team and of the product they are creating?
The DASA DevOps competence model describes the essential skills needed in a DevOps team. DASA has identified 4 skill areas:
Evangelism, coaching, self-confidence, proactivity, reflection, trust, open discussions, experimentation, courage to change.
Understand the other's point of view, collaboration, mutual accountability, common purpose, ability to integrally support the service/product.
- DevOps Leadership
Facilitating teams to high performance, humility, transparency, service lifecycle mindset, stakeholder management.
- Continuous improvement
Today we do our work better than yesterday, kaizen mindset, quality at the source, right first time, knowledge-sharing, ability to adapt.
High-performance teams get support from the staff organization
It is unrealistic to expect that people in DevOps will have all the necessary skills and tools to perform all tasks. Therefore, the organization needs to make sure that specialized tasks can be performed by people that are not (or not permanently) part of DevOps. These people can be organized in a so-called staff organization that offers all kinds of supportive skills. Some organizations will use the term "system teams" or "shared services" for the people in the staff organization. For more information about the staff organization see [Boersma 2014].
T-shaped, Pi-shaped, Comb-shaped and beyond
The T-shaped professional is a notion that is often dropped when discussing the required people for a high-performance team. Many people cannot clearly define a T-shaped professional, however. We define T-shaped as a person who excels at a certain expertise and is able to understand other expertise. And, although often forgotten, but very important; when you want to be T-shaped; show compassion for people with other expertise than yours. (the term T-shaped was mentioned for the first time in 1991 by David Guest [Guest 1991])
For more on T-shaped, Pi-shaped, Comb-shaped professionals and beyond, read the article "Beyond I-, T-, π- and M-shaped testers" [Aalst 2016].
Test professionals: a change in mindset
One of the biggest contributions to a DevOps organization that test professionals transferring to DevOps team members can have, are their soft skills. The soft skills that test professionals already had, are valued even more in DevOps teams, since it is likely that there will be higher levels of communication within the team. Test professionals need to be able to converse from a technical perspective with the developers and for automation, while also being able to talk in a language the business will understand. Domain knowledge is therefore highly recommended.
Working in cross-functional teams also means that all team members should be prepared to fill in other roles if necessary (no "them and us"). For instance, a developer should be willing to fill in a testing role if the need arises. Especially when there is time pressure on the test activities. On the other hand, test professionals should be willing to assist other team members in their activities where they can, according to the project's needs. This may demand more technical skills and knowledge from a test professional. Working together is a two-way street.
Team members in a testing role need to have technical knowledge of the software they are testing and should understand the impact on automation as well as the functional implications. Some iterations may be development heavy, some automation heavy, some test heavy; the agile team member in a test role needs to add value in all instances. Professional testers should adapt to fit this different role and provide additional value by not only focusing on testing, but also fulfilling a team role.
The personal characteristics that are especially important for a test professional working in a DevOps team are:
- A retrospective attitude
- Creative but practical
- Thinking in solutions
- A team player
- The spider in the web