Efficient Tech Team Collaboration

Executive Summary

1) Ensure meeting timings and durations are clear
2) Ensure meetings are moderated effectively
3) Take a balanced approach to solo, pair and mob programming

tansaku
AgileVentures
9 min readApr 23, 2019

--

Working in a Team

Working effectively as a team relies on good communication and good organisation. There is no one-size fits all that will work perfectly for every team. Every individual will have preferences and expectations based on their previous experience. Attempts to improve team processes may backfire, but it is important to at least attempt to find compromise positions that will help everyone work together effectively.

For the sake of argument let’s separate the different technical decisions from the process of collaboration and teamwork. When it comes to different technology stacks and methodological approaches to programming the answer is always “it depends” and it’s up to the team to make these decisions or cede authority to an appropriate person or group.

In this blog post we’ll focus on the mechanisms to support collaboration and teamwork. Circumstances can easily be complicated by having team members with differing levels of commitment, e.g. some are consultants, some volunteers, some full time staff. Each person’s individual status will impact how they view different attempts to collaborate such a group meetings, pair programming, mobbing, scrums, retrospectives, client meetings and so forth. These differing levels of commitment can strongly affect collaboration preferences.

It’s difficult to collaborate without some sorts of group meetings. Critical meeting factors are the way in which people find out about meeting timings, how those meetings are organised, and whether time in meetings can be spent coding and debugging. Some people enjoy non-coding “talking” meetings more than others. Some are frustrated to spend a lot of time in “talking” meetings when they feel they should be spending more time on other activities such as coding. Let us look at these three issues in turn:

1) Meeting Timings

Confusion about meeting timings can waste a lot of people’s time. For full-time staff members who are relaxed about how time is spent, a missed meeting is perhaps no big deal. They’re on the clock, they are compensated for their time either way, and another meeting will be along soon. Other full-time staff members may feel entirely the opposite, particularly if they are focused on an upcoming deadline. Small tightly knit teams can rely on word of mouth and convention to manage meeting times, but as a group becomes larger and particularly as it starts to involve a wider group of stakeholders, more organisation is required to avoid big losses of time and effort.

Recommendations
- Ensure there is a clear shared calendar
- If for some reason the calendar is not public, find some reliable way to communicate with all stakeholders about meeting times
- Where possible avoid changing meeting times less than 24 hours in advance unless it is to cancel the meeting

2) Meeting Organisation

Even assuming that a meeting time has been clearly communicated, there is no guarantee that the meeting will operate to make the most effective use of everyone’s time. It is impossible to make perfectly efficient use of everyone’s time in a group meeting, but following certain procedures can maximise efficiency and significantly reduce meeting durations, or at least allow some to leave early and make better use of their time.

A small tight knit team may be able to get away with little meeting organisation, particularly if they are not worried about meeting any deadlines. Ensuring that a meeting has an agenda and an assertive moderator is one way to improve efficiency for all sorts of team sizes, but it is especially important as team size increases and team composition varies. Some individuals prefer open format meetings and dislike moderators who direct the conversation, so it is critical to get agreement from the meeting participants that the meeting will be run in a particular format and some members will be empowered to keep the meeting on track and maximise the efficiency with which people’s time is managed.

Even given the consent of the meeting participants, meetings can drag on if the moderator does not redirect conversation early and assertively. One approach to meetings that don’t have set agendas is to start the meeting by asking each member for agenda items. Clearly time could be saved if everyone provided agenda items in advance, however work is fluid and sometimes the necessary agenda items are not clear until just before the meeting. If a moderator is gathering agenda items it is critical to allow all high level agenda items to be gathered before diving into the details of those items.

Quick answering of questions (or interjections) can sometimes be very helpful in that the quick answer can avoid the need to return to the item, but the danger is that everyone in the meeting is held up by something that is only relevant to a couple of individuals. In addition what seemed like a quick interjection may in fact drag on for some time. While one might argue that it’s great for everyone to be aware of the details of each others problems and hearing the minutiae of the solutions can be a good learning experience, it is difficult to maintain attention for an hour on a series of other folks problems that you don’t have first hand experience with. Particularly if you are not actively leading the meeting, or a senior member of the team with comprehensive understanding of the project. Even then it is not necessarily the best use of your time.

Of course if time is not of the essence then there is no need to impose a strong meeting structure. Conversely if a common complaint is that too much time is spent in meetings, then it makes sense to expend efforts to ensure those meetings are run efficiently.

Recommendations
- Every meeting should have an appointed moderator who can keep the meeting on track, and is not afraid to cut other folks off if they are going off-topic
- All meetings should start with a quick high level review of the agenda (if none is provided in advance) and how the meeting is to be run

For example in a group meeting it should be possible to quickly finish a review of the high level items within 15 minutes, and the moderator should ensure that each person is given space to quickly finish the high level overview of the items they wish to bring up. For each item it should be made clear if it is something that needs further input or not (i.e. is it a blocker).

At the end of the 15 minute high level review the moderator should quickly prioritise the blockers/items for discussion. The order in which they are addressed is critical. Everyone should be clear that they can leave the meeting at the end of the 15 minutes if they don’t have blockers and are not interested in the other items on the agenda.

Ideally each item should be assessed for who is interested in it and how much time it might take to resolve. For example, imagine a meeting that generates four blocking items and involves team members Alice, Bob, Charles and Dina. These are the items flagged for follow up:

1. involves Alice and Bob — likely requires 5 minutes discussion
2. involves Charles and Dina — likely takes 30 minutes coding
3. involves Alice, Bob, Charles and Dina — likely takes 5 minutes discussion
4. involves Alice, Bob and Charles — likely takes an hours coding

The danger is that the group jumps straight into the items in order and only items 1 and 2 get addressed in the available time. This means that 30 minutes of Alice’s and Bob’s time is potentially wasted on item 2 which they are not involved in. Similarly, 5 minutes of Charles’s and Dina’s time will be wasted discussing item 1. More importantly item 3, which is critical to the whole group, and item 4, which concerns 3 of the 4 team members, both get ignored and are not resolved effectively.

Far more efficient would be to assign team members Charles and Dina to find a time to meet to resolve their issue. Importantly Charles and Dina should NOT start negotiating a meeting time out loud in front of everyone — this also burns up shared time. They can work out via text chat when would be convenient, while the meeting continues. Similarly for Alice and Bob to address item 1. Alice, Bob, and Charles should also use text chat to arrange a time for their meeting, unless of course, if Dina drops out of the meeting and only Alice, Bob and Charles are left then they can talk through arranging a meeting, or even jump straight into the issue if they are all free. However to the extent that Alice, Bob, Charles and Dina are all present then it’s important that scheduling all the other issues should be taken offline, and that the item that concerns everyone, i.e. item 3, should be addressed first in order to make the most effective use of everyone’s time.

In reality we don’t always know how long it will take to resolve blocking items, and there’s also there relative priority to the project as a whole. Sensibly one comes up with an estimate of urgency and likely duration for each item and then revise as more information comes along. A good moderator will take note of who has left or joined the meeting after the start and whether items are dragging out beyond their estimated times, adapting accordingly. Some individuals may find it very hard not to jump in and offer suggestions or explanations during the high level overview. Everyone in the meeting can help the moderator by taking notes on the interjections they want to make and avoid interrupting the high level overview. These comments, answers and suggestions can then be brought up later as and when fits into the meeting structure, or even be passed along to particular recipients via text chat for even greater precision and efficiency.

Moderating a meeting effectively and quickly prioritising issues to make effective use of everyone’s time is tricky. The moderator needs to be empowered by the group and has to be sensitive to the group’s and individual needs in order to avoid trampling on everyone’s feelings. That said good moderation is critical to make effective use of people’s time, particularly as group size increases and stakeholder composition varies.

3) Coding/Debugging in Meetings

Coding and Debugging in “meetings”, which can also be referred to as pair or mob programming, depending on the numbers present, and duration of the session, can be wonderful fun. However if you didn’t plan to get involved in coding and debugging in a meeting it can be a real drag and a waste of your time. Coding and debugging has the property that it can easily expand to take up all the time in a day or indeed several days. A technical project will involve all sorts of coding and debugging tasks, and for efficiency not everyone can be involved in everything. Sensibly we divide and conquer to make faster progress, but of course coordination is critical — see points 1 and 2 above.

Coding and debugging in a pair or group setting can be a great way of communicating information around the team, but some individuals may strongly prefer to work alone, and report progress verbally in a non-coding meeting, or via a message board, version control system etc. Effective teams will compromise on different preferred styles of working while ensuring that there are mechanisms in place to share information about what is being developed, learned and discovered.

Recommendations
- Put reasonable pressure on solo coders to participate in some pairing or mobbing activities
- Agree effective communication mechanisms so everyone can receive updates about solo work
- Agree a framework to ensure that solo work is contributed in bite-size amounts so others can keep up with changes
- Ensure that code is shared early and often through an appropriate mechanism, e.g. version control

Conclusion

Of course there are benefits to unstructured chat and dialogue and it is sometimes important to make time for this. There are gains to just chatting (especially at the beginning, or — even better — BEFORE a meeting starts), because this may expose topics that won’t come up in a very rigid meeting, and might lead to wins down the line. Also it allows for something that makes people look forward to a meeting and can encourage punctuality if done before the meeting start time.

However the clear and present danger is where all meeting timings are unclear and the meetings themselves are unstructured, or they are structured and the moderators cannot ensure the structure is followed; leading to many people feeling their time is being wasted. Meetings and coordination of some sort are necessary for the effective operation of a team, and there is no perfect solution; but we recommend putting an agreed structure in place, with moderators who are empowered by the group to enforce that structure; and keep evolving that structure by consensus to meet the needs of the team.

Acknowledgements

Big thanks for feedback on this blog post from Federico, Wolfgang, Robert, Matt, Joseph, Martin and Mike.

--

--