Agile Zone is brought to you in partnership with:

Scott is a Senior Software Architect at Altamira Corporation. He has been developing enterprise and web applications for over 15 years professionally, and has developed applications using Java, Ruby/Rails, Groovy/Grails and Python. His main areas of interest include object-oriented design, system architecture, testing, and frameworks of all types including Spring, Hibernate, Ruby on Rails, Grails, and Django. In addition, Scott enjoys learning new languages to make himself a better and more well-rounded developer a la The Pragmatic Programmers' advice to "learn one language per year." Scott is a DZone MVB and is not an employee of DZone and has posted 43 posts at DZone. You can read more from them at their website. View Full User Profile

Pair Programming and a Grass-Roots Movement

  • submit to reddit
Originally authored by Aaron Wagner

I wanted to take a few minutes to share some thoughts and experiences about pair programming.

I'm going to start from a strange place - Near Infinity's benefits package. I start there because it includes a self-managed training budget. That is, every year, they say "Here's X amount of money for whatever training (within reason) that you'd like to get". Conferences, classes, whatever I think will help to make me a better programmer. I've gotten to learn about Ruby on TDD, Rails, iOS development, Hadoop, and many others. And each of these opportunities has stretched my mind in great ways.

Last year, I started trying something new. I contacted Avdi Grimm, who's a rock star in the ruby community. I contracted with him at an hourly rate to just simply pair with me. We talked about testing practices, we worked through tricky algorithms together, we debated the pros and cons of different object-oriented approaches to problems, and he shared trick after trick with me about how he thinks about software development. I still hear Avdi's voice in my head when I program.

This year, I'm doing the same thing with Sandi Metz. I read her book, Practical Object-Oriented Design in Ruby, and loved her way of thinking. Now, every time we sit down together, we discuss how to sort through the costs and benefits of different abstractions. We talk a lot about dependency management, and whether one piece of code (or test!) knows too much about another piece of code. We refactor, and we discuss. I'm starting to develop an ability to anticipate what she's going to say when I ask her a question.

So now I've got two awesome developers inside my head. When I'm tackling a problem at work, their voices are right there with me, like angels sitting on my shoulders. I'm truly grateful for the time I've spent with them. And that's one thing that pair programming can do - it can help you gain other people's experiences, and apply them to your work.

There are other benefits as well. You're a lot more focused when you're programming. There's much less of a temptation to cut corners, or to interrupt your flow and get distracted by email or twitter, was I saying? Oh, right, pair programming. You also get typo-checking for free. And you get stuck a lot less often. You also share knowledge about the system you're working on. The benefits go on and on.

And now, there's a grass-roots movement for doing more pair-programming in the open source community. None other than Avdi Grimm is coordinating resources on this page, and there's a great feed for twitter discussion and for finding people to pair with. So, now you can get the voices of other developers in your head, share and gain knowledge and experience. So join the movement! You won't regret it!

Published at DZone with permission of Scott Leberknight, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)