I've always wondered if the people who move into decision-making spots are extroverts, who then go on to make decisions affecting introverts, like open-plan seating.
Pair Programming Economics
61–70 of 82 posts
Re: Pair Programming Economics
#62Pair programming sounds great and all but if even one person from the "pair" is not good at it, everything falls apart. Also, the pair's chemistry has to be on point like Jeff Dean and Sanjay from Google :p
Re: Pair Programming Economics
#63I imagine this could be chain-gang hell for introverts. I've always wondered if the people who move into decision-making spots are extroverts, who then go on to make decisions affecting introverts, like open-plan seating.
Re: Pair Programming Economics
#64Some people hate pair programming. I happen to be one of them. It kills my personal job enjoyment/satisfaction and if I was coerced into pair programming too often, I would find a job elsewhere. So, the cost of losing one or both of the programmers in the process must be considered too.
True. It's also true a lot of people hate solo programming, and do not want a non pair programming job. My other point is that pair programming is a learned skill. If you just put two unprepared programmers by a computer, you'll most likely end up with two annoyed programmers, and not great code.
This is a popular argument among pair programming enthusiasts, which suggests there may be some merit to it. How do we reconcile it with another popular argument, that many programmers will naturally pair up on an ad-hoc basis when they're working on something challenging and/or interesting?
I can't imagine not wanting a second opinion from time to time, and I've certainly missed having one sometimes when I've been working solo on something and there was no-one else to talk about it with. But personally, I also can't imagine being comfortable in a full-time pair programming culture with necessarily restricted schedules and limited solo time. Sometimes, I just want to do some research or think through some ideas or play with quick and dirty prototypes for a while, even if I might be very interested in discussing my results or initial conclusions with other interested developers afterwards.
Re: Pair Programming Economics
#65Joking aside, pair programming (not as in occasional bout of problem-solving which needs a fresh eye, but as an everyday routine) only works when the problem is well-defined and people involved are of about same level of skill (otherwise it becomes a training session rather than production - which could be valuable but is definitely not the stated goal).
I am a highly skilled and experienced software engineer who did make notable contributions in a bunch of subfields - with awards and such. I noticed that most my peers (including those I consider at my level of skill) have a real trouble following my thought process - for example I tend to work in highly non-linear fashion, jumping all over the place, and in stop-and-go bursts. I could spend a month or two literally doing nothing, letting my mental model of what I'm building to settle and clarify. When the time comes the actual coding becomes nearly an exercise for fingers.
Another issue is depth of the abstraction stack - for most software people I met it's rather shallow. My personal notion of a "full stack engineer" is somebody who understands computers from how quantum effects make transistors work all the way up to the psychology of users, corporate finance, and macroeconomic trends - and everything in between. When you are aware of the fact that programming choices you make do not exist in a vacuum, and are dependent (or should be dependent, if you have a clue) on deep understanding of computing substrata, math behind it, the ways the product will be used, and the business objectives and environment - you would either need to force your choice on your pair peer (in which case there's no benefit of the "second opinion" as there's none) or to spend a lot of time and effort just giving him the background necessary to understand justification for your decisions. In my experience attempts to do so usually get dismissed as "that's philosophy", "it's irrelevant", or "we have work to do".
The stated advantage of PP - the better code quality - could be just as well achieved by a combination of disciplined thought, careful and elaborate execution, and actual learning from errors and mistakes - reflection on the ways I make mistakes is somewhat of an obsession for me; by now I usually know where I made a mistake even before I fire a debugger to confirm it (interestingly, I observed the same obsession in people who are engaged in seriously risky and technically complex endeavors like flying search-and-rescue missions or technical diving). (FWIW I'm of a very low opinion of merits of code reviews... wastes way more time on bikeshedding than saves on troubleshooting. Of all my decades writing code I may recall maybe a handful cases where it actually helped to find a bug which wouldn't be immediately apparent otherwise.)
Re: Pair Programming Economics
#66Just emphasize to everybody to keep it friendly, and make an effort to +1 ASAP every time.
Re: Pair Programming Economics
#67Earlier quoted context omitted.
True. It's also true a lot of people hate solo programming, and do not want a non pair programming job. My other point is that pair programming is a learned skill. If you just put two unprepared programmers by a computer, you'll most likely end up with two annoyed programmers, and not great code.
My other point is that pair programming is a learned skill. If you just put two unprepared programmers by a computer, you'll most likely end up with two annoyed programmers, and not great code. This is a popular argument among pair programming enthusiasts, which suggests there may be some merit to it. How do we reconcile it with another popular argument, that many programmers will naturally pair up on an ad-hoc basis…
I don't think I've heard this argument, and I haven't observed programmer behavior in the wild :)
I'm happy working solo 1 day a week or so, to do things maybe only I care about, or explore/learn things.
Pair programming certainly isn't for everyone, but don't knock it until you've done it for a few weeks, hopefully with some good pros!
I've never learned so much about programming as during my first ~6 months working together with people and learning their wisdom and tricks.
You're right that the restricted schedules are a downside.
Re: Pair Programming Economics
#68I work at a company that does full-time pair programming whenever possible. There can be drawbacks for sure, but overall, I love it. However, one caveat is that our hiring process places emphasis on finding people that are collaborative and easy to work with as opposed to know-it-all "rockstar" developers. We also do test-driven development, so in addition to the most common pattern (driver / navigator) we sometimes…
Hiring for pairing is important. It's not for everyone, although not everyone has been in an environment where it's done well. I make sure to let people know they will be pairing full time on my teams and ask if they are comfortable with that. Also won't hire anyone that would be significantly slow to work with (can't touch type, slow thought process)
Re: Pair Programming Economics
#69I work at a company that does full-time pair programming whenever possible. There can be drawbacks for sure, but overall, I love it. However, one caveat is that our hiring process places emphasis on finding people that are collaborative and easy to work with as opposed to know-it-all "rockstar" developers. We also do test-driven development, so in addition to the most common pattern (driver / navigator) we sometimes…
* Really talented junior engineers blossom extremely quickly. They will easily be a multiple better after a year vs not pairing.
* Middle of the road junior engineers can be stunted and continually depend on the decisions / skill of the more senior pair. Pairing them more frequently with same level or lower helps. Sometimes this doesn't happen because this lower quality pair goes significantly slower and the result may need some code review/cleanup cycles, but it's a worthwhile investment.
Re: Pair Programming Economics
#70I spent the first fifteen months of my current job on a 100% pair programming team before transferring to a more traditional scrum-based team. Some observations: team cohesion on the pp team was much higher, code quality was higher. Flexibility, not surprisingly was lower: we had a very fixed schedule: "Stand up" at 8.06 (despite the name, it was unrelated to the scrum event, instead it was more time for sharing news…
Agreed. This has been my experience as well. I've mostly pair programmed over the last 15 years. Very similar schedule. Same pros & cons. There's a counter intuitive key element to Pair Programming - you're slowing down in order to go faster. You make fewer mistakes and correct them an order of magnitude faster when you do. You spend less time "thrashing" on something. You're less likely to loose the better part of a…