One of the four principles of The Agile Manifesto is individuals and interactions before processes and tools. A decade ago, this was a refreshing statement to a command and control culture, and a welcoming change towards a more people-oriented model. Today, no one wants to admit they are doing anything but Scrum, Lean, XP, Kanban or whatever Agile methodology which puts the individual first.
Since ‘processes’ has such a bad reputation in the Agile community, practitioners insist on referring to Scrum as a framework. Unlike certain other Agile methodologies, like XP, Scrum does not tell us how we should implement code. Instead, Scrum provides three roles – team member, Scrum Master and Product Owner – with clearly defined responsibilities. A predefined set of meetings is also mandatory (as ‘meetings’ has an even worse ring to it than ‘processes’, we like to call them ‘ceremonies’ or ‘conversations’) with predefined agendas. In addition, the Scrum package often contains pair programming, TDD, continuous integration, refactoring and other XP related activities. However, some of these practices, no matter how good their intentions, does not always benefit the team members. You might have come across the introvert developer who always tries to avoid pair programming, who needs to be dragged to daily standup meetings where they stare at the floor, quietly murmuring something about what they’re up to. Or the one who is particularly good at one specific part of the system and thinks every other task is a waste of their time. Or you might have heard the history about the developer who left the organization because he couldn’t stand pair programming. Why won’t these developers behave according to Scrum?
Scrum promotes a way of organizing teams, where each Scrum team should concentrate on a specific functionality rather than a component. Instead of having one team of architects, one team of usability guys etc, we try to compose the teams with a mix of skills. Rotating tasks among team members is also recommended. A natural consequence of this is that each team member has to perform a broad variety of tasks. These cross-functional teams therefore work best when everyone knows a bit about everything. Scrum promotes the generalist and degrades the specialist – unless they are specialized in several fields. The advantage of teams consisting of generalists is there is always someone who can step in and pick up any kind of task where the last one left off, and the team is not dependent on single individuals. (Naturally, someone will be better than others in certain fields, but that’s not a problem as long as that person helps out the other team members, and everyone do whatever they have to in order to complete their commitments before the end of each Sprint. After all, software development is a team effort and we are all in the boat together.)
Agile practices also emphasize collaboration and face-to-face communication, which is supported by open office environments, pair programming and daily meetings. And in order to collaborate, managers sometimes even figure we need team building activities! – to get to know each other better. Social activities are made mandatory. Needless to say, this way of working requires a certain degree of social skills, as well as a willingness to socialize with others, which can be hard for some of us to swallow. Especially when we are forced to.
Ironically, strictly defined processes and rituals have in many ways become a means of achieving better communication and to help us collaborate and communicate better. In fact, Scrum might have become more rigid than some of its practitioners like to admit. Although that was never the intention of The Agile Manifesto, the industry has in large scale tried to implement Scrum by the book and, to say it harshly, ‘forced’ many of its practices down the throat of the team members, as well as not giving room to the specialist. The specialist don’t get to fully use their potential, and we as a an industry suffer from a waste of knowledge. The reluctant developer suffers, which can lead to stress and lower performance and further affect the whole team negatively.
Where traditional development used to involve a dedicated project leader with coaching responsibility, the Scrum Master is specifically urged not to do any coaching. This does not mean that Scrum Masters shouldn’t care about people; it means that the team should be more responsible for itself. These self-organizing teams give the team more freedom and responsibility. But like leaving a bunch of kids on their own (and it’s not that I’m making a point out of developers being childish – but grownups can sometimes be selfish and inconsiderate), there is always the risk that this one kid is going to be left outside the game.
There are some common characteristics of those most likely to be left outside of the game (and in the literature blamed for making Scrum teams dysfunctional):
- Those who insist on performing only one kind of tasks
- Those who work on tasks outside the scope of the iteration
- Those who are reluctant to attend meetings or perform other Agile related activities
Obviously the solution is not to put the ‘dysfunctional’ team member in a cave and let them work on whatever they please and deprive them of their right to speak to any of the other stakeholders. We still want clear communication between all interests, and that requires some sort of interaction. What I would like to suggest is that the Scrum Master should reclaim some of the coaching role of the traditional project leader, as they are most likely to spot the ‘dysfunctional’ team member. After all, it is the Scrum Master’s responsibility to make sure the team is fully functional, which it will not be with ‘dysfunctional’ team members.
There are some adjustments that can be made in order to become more pragmatic and take better care of the ‘human resources’ – as managers often like to refer to their employees (and which might explain why the team members sometimes are treated as, well, resources):
- First off all, do not enforce pair programming. No one, especially not stubborn computer geeks like to be told what to do, and not everyone perform well sharing their keyboard with others. Even though it’s encouraged and valued by many practitioners, let pair programming be optional and respect those who do not wish to take part in it.
- Introduce symbols to signalize when someone do not wish to be disturbed. One way of doing this is to put on headsets.
- If it’s not urgent, which it seldom is, don’t interrupt a developer (or anyone else for that matter) who is clearly trying to concentrate. Valuing interaction before tools and sitting together in an open office landscape is not an open invitation to poke your colleagues on the shoulder instead of sending them an e-mail or using instant messages.
- Do not require the whole world to attend Scrum meetings. Yes, the team should gather and discuss progress every now and then, but it’s not crucial for all stakeholders to always attend all meetings.
- Focus on tasks instead of individuals. Let daily standup be about Sprint progress, not on what each person is up to. Having each person answer three questions about what they are doing can sometimes feel like a productivity contest, and can easily turn into a status meeting for the Scrum Master to report to the management.
- Provide an office environment that reduces noise, e.g. rooms dedicated phone calls and discussions. In the case of multiple teams, give each team their own room.
It’s not about some developers being too specialized to work in a Scrum team or computer geeks being too socially incompetent to interact with others. It’s about team members becoming ‘resources’, where personality and personal preferences are not taken into account. Sure, their competences are taken into account in order to make functional oriented teams, but their personality, needs and working preferences are seldom mentioned. And the literature does not say much about adjusting Scrum to the people involved in making the software. The human aspect of software development teams is therefore easily overlooked.
A decade after of trying to implement Scrum into our organizations, the first principle from the Agile Manifesto still needs to be repeated: Individuals and interactions before processes and tools. And remember: developers are individuals too.
Thanks to Thomas Kjeldahl Nilsson for proofreading.