Hacker News new | past | comments | ask | show | jobs | submit login
A funny rap song about the pains of pair programming
126 points by stdoutrap on Nov 24, 2018 | hide | past | favorite | 50 comments
Song URL: https://www.youtube.com/watch?v=psw9G9Lp7ac

Quick background on the project: I'm a full time programmer and I love making rap music. I see a lot of humor in the profession/industry, and thought it would be fun to combine the two.

Here is what I'm planning on for next steps. I'm always open to feedback!

1. Get something for Patrons (ordered stickers, will probably order mugs as well)

2. Paid ad on a popular Twitter account(s)

3. Rent a GoPro and shoot a music video for one of the existing songs (if you have any tips on recording, please let me know - I have done some music video editing but don't know much about video cameras)




This reminds me of a rap I wrote a while ago! I hadn't shared it before but here it goes. It's based on Eminem's 'Lose Yourself':

  Yo
His palms are sweaty, knees weak, arms are heavy

There's build errors already, his code is spaghetti

He's nervous, but on the surface he looks calm and ready

To start debugging, but he keeps forgettin'

The code he wrote down, has no comments at all

He starts to type, but more build errors are comin' out now

He's choking, how, tabs and spaces are mixing now

The breakpoint runs out, null exception, blaow!

404, oh there goes code quality!

Oh, there goes overflow, he choked

He's so mad, but won't give up that easy? No

He won't have it, he knows this whole repo's a joke

It don't matter,

All that's left is to type in disgrace,

'git rebase'


Ha! See if you can work in something like:

So he’s got no remorse

git push origin —force


So I'll start the HN let's-ignore-the-headline-and-discuss-the-topic-thread

For some reason my boss was mentioning that we should do pair programming (they don't program). There's only a handful of devs. Nothing really happening. Personally I prefer asynchronous interaction, so I've been pushing for code review. But two of my coworkers started pair programming & both seemed to think it helped work through their issues. I've personally fallen into what might be called "pair programming" when pairing with a coworker who doesn't know how to program but knows all the business logic for a task

How are people pair programming? Does it work better when it happens organically? Does it change how much time you spend printf debugging?


I think I do it terribly when I pair with someone. It doesn't feel natural, far from it, sometimes even feels tortured. But it still works wonders..

1. You stay focused

2. Often it turns out that me and my pairing partner are out of sync on either what should be done or how it should be done. And in those cases, often, the truth (for the lack of better term) is in the middle.

3. Doing quality peer code reviews is hard and takes discipline. If you lack it, pair programming is a good shortcut.

4. You get immediately two people owning (or, rather, invested into) the thing. So the effort is less likely to lose steam.

I'm not denying though that there probably are other ways of interaction (async or not) that may still bring these benefits.

EDIT: more things.

5. Having someone in peer code review question what you have been busy with in the last couple of days hits harder, compared to when someone filtering out what you put in the code as you explain your ideas.

6. Bonding.


To add just one thing to this (which covers most bases I think), it really depends who you're pairing with.

I've had really great times with a buddy at work, paired up, complementing eachother's skillsets, getting things done, and having a great day at work.

And I've worked with far less agreeable personalities who're always right about everything, in your face, and just plain not enjoyable to be around for any extended period of time.

That's probably the biggest takeaway from pair programming for me. With someone good? Have a wonderful time accomplishing a lot. With someone bad? Have a stressful time... maybe accomplish something.


For me:

7: Learning. I never learned - or taught - as much about programming as when I was pairing. Everyone has their clever little tricks they've come up with, and spreading them around as problems come up is wonderful.


Another benefit is establishing team norms and best practices, which is also a goal of code review, but pairing accomplishes it in a bottom up way rather than a heavy top down way. I've worked on teams where review was a very important part of our process and it was common for code to be under review for days or even longer.


I wrote a guide for newer pair programmers. People have said they found it helpful, so maybe you will too!

"Your First Pairing Session" – https://tuple.app/pair-programming-guide/your-first-pairing-...


Pair programming is great, but it's a skill you need to learn, so it's best to pick it up from pairing with experienced pair programmers.

If you just put two normal programmers in front of a computer with a programming task, you're more likely to end up with two annoyed people than great teamwork and code. At least at first.


The day you convince me I can get more productivity out of two programmers programming together than two programmers programming separately is the day I’ll consider pair programming.

I’ve been in this industry for 40 years. It hasn’t happened yet.


I think the idea is that by writing less buggy code with two people you save in refactoring, bug squashing, and fire management down the road.

Similar to testing I suppose.

No idea how the math works out in the end, I assume it'd be highly variable based on the product being built and the people involved.


What little pair programming experience I have makes me think it’s great to do now and then, but maybe not all day every day. You get to know your team members, share skills, see different perspectives and ways of approaching a problem, and understand how your way of working will affect others ability to do their work. Do it once a week or so and I’m confident it will be good for the quality of the code and the team.


I have found that pairing works well for teaching and for solving particularly tricky problems. It also results in higher quality code than working individually with reviews afterwards. However, it is a fair bit slower than working individually - depending on the type of work 0.5x - 1.5x a single dev. That said, the outputs are of a quality actually unachievable with a single dev, so comparing time doesn't always make sense.

So, like many things, it is a tool that should be used when you feel it helps. For example, API design can be done well in pairs, where the code quality has a big impact later on, and then the functionality implemented individually. It also is a great tool to speed up your onboarding process and get new devs giving useful feedback from day 1 and being highly productive within a week or 2.


My last team lead an I thought and spoke at about the same rate, which made our pairprogramming exp. Tremendously useful bc see had institutional infrastructure knowledge, and i held intimate product knowledge.

With out powers combined it saved about a half work day once a week easy.

Ymmv but i feel pair programming is a function of individual knowledge base and communication


I'd say pair programming always starts organically at my current workplace (well, it's certainly never really planned; mostly it starts with "pair debugging"). And I have to say: Given the right partner for the task, I usually really like the experience.

For me, a big part of this is that rubber ducking seems to really work well for me as well as some of my coworkers, but although I actually have a duck at my desk (more of a gag), I could never actually use it -- in an open space office, I just can't help but feel like an idiot while discussing the codebase with a toy ;-)

Of course, a big upside to a coworker playing the duck part (aside from them not being as stoic and giving me valuable feedback) is that this practice automatically familiarizes more people with a given piece of code, which is also never a bad idea.


Pair programming reminds me of a sweatshop type of situation, when there is no time to reflect for too long just produce code so that your pair won't tell your boss that you are stupid. Code driven by fear is never good. Okay, you might have a pair that you feel comfortable with and tackling the task at hand goes easy. But in that case again, probably you didn't have time to think when you couldn't get something right and your pair gave you solution instantly. This way your learning is screwed and of course you got the output, but this has done little to better yourself. Pair is fine to get to know someone, perhaps show new person a project and do a simple task with them, but other than that it is a waste of time. Basically two developers solve one task whereas they could solve two and also learn more.


I interviewed for a week at a consultancy known for pair-programming a long time ago.

Each workstation had two chairs, a large iMac in the middle, and the developers had an individual macbook/kb/mouse on each side.

The code was on the middle machine, and either kb/mouse could control it. They also were using software named Teleport(?) that let you seamlessly interact with both the main iMac and your own laptop. I don't remember exactly what it did, maybe let you drag files between the two computers or something.

I got to pair-program with them on assorted real world tasks that week, a different employee each day. I was generally impressed with the workflow. There was basically zero downtime in terms of progress. I can easily them imagining at least getting a 2x productivity boost, but I'd imagine it was more like 2.5x or more.

Sheepishly, what I didn't like about it was that I'm the kind of person that likes to get a lot done and then work on my own stuff on the job, or have the freedom to surf HN when I'm ahead of schedule, and that was kind of impossible there without your teammate knowing it. :)

But I will say it was very stimulating and fun. The other developers were really nice and fun to talk to. I work remotely, but I would certainly consider that arrangement if I were to get a desk job again.

It's better than the sort of office job where you're languishing on your own and nobody has a firm grasp of what exactly you're even working on in precise terms. I've been there before and it's incredibly stressful when you fall behind pace and your work performance starts to suffer. I feel like pair-programming eliminates that kind of thing.


2x productivity boost compared to one programmer or two programmers ..?

I have a hard time seeing why this would work. On the other hand, it's more or less a hand over of knowledge for the system, so in that sense all the negative effects are might be zeroed. I've got this feeling that knowledge hand over is the biggest problem in the industry.

I would really hate to have to do pair programming but I'm not totally convinced it's all bad for the company/product. Maybe one day a week to spread the knowledge?

EDIT: The song is nice. A bit to specific topic to be funny though.


This interview story sounds more like Hashrocket (the consultancy I founded in 2007) than Pivotal. Pair programming used to be a big selling point for us both with hires and clients.


Yeah, the focus and the full 8 hour work days is one of the attractions of it.


I did it for two years. I found that it was draining to be focused the full time every day. I liked the way it worked, I loved the code quality that came out of it, but I can't do it 8 hours a day month after month.


I was exhausted the first month, but... I actually hate myself when I slack off. I love few things more than getting things done, and pairing provides me with that euphoria and discipline.

I do fully understand that it's not for everyone!


Let me guess... Pivotal?


I love this so much! Musical comedy is a favorite genre of mine, like this[1], for example.

Re your plan:

1. I'm dubious this is a top-priority. I'd probably focus on the content for a while before focusing on swag and other perks. Patrons, especially early patrons, are there to be supportive. They aren't looking for "things". They want more of your quality stuff in the world. (This is just my attitude as a patron. I could be wrong. Are your patrons are clamoring for stuff? Have you asked them?)

2. Why not focus on the content and going viral organically? You're already at the top of HN. Keep doing more things like this and save your money! Have you seen First Round Capital's holiday videos? They get tens of thousands of views. I don't see any reason why your videos couldn't organically get a similar number.

3. If you have a newer phone, the cameras are pretty solid and probably good enough for a first video. I've used a DSLR in the past to make a medium-quality music video. I'd even consider using whatever webcam your computer comes with and doing something super low-budget to start, such as you simply saying the lyrics. Another quick improvement idea: instead of a static screen why not put the lyrics in the video?

[1] - https://www.youtube.com/watch?v=tZltTy9T-98


Thank you so much for the thoughtful feedback! You make a lot of solid points...I'm now re-thinking what would be actually valuable as next steps.



Aww, thanks!

Saw this comment and now I'm listening to the back catalog of nerd raps I've made.

Fun times.


I smell a rap battle coming...


I love the song. I personally would be much more interested in high quality lyrics, beat, audio recording, etc than a music video but that's just my opinion.

Your flow in this song is much better than your "Opinions" song so I'd say keep working on how you spit, not producing a video.


Thank you for the feedback! I keep getting comments that some visuals would go a long way. I also think it'd be fun to do, so it's pretty tempting. I do agree that the focus should be on song quality though.


You need a GoPro for a music video? What, are you going waterskiing or something :)

I'm no expert, but I'd say just use mobile phone cameras. Go to different places, have someone (or a tripod) film you lip-syncing the entire song there. Import all of the clips into a video editor, place your backing audio track and wiggle around the video clips until they sync up. Cut scenes between the best bits of each video track. Of course, you need a friend or two to cast as the other half of the pair programming pair :)


Damn your channel is gold. Subscribed. Thanks for sharing.


Thank you so much!


The hell.js is funny as hell. Pair-programming is the worst practice I’ve seen in my life. The lyrics says so.


What's the opposite of a sweet spot? Pain spot? Pair programming has a big one. Basically whenever you sit with another programmer and try to do initial design of something while coding it. God that is awful. Don't ever do that.

But it is useful for other purposes. Two people think better than one, when the solution space is well defined. And you always pick up, or teach, some good tricks and habits from other people. If you're working on some code that you wrote yourself, you also learn a lot about how easy it is for others to understand it.

The pitch for pair programming should not be increased productivity - at least not directly. Almost everything about the setup means things are slower. The benefits are in other areas, and are real. That said, the fact that you are two people means that you are 100% focused and not goofing off and procrastinating, so in the end you get things done just about as fast as you would have alone. It's pretty exhausting though, I would not recommend it for more than a few hours in one day, at most one or two times a week.

Also, cool song :)


2 people != 2 devs :) Each dev will have their own solution for the same problem, which one should they pick? Then you are either a jerk that does not consider others' ideas or follow blindly other idea and don't get to solve the problem == no work satisfaction.

I personally don't like it. For me it always felt that I had to justify my thinking, but many times it's just a gut feeling. Also, the need to explain what I do is very exhausting, and slowing down my thinking.


I've never been a fan of rap music, I've actually mostly been repulsed by it, but after hearing this I think I'm a fan. I guess it was all about what the songs are about (not a fan of violence).


Rap can be as diverse in terms of subject matter and style as any other musical genre.

If you want some more "nerd" or parody rap here's some MC Frontalot[0] and Optimus Rhyme[1] that HN might enjoy.

[0]https://www.youtube.com/watch?v=4nigRT2KmCE

[1]https://www.youtube.com/watch?v=FTLwiccIOxI


I think there's a lot of potential for varied topics within rap. When you start listening to more politically aware artists or artists with meaningful lyrics then you start to see how amazing rappers can be.

Logic sings about some mainstream rap themes but also other important issues like anxiety, mixed race challenges, etc.


Rap is like metal is like anime is like oil on canvas, it's a medium to express a large variety of things (though not everything).


I'm getting somewhat of a Jon Lajoie vibe out of this - great work!


Hi, here's an angle: make music/videos to advertise for startup products. There is a video agency that specializes in making TV commercials for software products that you could emulate: https://sandwichvideo.com/

So for this one, find some pair programming/screensharing tool and sell them a license for the song (or produce a video) as marketing material.


These rap songs are both funny and ring true. Please make more, and a video would be cool too :)


Brilliant! This reminds of the Python I heard not too long ago...

https://www.youtube.com/watch?v=3UsKYsLSGpU


This made my day. Great work. Keep it up!

A small suggestion: include the lyrics either in the video itself or as subtitles. (I know they are in the description, but this way it would be easier to follow them).


Now that it's Sunday evening here in Europe I took the time to listen to your pair programming rap (again) and some other songs and wanna say, this is really gold. Keep it up!


---

Video unavailable This video is restricted. Try signing in with a Google Apps account.

---

I am logged in with my google account, but I'm just learning there are two kinds of google accounts... wtf google...


Loved it... but I felt bad for subscribing :D [1]

[1] https://i.imgur.com/dvKvR2Y.png


That made me laugh. Thanks for making this and sharing.


Sooo good!!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: