I've briefly covered this story before in my article: 11 Things Every Aspiring Developer Needs To Know, but it was such a huge part of my early growth as a developer that I felt like it warranted telling properly. It's a story talking to the benefits of peer programming, and how when used correctly it can be a huge boost to your learning, especially as a new developer.
I was lucky enough that in my last year at university, a close friend and I both interviewed at the same small company and we were both given a position as junior developers starting at the same time. Even just starting a new job with someone on the same level as you, let alone a close friend, is going to do wonders for your growth. Having someone to bounce concepts off, and go over things you don't understand, as well as doing the same for them is a crucial tool as a new developer. But our position ended up being somewhat unique.
I was the second of the two interviews at 5:30 PM on a Friday, and we started 9:00 AM the next Monday. The thing is, they hadn't originally planned on hiring both of us, which meant when we arrived Monday morning there was only one laptop. So they showed us around the office, where the toilets were, how to work the coffee machine and all the other important parts. Then we sat down at the one desk, with one laptop, and just started work.
We started by looking at the product, getting familiar with the stack and the different technologies, getting used to some of the conventions, and as the days turned into weeks we were still working from one laptop. Seven and a half hours a day, 5 days a week of peer programming, and those 2 months were some of the fastest growth I experienced as a developer.
Now I understand that wasn't purely down to the fact that I was peer programming, I had just started my first professional development position and as a result, had access to all the resources that come with it. All the people with experience, the structure that comes with the project workflow, it all helped, but I firmly believe that peer programming played a huge part in how much I progressed in those two months.
Don't get me wrong, I am not advocating that all new developers should be chained to another new start for seven and a half hours a day, there are definitely diminishing returns, especially when it's always with the same person. I would, however, say that it is a very important part of any new developers' training, so much so that when we were reviewing our new hire policies recently, it was my number one contribution to the discussion.
I understand that not everyone is lucky enough to be starting alongside another developer, especially one they already know and like, but you don't even need to be physically with the person you are peer programming with to get the benefit. A voice call and a screen share are more than enough to get two, or even more, developers to work together and help each other learn.
When looking for a partner, I think the number one consideration should be to make sure you are of a similar skill level, this way you can learn from each other. If you aren't on the same page it becomes more like tutoring, which definitely has its merits, but the give and take of peer programming will benefit both parties.
Secondly, it's obviously useful if you are both working with the same or similar stacks, but the principles are often similar enough between certain technologies that it's not a requirement. If you can find someone of a similar skill level, working with the same technologies who is willing to work with you on a project or two, or even just a couple of sessions, you're onto a winner. Why don't you see if there is anyone interested in the discussion below?