Ask HN: Does pair programming make one of programmers lazy?
Has anyone who has done pair programming felt like the other programmer is slacking off and just sitting in the seat like a passive passenger?
How did you mitigate or improve this situation?
6 comments
[ 4.4 ms ] story [ 23.3 ms ] threadWhat is the motivation? Are you forcing the other person to sit there, because pair programming is some kind of mandate? Or is that person wanting the pair session because they want to learn?
Question the motivation of the person and change process to fit, not the other way
The underlying desire to do it, of course, is to give the programmer (the one who we're investing in to improve) a chance to improve. It feels, however, like a wasted effort.
There are various ways to handle low performance, including talking to the person, finding out the reason behind the low performance. Most often it is caused by external factors.
Pair programming or any such coaching tool IMO are effective only after you dig deep into the reason behind low performance. Once the individual is ready to improve, that is when you can employ pair programming.
It's depressing. Sometimes it's not the lack of mentorship but the lack of motivation on the part of the student. It's almost like someone stuffing a gold coin in one's pocket and that person refusing to take it because it's too far or he can't be bothered.
In my experience, it works best if the person sitting is performing the planning aspects, while the person standing is critiquing or looking for bugs/typos.
If there's too much of a difference in experience level between the two people doing pair programming, I don't see the point -- it's not very effective as a didiactic tool, compared to throwing a junior engineer at a problem way over their head and waiting until they figure it out themselves.
That said, I sometimes get a lot out of performing the 'coaching' role for someone who has a lot more experience than I do, if they generally aren't good at explaining their logic, because it provides me the opportunity to ask very specific questions with very clear context about how and why they are making particular decisions. Sometimes, such questions reveal the logic behind behaviors that were learned through experience and never consciously considered yet have big ramifications on performance, code structure, or engineer effort.