Supporting neurodiversity in pair programming
There have been numerous books, articles and even some academic studies extolling the benefits of pair programming (e.g. [1–6]), but what do we really know about the challenges of pairing, particularly among software engineers who would identify as neurodivergent?
Answer: Not a lot. I came across only a handful of articles exploring how neurodiversity impacts software engineers e.g.([7–10]), and none of these focused specifically on the popular practice of pair programming.
In this article I’ll suggest some ways we might better support our neurodiverse colleagues when pairing, although the advice can equally apply to anyone. Suggestions are largely based on literature on supporting neurodiverse learners in the classroom (e.g. [11–12]), so any comments which might shed more light on the topic would be well received.
Challenges
Before getting into the advice, let’s take a moment to consider some challenges that pairing can present and which may disproportionately affect neurodiverse engineers.
In this article, neurodiverse engineers includes engineers with a range of different conditions such as Autism Spectrum Disorder (ASD), Attention-Deficit-Hyperactivity-Disorder (ADHD) and learning difficulties such as dyslexia. In discussing the challenges associated with pairing, I will try to avoid singling out specific conditions, and instead assume these are challenges which can affect anyone, but may disproportionately impact those with certain neurodiverse conditions. It is also worth pointing out that many neurodiverse engineers choose not to disclose their condition at work, making it all the more important to consider that anyone can experience these challenges while pairing.
- Stress caused by social interactions. Studies have shown that neurodiverse employees experience a disproportionate amount of stress in interactions such as team meetings compared with neurotypical employees. While pairing may be less stressful than the average meeting, it still puts a lot of expectation on the individual to practice interpersonal communication skills which can be more challenging and emotionally draining for some. From the other perspective, interacting with someone who has difficulty decoding behaviour and intuiting the feelings of others, or who may communicate and behave in ways outside the societal norm can be equally distressing.
- Coping with distractions in the environment. Some people may be highly sensitive to certain environmental stimuli that others find easy to ignore. Such unwanted distractions can create stress.
- Organisational issues. Executive functioning skills like task prioritisation and time management may be more difficult for some people and are often misunderstood or misconstrued by others.
- Difficulty processing verbal instructions. Language processing issues such as those commonly associated with dyslexia can occur across the intellectual spectrum and may be a source of stress for some people. In the pairing scenario, it may make a certain role feel more challenging.
- Difficulty articulating (or decoding) thought processes. Pair programming enthusiasts often encourage ‘thinking aloud’ by verbalising the problem or thinking process to your partner. This can prove very challenging for some, on account of the different ways human beings process information. It can lead to stress and confusion on both sides, with one person getting lost, while the other gets frustrated or bored. It’s important to remember that it isn’t always someone else’s fault when this happens. Furthermore, one study has suggested that, for certain tasks, ‘thinking aloud’ doesn’t actually lead to a more successful collaboration[6].
- Difficulty breaking away from routines and guidelines. Some people may experience more challenge than others when it comes to being flexible in their working practices and approaches, although it’s important to note these behaviours can also be strengths.
Things to Consider
Everyone is different, and every pairing relationship is different. Here are some things that might help in response to some of the challenges above.
- Decide up front when breaks and rotations will happen. This may help an anxious person manage their anxiety, but is also considered best practice among followers of the Kent Beck approach to pairing[5].
- Consider trying out different approaches to managing time on tasks. Pomodoro technique has been shown to work well for some people with ADHD, while Flowtime can work better for others[13]. Explore what works best for you, and talk about it with your partner.
- Avoid changing pairs frequently. Change can be very disruptive and it might take time for a new pair to start to work well together. This may mean going against the Extreme Programming (XP) practice of rotating every 60 minutes — see next point!
- Encourage flexibility. Changes and disruptions are inevitable, but you can help an anxious person navigate change by encouraging flexibility and preparing them for bigger changes early on.
- Establish whether either person has a strong preference for a certain role. If so, you could consider longer periods in your preferred roles and fewer rotations. It may also be a factor to consider when deciding who to pair with.
- Consider how your partner processes information. For example, if you are working with someone who struggles to verbalise their thinking, you could help them by asking questions to solicit factual information, or to guide their reflection. It may help to explore the different ways people handle new information too. For example, some people struggle to hold more than one piece of information in mind at any give time, so issuing one instruction at a time, or breaking lengthy explanations up into discrete chunks could help a lot.
- Consider making a web cam feed visible at all times. This may help some people decode behaviours more easily by studying facial expressions. Think about the position of your camera too.
- Consider using visual communication tools. For example, you may find a partner grasps a concept or process more easily when it’s presented as a diagram, rather than communicated verbally. Bear in mind the reverse may also be true!
- Consider your environment. Not just the technology you’re using, but the wider environment too. Remote working gives people the opportunity to tailor their environment to their needs, but if you’re in an office, you may need to consider unwanted environmental stimuli such as noises, smells and sounds, and take reasonable steps to manage them. For example, avoid setting up a pairing station next to a kitchen or close to a high traffic area. Practicing good personal hygiene and not eating at your desk are also advisable, irrespective of whether you’re working with someone with sensory issues!
Things to do Always
- Reflect on what you need to pair successfully, and make sure it is communicated. Don’t expect others to take all the responsibility for meeting your needs.
- Find out what the other person needs to pair successfully. Similar to the first point, but remembering you’re not the only one with needs!
- Review how each pairing session went. This is a chance to surface any issues quickly, and take steps to modify your approach if necessary.
- Be flexible. If this pairing isn’t successful, be prepared to seek alternatives. It doesn’t mean either person has failed, it just wasn’t a good match. In extreme cases, pairing may not be appropriate for some individuals, or they may need the right to ‘veto’ it on a day when they don’t feel up to it.
- Practice self-awareness. Check-in with yourself regularly and notice when you’re becoming stressed or agitated.
- Practice self-care. Look after your mental health and well-being. Learn techniques for managing your anxiety and stress-levels that work for you.
[1] Böckeler and Siessegger (2020) On Pair Programming. MartinFowler.com.
[2] Cockburn and Williams (2000) The Costs and Benefits of Pair Programming.
[3] Padberg and Muller (2003) Analyzing the cost and benefit of pair programming. Proc. of the 5th International Workshop on Enterprise Networking and Computing in Healthcare Industry (IEEE Cat. №03EX717).
[4] Hannay et al. (2009) The effectiveness of pair programming: A meta-analysis, Information and Software Technology, Volume 51, Issue 7.
[5] Beck (1999) Extreme Programming Explained. Addison-Wesley.
[6] Bryant, Romero, du Boulay (2019) The Collaborative Nature of Pair Programming. Proc. of 7th International Conference on Extreme Programming and Agile Processes in Software Engineering.
[7] Morris, Begel, Wiederman (2015) Understanding the Challenges Faced by Neurodiverse Software Engineering Employees: Towards a More Inclusive and Productive Technical Workforce. Proc. of the 17th International ACM SIGACCESS Conference on Computers & Accessibility
[8] Do-It (2022) How do neurodiverse and neurotypical software engineers differ in the workplace? Washington.edu.
[9] Granta (2021) Supporting Neurodiversity in your Engineering Teams. LeadDev
[10] Wyatt (2021) Agile Development: Ableist Extroverts Setting Agendas. The Autistic Me.
[11] OpenTEL (2020) Guidance: Designing Learning for Autistic and Neurodiverse Students. The Open University.
[12] McPherson, Gallen, Collins (2019) Enabling Inclusive Group Work. In Proc. of the International Conference on Education, Research and Innovation.
[13] Greene (2019) If the Pomodoro Technique Doesn’t Work for You, Try Flowtime. Zapier.com.