6 ms·
Haha I like everything you said except the "pair program" bit. From my point of view as both a programmer and an employer, this is the cleanest way to make sur
by zomglings 5y ago
Haha I like everything you said except the "pair program" bit.
From my point of view as both a programmer and an employer, this is the cleanest way to make sure knowledge transfers between short-term and long-term team members.
Why the disdain? (If I interpreted correctly.)
- nine_zeros 5y agoPairing is only helpful when you are new and learning from someone more experienced. However, it may be a time-sink for the more experienced person, who could be using their limited time on more critical things. That's why newbies get assigned a mentor, with whom they can pair freely. But pairing rigidly with the whole team just sucks and is incredibly unproductive.
- zomglings 5y agoI don't think it's true that pairing is only helpful for new people learning from someone more experienced. But I also think it will be difficult to convince you otherwise if that's what you believe.
- nine_zeros 5y ago> But I also think it will be difficult to convince you otherwise if that's what you believe. This is true. I have been on both sides of the pairing equation. I am currently on a team that pairs too often and I am annoyed on a daily basis because I could have been utilizing that same time for actual work. So yes, it's going to be difficult to convince me but feel free to take a stab.
- zomglings 5y agoOkay, there are three other common scenarios where I have observed pairing to be immensely valuable: 1. You are in the middle of a death march and pairing with a team mate gives both of you the moral fortitude to keep going (and keep your programs relatively correct and relatively secure). 2. You are working on a tedious but difficult task and working with a team mate makes it so that you are less likely to make mistakes despite the tedium (as well as gives you the moral fortitude to continue with the task). 3. You are working on a difficult problem and you have a team mate that you can truly collaborate with to find solutions neither of you would have found on your own. (The Jeff Dean + Sanjay Ghemawat collaboration at Google is the most famous example of this.) In any of these cases, it is important to pair with someone compatible with you. And you can build compatibility over time.
- nine_zeros 5y agoAll the above examples do not describe my day-to-day experience. Are you literally on a death march 5 days a week, every week? Are you literally on a tedious but difficult task 5 days a week, every week? Are you literally working on such a difficult problem that it needs true collaborators 5 days a week, every week? I specifically want to talk about - The Jeff Dean + Sanjay Ghemawat collaboration at Google is the most famous example of this. Do you think they really produced all they did by pairing together? In my experience, the best things were produced by independent thinking, collaborating on experiments and trusting each others decisions. Not by actual pairing on the screen together.
- zomglings 5y agoWho said you have to pair five days a week every week? That doesn't sound reasonable. Very few things should be taken to an extreme like that. For Dean-Ghemawat, I think they produced many great things by pairing on the same screen together. They also obviously did good work independently of each other.
- kstenerud 5y agoI've had similar experiences. I vocalize a lot (in my head) during the development process, and I've noticed that when I have to engage with another person during this time I start vocalizing audibly, which is where the problems start. The other person gets confused because I'm speaking the snippets and half-ideas that are passing through my mind at the moment (and the internal jargon I've developed over the decades), and it degenerates into long sequences of explaining my every move, most of which would have been quickly dismissed internally had I not had to stop to explain them. Or they misunderstand the path I'm taking for something else that won't work and interrupt me, and then I have to stop to explain first that it's not what they think (which is hard), and then explain the path I'm actually going down (harder), and why I think it's a good idea (hardest). It's like having a backseat driver, and just as infuriating. Every interruption shatters parts of the intricate glass tendrils that comprise the complex model in my mind, and then I have to rebuild them again before I can continue thinking. The creative process gets completely disrupted and there's zero chance of flow. This is fine if I'm teaching someone since the material is well known and there's no creativity required. But during actual work it's a productivity black hole. Death by a thousand cuts.