In edit, and commit code. There are a few

In Chapter 5 of the book Software Development Rhythms, Kim Man Lui describes a situation
where a paper product manufacturing company that employed around-average workers
performed at a level which was more productive and industrious than a company
that was staffed “optimally.” Lui attributes this to the fact that the employees
worked harder and smarter by working together to solve problems and complete
tasks.  In the software development and
computer programming world, this concept is called pair programming.  Lui defines
pair programming as “two programmers sitting side by side to collaborate on a
unitary job that includes the design, coding, and testing of a piece of
software.” (Lui, 132).  The task seems
like a challenge, as it takes uninterrupted focus, attentive listening, and
excellent communication skills to pull this type of collaboration off.  To make matters more challenging, programmers
in today’s agile world are typically co-located, either in different offices,
different states, or even different time zones, the hallmark of distributed
software development.

The article “Can Distributed Software
Development Be Agile?” lays out a solid framework for how pair programming can
be performed in a distributed software environment.  They begin by outlining the main issues that
stem from a distributed development environment and an agile process: difficulty
with face-to-face interactions, the ability for requirements to change rapidly,
informal agile processes and procedures, and a lack of cohesion from team
members.  They suggest combating these
issues and achieving distribution and agility by continuously adjusting the
process, facilitating knowledge sharing, improving communication, and building
trust between the team members. (Ramesh, 42-44).  These methods can be used to improve
interactions from large co-located agile teams all the way down to co-located
pair programmers.

We Will Write a Custom Essay Specifically
For You For Only $13.90/page!

order now

There are many tools which facilitate pair
programming in a distributed software development environment and enable two
programmers to work together on the same code. 
A tool that I use frequently and successfully in my current position as
an application developer is Cisco Webex. 
Webex is a desktop application that enables video and web conferencing
and is loaded with features that would enable pair programming to function
successfully.  Personally, I have used
Webex in a pair programming environment and its features to screen-share, speak
directly to my co-worker, and interact directly with his development
environment to write, edit, and commit code. 
There are a few challenges with this application (and others of the
sort) and cooperatively working.  Because
the conversations are not face to face, they sometimes result in speech
overlapping and a disturbance in the flow of ideas.  Brainstorming and non-coding related collaboration
are more difficult when using a virtual meeting rather than an in-person
setting.  Also, determining who drives
the call is often difficult at first, since the two employees may have
conflicting styles or ideas of how code should be written.  Often the programmer with the control of the
coding may win out.

According to Lui, these issues, while posing a
problem, can be ironed out by implementing several principles: asking open-ended
questions instead of yes-no types, resolving conflicts by postponing decisions
or asking for help from others, ensuring requirements are fully understood, prioritizing
time-critical tasks and breaking them into chunks, and working on problems
together, instead of individually working out solutions to them. (Lui,
161).  Pair programming takes a lot of effort
and experimentation but has proven to increase quality, release time, and efficiency
of software.