Remote-pairing

Would you pair-program with me?

The time has come to share what product I actually want to create for Get Noticed! 2017 contest.

Few words about Pair Programming (PP)

I bet you’ve already heard about Pair-Programming, but to bring us on the same page I’ll say few words about it. PP is a programming (isn’t it ironic!) technique you can use to tackle hard or medium tasks (not recommended for simple ones). It assumes you and your partner sit in front of one computer and try to solve the issue together. Important thing is to remember to switch the person with keyboard and mouse regularly, so both participants have the opportunity to concentrate on both coding and validating partner’s work. If you want to go through the topic more extensively I encourage you to read original Extreme Programming definition and this Marek Kirejczyk’s blog post.

What problem I want to solve

Connect people with same goal
Connect people with the same goal

Despite many publications and experience shared from programmers that are already into PP about its benefits, not too many companies decide to implement that approach in their teams.

What can you do then? Pair-program in your free time, on your side project or work with your friend developing his product. But… what if your friends claim they are too busy for such activity and keep tell you they don’t have time? Or you just want to change the pair, check how it goes with someone else or make new coding-friends?

Here is where my website comes: CodeMate is meant to help programmers keen on PP to find suitable matches for their projects. It doesn’t matter if you are a host/driver (I mean the person who ‘owns’ its idea/code) or subscriber/navigator (the person who attaches to host) the website should let you look for a companion who you could work with.

How it may look like

The application needs to cover two scenarios:

  • A user has a project he develops and wants to find a PP match to share coding experience with another programmer. He publishes all required info on website: project description, language, his location, willingness to do remote PP, calendar (when he is able to do PP)
  • A user wants to accompany somebody to develop the project. He searches for languages he can code in, a location he can reach (or remote), and date/time he can make. He chooses the project from the list of available ones, picks the partner and schedules the session with him.

The rest is up to the users. Although I want to integrate with Hangouts or Skype to provide users with basic tools to do the PP, they are the ones who decide how they want to proceed with their work. My job is only to pair two guys and let them work together.

To make this application enjoyable – I would like to extend it with tracking history of pairing, badges, reputation etc. to make the users eager of next sessions and willing to come back to my service.

What can you gain

The list of advantages of PP is quite remarkable. Starting with sharing the knowledge, good practices and tools, through a better code, its quality, instant code reviews which save time, to meeting new connections in community with amazing people with true passion. It brings us second pair of eyes which is often necessary because we tend to be blind for the missing semicolon sometimes, teaches you social and soft skills, enforces to do negotiations (which implementation approach we want to choose, why yours/mine is better/worse) and gives you debugging duck out of a box 🙂

Lastly, how many times you’ve found yourself watching youtube/facebook when the task you got was hard or you’ve been tired/had worse day? I guess too many. And the PP is a solution here as well – it increases discipline which leads to fewer interruptions letting you dive in ‘flow’ state of mind.

I hope you’re convinced now it is worth your attention 🙂

Are there similar existing projects?

Short answer: Yes. No matter what had you ask about here – the answer would have always been positive I guess. There is so much already written software that it is hard to find something absolutely new.

When I was doing the research what similar systems already exist, I found this rich PP resources aggregator:

http://www.pairprogramwith.me/ – it is not the kind of application I would like to develop, but it is a valuable base of what is available on the Internet regarding PP (tools, apps, other resources) – nice one! In terms of similar websites I found:

  • http://pair-with-me.herokuapp.com/ – Twitter’s #pairwithme tag aggregator
  • http://letspair.net/ – very close to what I want to achieve, but missing some features I would like to have in such app and unfortunately it hasn’t been updated since 2013. I thought firstly to fork that repository (code is open) but it is written in Ruby, so I quitted. My goal is to learn ASP.NET during this project.
  • https://www.meetup.com/remote-pair-programming/ – meetup event for pair programming
  • http://www.codermatch.me/ – another promising approach but with hardcoded list of possible languages/technologies (I don’t have an idea why) with no time scheduling – just pairing with someone on the desired level of experience (subjective user’s evaluation).

To sum up, there are some projects delivering comparable functionality, but none of them has a set of features I would wish to have in such app. Additionally, my project will be developed for training purposes – it is meant to teach me something, so I decided to LAUNCH IT despite above services! Keep your fingers crossed for me 🙂

Inspiration

I learned about PP yet on my studies, but I had an opportunity to make use of it only twice. It was already a few years ago at my previous employer. I found these two days extremely productive, educational and horizon broadening.

Bartek and me on Boiling frogs
Bartek and me on Boiling frogs

Last week, I attended Boiling frogs – software craftsmanship conference – with my friend Bartek. One of the sessions considered PP, authored by Krzysztof Jończyk. He described how this concept was implemented in the company he works in, how beneficial it is, how hard it was to convince management that two programmers sitting in front of one monitor is a good idea and… many more! I found this lecture truly inspirational! In fact, it was the moment when I came up with the idea of my pairing Web application. I also finally decided to take participation in Get Noticed! contest. Thanks, Krzysztof! Here you can find his materials from the presentation.

Thank you for reading – the post finally turned out to be quite long…

What about you? Do you have any experience with Pair Programming? Or maybe you use any mentioned (or unmentioned) service to pair with strangers? Do you have any suggestions how my product might look like? I’ll appreciate your comments.

Have a good day!

Somewhat experienced programmer who tries to find intrinsic meaning in each act he does. Increasingly builds his courage to let his life be driven by passion. Currently giving blogging a whirl.