A funny rap song about the pains of pair programming
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)
57 comments
[ 2.8 ms ] story [ 121 ms ] threadFor 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?
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’ve been in this industry for 40 years. It hasn’t happened yet.
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.
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.
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.
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.
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.
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.
I do fully understand that it's not for everyone!
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.
"Your First Pairing Session" – https://tuple.app/pair-programming-guide/your-first-pairing-...
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.
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.
https://soundcloud.com/marak/marak-the-node-js-rap
Lyrics here
https://github.com/Marak/node-raps/blob/master/The%20Node.js...
Saw this comment and now I'm listening to the back catalog of nerd raps I've made.
Fun times.
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...
Logic sings about some mainstream rap themes but also other important issues like anxiety, mixed race challenges, etc.
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
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.
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 :)
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.
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'
So he’s got no remorse
git push origin —force
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 :)
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
[1] https://i.imgur.com/dvKvR2Y.png
Instead of wasting money RENTING a 500 buck go pro
Why not just buy a cheap ACTION CAM or DIGITAL CAMERA or VIDEO CAMERA
Xiaomi Mijia Camera Mini 4K 30fps Action Camera Touch Screen - BLACK USD$99 - https://www.gearbest.com/action-cameras/pp_712894.html?
or any of the cheap 50-150 buck action cams via amazon USA or Chinese websites , heck even some can be flashed with opensource/alt firmware
Does it have to be rap, possibly one of the worst genes of music
https://www.youtube.com/watch?v=3UsKYsLSGpU
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.
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).