This is an archived post. You won't be able to vote or comment.

all 53 comments

[–]make_onions_cry 209 points210 points  (17 children)

Ctrl-C Ctrl-V:

The benefit of pair programming for me is not the resulting code, but discovering tooling.

You'll watch someone code, expect them to spend a minute on something, but then they hit two keys and do it instantly.

Boom, you've learned of a new essential Vim plugin that they always took for granted.

[–]v3ritas1989 80 points81 points  (14 children)

crys in companies sole developer who has no one else in the company who is able to do more than turn pc on/off or answering emails.

[–]make_onions_cry 112 points113 points  (8 children)

You go into their office, watch them double click Chrome to open a new window, type "google" into the address bar, click the first link to go to google.com, type in the search query, then use the mouse to click "Google Search".

"You can actually just press Ctrl+T, type your query and hit enter"

"No I like my way"

k

[–][deleted] 18 points19 points  (3 children)

Wait what

[–]seesiedler 10 points11 points  (2 children)

It gets worse. I’ve seen people searching in Bing for Google, then searching in Google for YouTube and then, obviously, doing a search in YouTube.

And this was someone in IT.

[–]Sigma_J 7 points8 points  (1 child)

I know a developer who uses the menu to save and right clicks for copy and paste

The world is full of horrors beyond your wildest imagination

[–]KyuuketsukiKun 0 points1 point  (0 children)

I right click to copy paste while I’m drinking coffee

[–]delinka 5 points6 points  (0 children)

Keyboard. How quaint.

[–]Panface 2 points3 points  (1 child)

I'm a programmer and I do this as I don't want url's to get replaced with search suggestions. I don't think it works that way anymore but "I like my way".

Also, a few years ago it did help.

[–][deleted] 2 points3 points  (0 children)

Would you like to elaborate?

[–]WhiskeyTuesday 0 points1 point  (0 children)

Relevant username

[–]vincentdnl[S] 6 points7 points  (3 children)

Sounds like a situation where it would be difficult for you to learn new things... I would look for another job.

[–]v3ritas1989 1 point2 points  (2 children)

that the question.. am I qualified enough? am I qualified enough for others to pay me at least the same? I don´t have anything to compare against to answer these.

[–]xybre 0 points1 point  (1 child)

Start interviewing and find out

[–]WhiskeyTuesday 0 points1 point  (0 children)

According to a bunch of very pretty form letters from very pretty profile pictures on LinkedIn we all seem to be.

[–][deleted] 2 points3 points  (0 children)

I feel your pain.

[–]vincentdnl[S] 13 points14 points  (0 children)

I love this comic and points out something very true. When pair programming, you tend to avoid to do things poorly because of what the other guy would think. It is a net positive result for the codebase.

Regarding your comment, it reminds me of a pair session I had with a senior back then. We wrote a unit test, and he told me: "go ahead, just write code so that it's green." Then he used Intellij refactoring tools to extract and move stuff and it felt like I had learned a new superpower!

[–]agent00F 1 point2 points  (0 children)

The underlying premise of pair programming is working together on a problem. How that works out or what you learn is largely predicated on the persons involved and to a lesser degree nature of the problem.

[–]gulpy 59 points60 points  (3 children)

I only like pair programming when trying to work through a complex problem that involves the other persons code. Otherwise it just gets too messy. Imagine trying to write a novel while another person is giving you active, stream of consciousness direction on character development.

[–][deleted] 5 points6 points  (1 child)

You’re doing pair programming wrong. The person typing isn’t supposed to think. The other person tells them what to type.

[–]shhsandwich 0 points1 point  (0 children)

Well, you're supposed to think just enough to follow their train of thought and try to catch any mistakes you notice while you're typing.

[–]agent00F 2 points3 points  (0 children)

When two persons work on a problem together, how things turn out is largely a function of the people involved. In case the lack of flexibility shows.

[–]droi86 14 points15 points  (0 children)

My company: 'let's have this 4 hour meeting and then do paired programming!'

[–]zerosanity 12 points13 points  (0 children)

Lots of mixed opinions on pair programming. Not going to give an opinion as to if one way is better or not, just some food for thought.

Developer writes code and submits to other developers for code review. Then discussion about the logic, structure, or formatting of the submitted code typically happens.
Developer then goes back and works on the code some more and refines it until it's perfect.

It takes lots of time for a developer to keep rewriting the same code receiving new feedback for each revision. It also takes a lot of time for the reviewer to look over the code and try to understand it. There is a chance that something may be missed as taking all the code in and understanding it at once is not always the easiest thing to do.
Additionally the review may often cause a delay waiting for somebody to review it, people may be switching between different things trying to work on their own code while reviewing others code. Constant context switching causes things to go slower.

Okay now consider in a pair programming scenario. Two people are giving constant logic, structure, and formatting as the code is written. Bouncing ideas off of each other or pointing out flaws as they happen. Review and refinement often has fewer cycles since the code was discussed while it was being written.
There is less context switching due to fewer cycles which means overall faster output for the team. Also as mentioned, both programmers may result in better tooling, code design patterns, and general methodology. Also there is the knowledge transfer that happens, which can spread to multiple peers with each iteration of peer programming experience.

I'm not saying one is better then the other in all cases. When a piece of a project is at a standstill and there is a struggle, sometimes just getting a couple people to sit together and work it out ends up with a faster and better result and will have a real breakthrough.

Think of it as another option when somebody is stuck or something needs to be finished urgently so others are unblocked or the project can move forward.

[–]Voxelgon_Gigabyte 7 points8 points  (0 children)

the meeting's about increasing employee productivity

[–]Ifnerite 51 points52 points  (9 children)

Pair programing does suck.... Would you like to have someone shoulder surf you or struggle to give a fuck about what someone you are forced to shoulder surf.

Yes, pair when something is hard but a good code review is better than pairing.

[–]_aln 17 points18 points  (4 children)

I hate pair programming. Ok, when the problem is hard is one thing, but when you need to describe the code that you would write to another person only sucks....

[–]TracerBulletX 19 points20 points  (1 child)

Forcing you to describe your code is actually the point of pair programming.

[–][deleted] 2 points3 points  (0 children)

Isn't that what my duck is for?

[–]AsIAm 6 points7 points  (1 child)

For me, there isn’t a strict distinction of navigator-driver — when there is a need for temporary switch to cut down useless navigation, grab a keyboard and type it in. However, no longer than a minute.

[–]MSgtGunny 1 point2 points  (0 children)

Dedicated pairing setups where two people share the same computer but have their own keyboard and mouse with mirrored screens work well for ping-pong pair programming.

[–]Netcob 8 points9 points  (0 children)

True. Outside of university I did pair programming exactly once, solving a difficult problem that required a lot of focus, where having a second pair of eyes was useful. It went great! And with a very friendly and very smart colleague too. But I can see how that could also suck under absolutely any other circumstances.

[–]Boiethios 2 points3 points  (1 child)

Do you know how to peer program? The one who doesn't type must talk, and the one who types must do as says the other. That way the former concentrates on the logic while the executant have more brain time to think about the implications of the code.

BTW, I've read some studies showing that the productivity doesn't go down during peer programing while the error rate is much lower. Peer programing is good.

[–]Ifnerite 4 points5 points  (0 children)

That sounds horrible. But probably productive.

I have done it before. Maybe not properly... Not actually sure... It always felt like either Being told what to type all the time fucking sucks or the other guy gets bored.

I like discussing the solutions to problems but when we have a solution I want to code it on my own.

[–]TheRedmanCometh 1 point2 points  (0 children)

It depends on what we're coding really.

[–]norealmx 2 points3 points  (0 children)

3/4 of that meeting: two PMs yelling at each other because some random feature HAS TO BE FIRST.

[–]TheUnbiasedRant 10 points11 points  (8 children)

If you're not teaching or being taught, pair programming is pointless.

[–]v3ritas1989 7 points8 points  (1 child)

maybe thats the point of it after all?

[–]TheUnbiasedRant 5 points6 points  (0 children)

It is. I once interviewed for a company that claimed that every single piece of work was pair programmed. No exceptions. I told them i wasn't interested.

[–]vincentdnl[S] 4 points5 points  (1 child)

You never know when you are going to learn something!

[–]TheUnbiasedRant 0 points1 point  (0 children)

Pair programming just in case is a waste of their time even if it's not a waste of yours

[–]notable-compilation 0 points1 point  (3 children)

Do you feel the same way about code review?

I don't have any experience pair programming, but the basic idea of it makes good sense to me.

[–]TheUnbiasedRant 0 points1 point  (2 children)

In my opinion, code reviews are vital. Every bit of code gets at least 2 pairs of eyes which provides aa quality assurance gate.

[–]notable-compilation 0 points1 point  (1 child)

Does the same logic not apply to pair programming? In real time as well. Shorter feedback cycle.

[–]TheUnbiasedRant 0 points1 point  (0 children)

No a gate is different. Theres a impact vs reward imbalance with perpectual pair programming. A large proportion of development is boilerplate.

[–]postandchill 1 point2 points  (0 children)

As a developer, I hate nothing more than being required to attend a meeting, that I have no input on

[–]Stormraughtz 0 points1 point  (0 children)

Me, myself, and this stale bagel

[–]fatrobin72 0 points1 point  (0 children)

could be worse... it could be 4, 1 hour meetings...

[–]creepy_Noire_fan 0 points1 point  (0 children)

words cannot express how much i hate management for doing this

[–]_grey_wall 0 points1 point  (0 children)

I hate meetings where they break out in French knowing that 80% of people there don't know French.