After my previous post – Mob Deprogramming – I felt a need to dig a little further into the subject of pair programming and personality types.

But let me first put a quick disclaimer here. This post is a brazen generalisation, which I only use as a thought experiment to get some kind of guesstimate as to successful implementation of pair programming. Individual maturity, experience, and competence plays a significant part as well as corporate culture and team maturity. It’s also important to remember that MBTI cannot predict behaviour, it only points to the personality type underneath behaviour.

However, it might shine a different light on the issue and give some hints to problems that may occur when implementing pair programming. Especially when enforced as a mandatory method of work.

If we take a look at Myers-Briggs personality types in software engineering, a 2003 study by  Luiz Fernando Capretz at the Western University in Canada found the following distribution:

Sw EngineersTypeGeneral US Pop
24%ISTJ12%
15%ESTJ9%
8%ISTP5%
8%INTP3%
8%ESTP4%
7%ENTP3%
7%INTJ2%
5%ISFP9%
4%ENTJ2%
4%ESFJ12%
3%ENFP8%
2%INFP4%
2%ISFJ14%
1%INFJ2%
1%ESFP9%
1%ENFJ3%

As we can all see, there is a big difference between the distribution of personality types among those drawn to software engineering (left column) and the general US population (right column).

I’ve tried to break these down into three categories, green, yellow, and red. Green are the types that I – based on general personality traits as well as my own experience – deem top candidates for pair programming. The yellow are the types that I have some reservations about. And, finally, the red are the types I think will find pair programming challenging – at least for a prolonged stretch of time.

Green – ISTJ, ISTP, ESTP, ENTP, INTJ, ENFP

Our green fellows make up no less than 57% of software engineers, but only 35% of the general population. This might indicate why this sort of collaborative work has had such an impact in software development – favourable distribution of personality types.

Hey! I see a bunch of introverts on your list! What gives?

Never fall for the old lie that introverts won’t talking to people, or that they can’t interact socially. In fact, some extroverted behaviour is more likely to cause social complications than introverted.

Why do I find these types well suited for pair programming?

Because they have a tendency to be practical, levelheaded and not overly focused on getting their way. Not too passionate, nor status driven. Sure, some of them can be a little insensitive or arrogant. But as long as they’re not paired with an overly sensitive type, normal workplace ethics and attitude adjusts for this.

I have some reservations regarding ENFPs, as they can be easily stressed and emotional, but think the positives outweigh the negatives in this case. Also, in my experience, the largest group (ISTJ 24%) tend to be good at pair programming, but unwilling to do so unless they have to.

Yellow – ESTJ, INTP, ESFJ, ESFP, ENFJ

These guys make up 29% of software engineers. Why do I have reservations towards this group?

  • ESTJ – Can be too focused on status in the group to easily adapt to constant scrutiny
  • INTP – Can feel restrained and unwilling if forced to pair program. Strong need for autonomy
  • ESFJ – Vulnerable to criticism and focused on status
  • ESFP – Sensitive to criticism, conflict aversive
  • ENFJ – Fluctuating self-esteem and sensitive to criticism

But with that said, with experience, maturity, and a healthy work environment, these types can all be good candidates for pair programming.

The green and yellow total 86% of software engineers. Even if we remove half of the yellows, because of my reservations, they still make up 71.5% of all software engineers. These figures makes it easy to understand why some people insist anyone and everyone can learn to pair program, when roughly three out of four programmers fall into favourable MBTI types.

So, what about the red?

Red – ISFP, ENTJ, INFP, ISFJ, INFJ

We (I say we, because I fall into this category myself) make up only 14% of software engineers, while we make up 30% of the general US population. But that’s still 14% of the workforce unlikely to benefit from long term, constant pair programming, and here’s why:

  • ISFP – Easily stressed, too competitive and independent
  • ENTJ – Too insensitive to others, too dominant and independent
  • INFP – Too idealistic and generally no good with criticism
  • ISFJ – Likely to feel run over and unappreciated if constantly scrutinised.  Might get exhausted when constantly observed by someone else
  • INFJ – Too sensitive to criticism. Wants everything to be “perfect” before showing to others, Likely to get socially overloaded and exhausted

Once again, let me stress that this is only a thought experiment and fodder for musings. This is not science – it’s hasty conclusions for the fun of it! 😉

What is also important to remember is that you need a corporate culture that supports team work in a way that facilitates for pair programming, as well as teams mature enough for the practice.

The figures do suggest that pair programming is a good idea in software development, based on MBTI distribution. Just remember that as much as a third of you programmers – taking in red and a good portion of the yellow – might not be on board. Not through any fault of their own, but simply because of who they are!

That is worth keeping in mind.