Teams & Collaboration

During my many years as an Agile and DevOps Coach I have worked with a large variety of teams. Whether these are local and co-located teams or distributed teams across multiple countries, timezones and continents and everything in-between or a combination of.
 
Working with and within these teams I have always experienced a variety of levels in seniority and maturity within the teams. These varieties were either technical expertise in the technologies we used or around processes and ways of working and Agile practices. Sometimes teams were very mature in the technology stack and not very mature with the Agile ways of working and accompanying mindset and vice versa.
 
When it comes to Agile and DevOps initial focus should be on teams delivering the value and how these teams are supported through out the various layers of the organisation. Eventually the goal of the Agile Coach is not only to improve, grow and establish the Agile mindset and culture, but above all; bring the teams to maximum productivity (as much as possible) and make sure that the team members have an environment in which they are fully engaged, motivated and empowered to do their work. This is the main and first goal of an Agile Coach, everything else comes after this and should be in support of this.
 
One of the key aspects of Agile is collaboration. The better the collaboration within teams and between teams, the more successful the teams will become on the shorter and longer term. Collaboration can in this case be seen as a tool to;
  • Get a better idea of the organisation and the processes in place
  • Improving team alignment
  • Increase knowledge amongst team members in specific area’s
  • Provide an environment where team members share idea’s, work more closely together and basically resulting in empowering team members.
 
Collaborative teams are more productive and more happy teams! That’s a fact!
 
For the sake of this article and in context of my most recent experiences with regard to collaborative teams, I would like to focus on the aspect of teams that worked through increasing their collaboration by applying certain techniques, practices, morals and values. This resulted in improving their technical foundation and creating a healthy environment where people not only work well together, but also challenge each other in a respectful and collaborative manner.

Complement Scrum: use Extreme Programming

I believe that Scrum is a good high level process for teams and organisations to implement. However Scrum does not have the answer for the nitty gritty details of collaboration, values and principles within and outside of teams. However, Scrum can be complemented and the methodology that complements Scrum the best is based on my experiences: Extreme Programming.
 
What Extreme Programming provide answer for questions such as; how do team members collaborate, what are team values, what are team principles, how do we deliver the work that we deliver in a productive and efficient manner. Where Scrum is more the high level, Extreme Programming (or XP) really dives into the nitty gritty details of team values, morals, collaboration and the actual work.
 
I consider myself not only an advocate of XP, but also a practitioner of XP. Through out my career I have experienced XP as a Senior Developer, but also as an Agile Coach and DevOps Coach. I have seen the benefits not only in my own work, but I have also seen teams grow rapidly throughout a short period of time and become more autonomous because of that.
 

Increase team collaboration and cooperation: deliver in pairs

In one very key example where I have been working with a newly established team with very capable and motivated people. Within this team there were all kind of variety of levels in seniority, whether that be in Agile mindset and practices or the technologies that were used to delivery value.
 
This team consisted of senior, medior and junior members. All of the team members came from different backgrounds, cultures and even countries. As the team was delivering user stories, the team members were learning along the way on how to work together, learn the technology, learn the ways of working etc. What didn’t help in increasing the speed of delivery was the fact that the team was using various types of technologies, in which every specific team member had a specific technological background and knowledge area.
 
A team where everyone had a specific working area and that was what they focused on is not exactly the collaborative way forward. We had to remove these barriers and do it in a very practical manner. Delivery had to continue so that the team had output at the end of every sprint. We did not want to stop the steady heartbeat that was already in place.
 
The challenges and barriers that we had to bring down were related to:
  • Team members working in silo’s
  • Team’s overall knowledge of the technology stack
  • Internal team collaboration.
 
This is where Extreme Programming comes into picture. One of the key aspects of XP is collective ownership as a team. This does not only encourage everyone within the team to bring new idea’s to the table, but also encourages them to help each other and to improve the team collective.
Extreme Programming has a common set of practices, values and principles in place to enable this. For the purpose of this article I am going to focus on just one key aspect, namely: Pair Programming.
 
Pair programming is a well known method and approach within XP. Here the user story being developed and delivered is not done by one team member, but by two team members at the same time. This means that two team members are literally sitting behind one keyboard and one screen and working closely together in delivering a user story. The keyboard is then passed back and forth between the two team members and so the work is picked up collaboratively. Two minds working on one solution, closely.
 
This is a cooperative and collaborative way of working where team members not only learn from each other, but also directly bounce idea’s off one another. Status doesn’t matter, cooperation and collaboration matters. Team members are equal, also in a pair programming setting and there is no teacher vs. student setting here.
 
Now back to the team at hand. The way we applied pair programming was by looking at it case by case from a user story perspective. Let’s say we have a user story that focused on a certain part of the application functionality that needs to be delivered. Here we have a team member that has a lot of experience with this specific part of the application and another team member with little to zero experience in this area. Here the two team members formed a pair and developed and delivered that one single user story cooperatively and collaboratively. Which resulted in the knowledge from the more senior member to flow into the more inexperienced member. It also resulted in them working closer together and getting to know each other better on a professional level and on a personal level.
 
On the first hand pair programming sounds like a very simple practices, but it requires the right coaching and patience from all sides and above all; it requires practice.
One of the immediate downsides of pair programming is seems to be speed in deliver: since you are using two team members delivery one user story you will lose velocity. However, the velocity you lose in the short term, you will gain quadruple in the long term.
 
This is one of the many ways that XP can help teams in moving forward, becoming more productive, becoming happier and becoming empowered. With the right coaching and knowledge XP can help teams get to the next level and improve further from there.
 

Applying Extreme Programming

There are many ways you can start applying XP specific practices as a complement to your existing Scrum processes. My suggestion would be to focus on some of the key principles and practices and start applying them one by one or in pairs. From there you can ramp up slowly and surely. However, it is important to keep in mind; in order to make your XP adoption as effective as possible, you need to really think about the values and principles of XP and how these fit within your team/organisation. That’s why the right guidance is key in making it a success, whether this is on an organisational level or an a team level.

Do you want to learn more?

If you want to learn more about pair programming and other XP-techniques, sign up for our Extreme Programming training.

Vahid Vafei
Agile Coach | Agile Software Development Trainer | CI/CD Consultant | Scrum Master