NEWSLETTERS
 

CIO.com updates, insights and advice on technology, management and your career.

 CIO BlackBerry News and Tips
 CIO Research and Analysis
 CIO Microsoft
 CIO Insider
 
 
 
SUBSCRIBE TO CIO
 
Are you involved in setting the direction for your company's IT budget or strategy?

Apply today for a FREE subscription to CIO Magazine!

 


Tue, Aug 25, 2009 0:56 EDT

Agile Software Development Depends on Pair Programming

The result of developers working solo is an accumulation of technical debt

Topic: Development

Blog: Doing Business in Real Time

Current Rating: 5 Comments: 5

One of the core practices of agile development is pair programming. That means two programmers work together on the same body of code. As they work they are constantly discussing the design of the programs and the algorithms used, and they are constantly checking each other’s work to see that it meets coding standards and to see that thorough unit and function testing is done on the code they produce.

Question: Is pair programming really just paying twice for the same code? In a time like now when we are all under pressure to reduce cost by outsourcing programming work to low cost providers why are people in the agile development world talking about something like pair programming? Is the quality of the code produced by pair programming really worth the extra cost?

The Agile 2009 conference is happening this week in Chicago and I’m attending the conference to find out about the current state of agile development and get answers to questions like why is pair programming considered so essential to agile development. This afternoon I talked with Josh Kerievsky who uses pair programming on development projects in his company and who swears by it. His company is also in the business of coaching and training their customers in how to do effective agile development using pair programming and the other core agile practices. Josh’s company is Industrial Logic.

“As a business owner I can’t afford to have people working solo,” said Josh. “Pair programming is about removing bugs in the code and reducing the risk of bad program design. I don’t insist on pair programming because it is the agile thing to do, I insist on it because it delivers the best value for the money I spend.”

Myth of the Hero Programmer Revisited

I asked him what he thinks about the legend of the hero programmer working on his own, tapping away on his keyboard into the wee hours of the night and producing thousands of lines of code that makes computers do amazing and wondrous things. He began his response by observing that what the so-called hero programmer actually produces is thousands of lines of code that nobody else understands and nobody can maintain or enhance.

Josh went on to say that the solo programmer usually also violates other agile practices such as adhering to coding standards, doing good unit and function testing, and creating simple program designs. Often the reason for this is that solo programmers cannot take criticism from other developers because their code becomes so personal and any criticism of it feels like a personal attack. But when developers do pair programming, they are much more open to review and criticism of their code because they think of their code as a joint production and therefore they don’t feel personally attacked when their peers review and criticize their work.

I asked him about the best ways for programmers to pair up. I wondered if he ever saw differences between pairs that were man-man or man-woman or woman-woman. He said he leaves it to his developers to pair up and select who they want to work with. He said he doesn’t see any difference between pairs that are man-man or man-woman or woman-woman. His developers know each other and they know who they work well with. His only requirement is that he doesn’t want two programmers working together if they are both inexperienced in the technology being used; at least one of the pair needs to be knowledgeable in the technology. Other than that, the only time he sees problems within a programming


You do not have flash or javascript support.
Average (1 vote)
5
 
 
Tue, Aug 25, 2009 7:54 EDT
Anonymous user
Posted by: Ripple
Rating:

This chapter takes you through the process of refactoring a function that generates prime numbers, which I personally didn't care for too much. Maybe when I read it over again at some point I will think differently.Thank you..
Ripple @ remedies for tinnitus

 
Tue, Aug 25, 2009 19:52 EDT
Posted by: jlipton
Rating: 10

We embrace agile concepts and processes but have never been able to fully adopt the paired programming component.
I know we're not alone and it's generally acknowledged that this is one of the hardest parts of the methodology to accept.
Some of our reasoning goes like this:

  • Paired programming can make some programmers lazy and it's highly dependent on the styles and personalities of the two people. I'm a morning person, Kevin sometimes works from home...
  • Open source development can be viewed as paired programming taken to the next level. If many developers become responsible for a codebase you should be able to do even better than using pairs.
  • The size of the development team matters. Unit tests are the key to agile development success. We prefer to have one developer writing test cases and harnesses with another coding.

Justin Lipton

Exari Systems
Boston | London | Melbourne | Munich
Test drive our software online - demo
Read our document assembly blog - blog.exari.com

 
Wed, Aug 26, 2009 8:15 EDT
Anonymous user
Posted by: Alan S Koch
Rating: 90

While I agree that most Agile teams could benefit from pair programming, it is clearly *not* a core concept.

1) Check out the Agile Manifesto & 12 principles -- pairing is not there.

2) Talk to successful Agile teams. The majority do not pair at all, and those who do don't do it 100% of the time.

Pairing is a core concept of Extreme Programming (XP), *one* of many Agile approaches. And it has great benefits. So I recommend that everyone try to include pairing in their Agile practices.

But if you can't make the case, or if your not being successful with pairing, don't fret! it doesn't make you not-Agile!

 
Wed, Aug 26, 2009 10:14 EDT
Anonymous user
Posted by: Rob Bowley
Rating: 90

Firstly great article I'm a real PP advocate too and the more people justyfying it the better.

However:

(Note: the six core practices for agile software development are: pair programming; coding standards; unit and function testing; refactoring; simple design; and the 40-hour week)

Who says? There are no core practices for agile software development. There are only principles.

 
Wed, Sep 2, 2009 12:44 EDT
Anonymous user
Posted by: EugeneNizker
Rating: 90

“Pair programming is a core agile practice”; “Pair programming is not a core agile practice” – who cares, really?! The important thing is, does it make sense or not?

My teams practice it for years, and we do see a difference. We don’t pair program to the extent some other teams do (at Menlo Innovations, for example, 100 percent of tasks are pair programmed). For example, we didn’t insist on pair programming when a task is simple and straightforward or other way around when one needs a quiet time to think something through (although this case is arguable). However, majority of tasks were done in paired mode, and again, the difference was huge.

One more comment. I am sorry, Justin, but to say that “Paired programming can make some programmers lazy” is to call black white. Nothing can be further from reality. Try to pair program and you will see how draining this experience is, how much more discipline it requires and how your brains are working at full speed. I doubt you’ll be able to walk straight after 8 hours! But! You will notice that the quality of code is completely different and, exactly as Josh Kerievsky suggests, the company saves on testing and code maintenance.

Unfortunately, your other two suggestions are equally not very valid.

Truly,
Eugene Nizker
Evident Point Software.

Post new comment

* Subject:
* Username:
* E-mail:
The content of this field is kept private and will not be shown publicly.
Homepage:
* Body:
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <blockquote> <strike> <p> <br>
  • Lines and paragraphs break automatically.
More information about formatting options

* Denotes required field.

About this Blog

The global economy has a life of its own, it lives in real-time, and we are all part of it. Hello brave new world.

Hot Conversations

Ex-Microsofties Look Back in Anger

Posted by Shane ONeill in News | 3 comments

The Price of IT Outsourcing

Posted by Beth Bacheldor in Best Practices | 2 comments

Start a Conversation
Click to post

Got something to say? We want to hear it! Click the Post button to get started. GO»

EXPERT ADVICE
See our roster of experts.

Advice & Opinion from more than 115 of IT's most insightful thinkers.

  PARTNERS       WEBCASTS    
 

Windows 7 Webcast Series

There's a lot of buzz about Windows 7 out there. Each month in our webcast series, listen to analysts and customers discuss how Windows 7 and the Windows Optimized Desktop is impacting large companies around the world. Learn how they evaluated Windows 7, including the cost of deployment, deployment strategies, and tangible benefits.

Sponsored by Microsoft  Listen to on-demand Recordings »

 

A Framework for Better Application Delivery

The complexity of application delivery is driven in part by the evolving applications environment. Instead of approaching application delivery from a siloed fashion, this handbook looks at end-to-end guidance and discusses the impact of ignoring the WAN, Web apps that are chatty, data center consolidation, SaaS, Web 2.0 and virtualization.

Sponsored by Riverbed  Read this White Paper »

 

Microsoft® Exchange 2010 includes archiving - but is it enough?

Microsoft® Exchange 2010 includes basic email archiving. But many organizations will find that it does not meet their requirements. This paper describes why organizations need to archive, what capabilities Exchange 2010 includes and why 3rd party archiving solutions will be necessary for most organizations.

Sponsored by Google, Inc.   Read this White Paper »

Resource Alerts

Get instant email notifications by topic when white papers, webcasts, and case studies are added to our library.

Resource Alerts

Get instant email notification when white papers, webcasts, and case studies are added to our library. Don't just be up-to-date—be up to the minute with our new Resource Alerts.

Enterprise Capture: Your Onramp to Business Process Automation

Today more than ever companies are seeking to reduce costs and...  View Now »

 

The True Cost of Legacy Systems

How well are you maximizing existing software assets? This webcast reveals the results of a commissioned study on top migration and modernization priorities for IT leaders.   View Now »

 

How To Maximize Your Virtualization Strategy and Deployment

Join award-winning technology journalist Stan Gibson in this webcast as he discusses how to enhance your virtualization strategy with the ROI, planning, implementation and platform advice. Exploit the business benefits of virtualization and successfully expand your current deployment.   View Now »

Resource Alerts

Get instant email notification when white papers, webcasts, and case studies are added to our library. Don't just be up-to-date—be up to the minute with our new Resource Alerts.

 
NEWSLETTER

Sign-up for the Blogs & Discussion Newsletter




*Required fields

By clicking the sign-up button, you agree to the Privacy Policy.

View all newsletters »

 
FEATURED SPONSORS
 
 
 
SPONSORED LINKS
 

Manage limitless content todayread EMCs 15-minute guide to ECM.

HP Exstream. Get a Free Document Assessment for Financial Services.

Take the Netezza TwinFin TestDrive!

Webinar: Jump-start your in-house e-discovery with Ringtail QuickCull from FTI Technology

Let Progress Software help your business make progress.

Best Practices to Reduce IT Operational Costs

Real-world testing ranks Trend Micro #1 against malware. See results.

Forrester: The real-world financial impact of Windows 7

Turn your desk phone and mobile phone into one with Sprint Mobile Integration.

Maximizing efficiencies with unified communications.

Stay informed with custom newsletters from Tech Dispenser

Selecting the Right Reporting Technology

An IT Leadership Action Plan for the Economic Recovery

Consolidate data centers and lower IT service costs. Learn How.

WAN optimization techniques significantly improve application performance. Read More.

The Revolution and Evolution of Private Cloud Computing

ROI of Application Delivery Controllers

Cut Costs & Green Your IT Operations with PC Power Management

Enterprise Capture: Your Onramp to Business Process Automation

Adobe® LiveCycle®solutions for intuitive user experience

Unlocking the Mainframe: Modernizing Legacy System to SOA

State of the Data Integration Market

Enhance Customer Loyalty through Higher Responsiveness

Achieving Business Agility with Application Grid

Seven Ways ITIL Can Help You in an Economic Downturn

Does your IDS really work? Find out with a free Endace Audit

Verint Systems. Discover the Power of Intelligence in Action"

CA ARCserve r12.5 is More Than Backup! Download Trial Version Today

Enterprise search helps employees get more done. Get the facts from Google.

See why ShoreTel is named best overall VoIP provider by Nemertes Research

Trend Micro ranked #1 against real-world malware. Read more.

AT&T Application Management & Hosting. Let us help you STRETCH

Microsofts new client operating system helped Pella reduce power consumption.

Efficiency goes up. Costs come down.

Dark Fiber from Sunesys Save on Unlimited Bandwidth with Fixed Costs.

Trend Micro ranked #1 against real-world malware. Read more.

Webcast: Solve Your Data Visualization Needs with Open Source BI

Webcast: Delivering the Enterprise-Ready Cloud

Ensure cost effective application delivery. Learn More.

Cloud Computing: The Impact CIOs See

What's Next for Enterprise Resource Planning?

Gartner Magic Quadrant, Application Delivery Controllers 2009

Global Research: CIOs Weigh In On Virtualization

Adobe® LiveCycle® solutions for business process automation

What's New in SOA Suite 11g?

Unleash the Power of Java with Oracle JRockit Real Time

SOA Best Practices and Design Patterns

Application Grid: Ideal Platform for IT Consolidation

Taking the Service Desk to the Next Level