When using a DevOps approach in a software project, we think of development and operations as one team. Therefore, we need to have a clear definition of a team. A team can be considered as a group where its different members work together depending on each other in order to achieve an objective that is shared by all the members. Apart from sharing a common objective the team also develops a shared definition of all terms that will be used in the project and a working culture that is acceptable to the different team members. The different team members use their skills to complement instead of compete with each other. Another characteristic of DevOps teams is that team members should be kept at just the number required to complete the task. When the number of team members is larger than necessary several challenges arise. They include difficulties in team cohesiveness and communication. For a team to achieve meaningful success the team objective needs to be shared by all members and all members should be committed towards achieving team objectives.
In the introductory section, we emphasized the importance of having an objective shared by all team members. When thinking about team objectives there are several important points to keep in mind. First, it is important for all team members to be involved in formulating the shared objectives. Second, there should be a commitment by all team members to achieve. Third, each team member has personal goals that need not to be in conflict with the shared goals of the team. Finally the goals that are developed by the team need to be authentic.
For every DevOps team, delivering a quality end product should be a mandatory objective. Documenting what needs to be done is one way of overcoming hurdles that lie in the way of delivering quality software and it also helps develop a cooperative working environment. When coming up with the agreements that will guide teams in their work it is necessary to have the following points in mind.
- A clear definition of working agreements early in the project forestalls the possibility of misunderstanding and conflict as the project progresses.
- It is advisable not to assume every team member has a good understanding of team objectives. Therefore, a thorough discussion and a clear documentation of objectives are necessary.
- A working agreement is very useful for bringing new team members up to speed on how they can engage in the team by guiding them on what is to be done and what is not to be done.
- Working agreements foster team member accountability during review meetings because all agreements are recorded. therefore it is easy to identify what has not been done.
It is very important that working agreements are clear and understood by all team members. To further clarify what may be included in work agreements examples of what can be included are listed below.
- Timely attendance of team meetings and using team meeting time effectively. For example, multiple conversations should not be started.
- Reaching out to other members when you are unable to make progress on a problem
- Receiving and giving feedback on team members
- Carry out some small scale experiments to know what works for your team
- Seeking knowledge from different team members. Operations should learn from development and vice versa.
When thinking about DevOps teams another important aspect is team motivation. Motivation can be considered as the desire from within that propels one to engage in an action. Coming up with clear goals and having the desire to achieve them are key drivers of motivation. When thinking about motivation in a team some of the things to have in mind are listed below.
- Success or failure is a team outcome and not an individual outcome.
- It is not possible to completely eliminate the occurrence of defects.
- Acknowledging the progress that is made by the team.
When aiming to develop a team from development and operations members there are several key points to have in mind which are listed below.
- The foundation of a team is the objectives that are shared by all team members.
- It is important to clearly define the project scope.
- It is important to define project milestones that show project success.
- It is important to define a road map that explains how project objectives will be achieved.
When creating a team, a facilitator helps the teams develop and understand the objectives that need to be met. Each DevOps team requires a facilitator to help it form. There are different ways in which a facilitator can be incorporated into a team. One approach is to bring in an evangelist who has the primary responsibility of bringing new ideas to the team. Another approach is to bring in a sponsor who is preferably at management level so that they can support new ideas. Another approach is to have a champion who explains the importance of an idea. Besides the facilitator other techniques that can be used to promote cooperation between development and operations are listed below.
- Use of mind maps to organize information and identify relationships that exist.
- Brainstorming to get ideas from team members.
- Carrying out experiments to know what works and what does not work.
- Having workshops where members can discuss project progress.
- Having a wiki to further collaboration among team members.
In this article, we introduced a team and clearly defined what a team is. We noted the importance of coming up with goals that are clear and pursued by all team members. We noted what is important in a working agreement and gave examples to clarify what is important in a working agreement. Finally, we discussed some approaches that can be used in promoting cooperation among team members.