To start using this site you need to have a GitHub account to sign in. Once signed in it will create your profiles information based on your GitHub account and return you to your brand new profile page. Click the profile editor button to enter in if you want to be a student, partner or teacher. You should also enter in what skills you have and what skills you are looking to learn on this page.
Once you have your profile how you like it, head on over to the search page to look for what you want to use on your next project and what kind of partner you are looking for. After hitting the search button we will find the very best matches for you to begin your pair programming journey!
What is Pair Programming?
Pair Programming in its simplest form is just two people working together on a project. We recommend when programming to follow the driver/navigator method to be the most efficient. This essentially means one partner, the driver, types while the other, the navigator, researches problems and checks the drivers work.
Why Pair Program?
Pair Programming allows you to have two minds working on the same problem making it much easier to solve. It also encourages you to express your logic in an efficient heuristic manner. Pair programming helps you write better code and understand what you've made much better.
How to Pair Program?
To pair program take shifts revolving every 15 to 30 minutes or every other challenge. As one partner takes on the role of driver and actually types out the code. The other partner assumes the role of navigator and they are in charge of research and pseudo coding the driver through blocks. As the driver types the navigator should watch for errors and problems with the logic. At all times both partners should be able to articulate there logic and thoughts.
How to Remote Pair Program?
Remote pair programming can be as simple and efficient as it is in person programming. We recommend using a text editor in which you can share a workspace and some form of video chatting. Other than that, you basically do the same thing as you would in person with a little bit more articulation of your thoughts since you can not read body language as well.
- A great blog on how to pair program remotely
- A guide to building A remote Command Line setup
- Great guide to what you need to remote program
- Info on some of the best remote programming practices
What is A Good Project?
All projects are a good project. Pick a project goal in scope for your skill level and just have fun with it. Just because your project is not ground breaking or has been done before does not mean your project is not good! www.ideaswatch.com is a great site to find project ideas as well.
- Great site to find project ideas
- List of projects to develop coding skills
- Here is a great place to refine your coding skills in general to build great projects
- Here is also another great place to build your coding skills
Tools to Program in Pairs
- TMUX Allows multiple users to connect to a single terminal session. Directions here for quick reference tmux shared session and in video here
- appear.in free video chat service with screen sharing, audio, channels, and more for free.
- Wemux A simple script that makes shared tmux sessions more easily manageable. A great write up on how to here Simple Remote Pairing with wemux by Mike English.
- Termbeamer lets two Linux users share a terminal session across the Internet.
- ls-pair 'Advice and some software tools for doing terminal-based remote pair programming.' by Bruce Campbell from [Living Social](Advice and some software tools for doing terminal-based remote pair programming).
- Tweemux A slim wrapper around tmux to ease remote pairing setup by PeopleAdmin.
- webpair Webpair is a tool to make pairing even easier by sharing a tmux session through a web browser by Yann Armand.
- github-auth allows you to quickly pair with anyone who has a GitHub account by adding and removing their public ssh keys from your authorized_keys file by Chris Hunt
- Google+ Hangouts have screen-sharing and remote desktop control capabilities with integrated audio and video chat.
- Screenhero is a screen-sharing app for Mac/Windows, optimized for collaboration. Recently acquired by Slack and it is integrated beautifully into the already massively useful Slack tool.
- Join.me Simple, free and awesome cross-platform (mac/win/mobile) screensharing for multiple users, with remote control, audio/visual connection, built in scheduling and screen recording.
- Remote Pair Chef Quickly build customized EC2 instances bootstrapped with RVM, TMUX, Vim and pre-built users in a single command by Jonathan Jackson.
- Cloud9 is an online ide that allows "developers around the world to edit the same code and chat together in real-time". You can sign in with your github account and clone repos straight into it. Cloud9 also has a great post about Pair Programming and how it's the future.
- MadEye MadEye is a collaborative web editor backed by your filesystem. Easy to use, designed for collaboration and built with the ACE editor. See it in action here.
- CoVim allows you to remotely code, write, edit, and collaborate, all within your custom Vim configuration by Fred K Schott. See the details.
- Floobits Floobits lets you use native editors to work on the same files as others in real-time. It also has flootty to share terminals as well as voice chat and screen-share via Google+ Hangouts and WebRTC to their web-based editor.
- tmate is a fork of tmux. tmate and tmux can coexist on the same system, they do not conflict with each other.
Nitrous.io creates a full-featured IDE in your browser. Install libraries, manage dependencies and execute scripts in your project with terminal and full root access. Zero-to-code in seconds with the power of Docker. Create and work on multiple containers, or create custom containers using Docker images with GitHub integration. Code collaboratively in real-time. Get help from a friend or co-worker, and code directly on the same machine in the cloud and take Snapshots to save your work.
- TeamViewer screen-sharing app for Mac/Windows/Linux, allows remote control and you can change color/quality settings to improve latency. Free for personal use.
- atom-pair An Atom Package that allows for epic pair programming. Powered by Pusher and maintained by Jamie Patel
- jsbin Here is a sample link of some random bin I have. If you create an account or login via GitHub you can share and live edit code!