Abhishek Agrawal ShriKant Vashishtha Mar 19, 2009 Effective Agile Software Development with Collaborative Programming
Agenda
What is Collaborative Programming?
A day in solo programming
A day in pair programming
Economics of collaborative programming
Cultural and psychological challenges
How to do it?
When not to do it?
Distributed pair programming
Need
What it takes
Tools
Demo
When to do it and when not
Questions
Collaborative programming
Involves two programmers side-by-side on the design, coding and testing of a piece of software.
The concept of driver and navigator
Constant active review, knowledge sharing and design discussions
Pair programming transforms what has traditionally been a solitary activity into a cooperative effort.
A day of a solo programmer
A day in solo programming
Too many distractions (email, messenger, extended phone calls, internet, personal work etc.)
Syntactical errors causing at least 10% loss in productivity
Some errors which eat up more than 8 hours sometimes.
Code goes for peer review cycles (passive reviews)
No knowledge sharing of the code.
A day in collaborative programming
A day in collaborative programming
A day in collaborative programming
Minimal distractions as pairing requires respect for each other.
Navigator catches the syntactical errors even before you compile the code.
You find an ACTIVE reviewer.
Knowledge sharing in its true form.
Economics of pair programming
Why should I invest for two programmers for the same task???
For any two programmers, no matter how good he or she is, if we get them to sit together, the value of their work will be greater than if they sit apart.
Value = more than typing
AllProgrammingTasksAreEasyOnceYouveSolvedThem
Cultural and psychological challenges
Some people prefer working alone
Move from Waterfall to Agile world (no heroics anymore)
Egos and personality conflicts
Intimidation by expert
How to do it?
Agree on one tiny goal at a time
Rely on your partner, support your partner.
Talk a lot
Switch roles often
Write unit test first
Pay attention – don’t check your email, digg etc
The person who knows less about the system or language should do most of the driving, to ensure that the novice stays engaged. You learn more through your fingers than through your eyes.
Ping-pong pairing
When not to do it?
When reading about a library that might help later on
Spiking a complex solution or debugging a tricky error with someone that has an experience gap.
The number of tasks that require pairing is a lot higher than the number of tasks that don't.
Distributed pair programming
The Need
Nothing is as effective as collocated team and pair programming. However when teams ARE distributed, we attempt to reach the same level of productivity as for collocated teams - Welcome to the world of Distributed Pair Programming.
Trivia
Department of Computer Science, North Carolina State University conducted an experiment to compare the different working arrangements of student teams developing object-oriented software. The results of the experiment indicate that it is feasible to develop software using distributed pair programming, and that the resulting software is comparable to software developed in collocated teams.
The University's technique is based on the emerging software engineering methodology – “pair-programming” combined with nearly 20 years of widespread and active research in collaborative software systems.
Distributed pair programming
What it takes?
Lots and lots and lots of communication.
Hardware Challenges
Software Challenges
Network Challenges, pair switching
Cultural Challenges
Time Differences
Distributed pair programming
Tools
Microsoft Office Communicator (OCS)
Skype Mikogo
Cola Eclipse plugin
Adobe Acrobat Connect
NetMeeting
VNC
XPairtise - A Distributed Pair Programming Plug-in For Eclipse
Sangam – A Distributed Pair Programming Plug-in for Eclipse - Department of Computer Science, North Carolina State University
PCAnywhere
SelfLanguage
SqueakSmalltalk - has a shared desktop component named Nebraska
RemoteAdmin from Famatech -- far faster than VNC and far cheaper than PCAnywhere
SpeakFreely - win32/linux voice chat
Messengers
Baseline : Follow KISS principles - high quality cam, mic, headphones
Distributed pair programming
Tools
Experiments by some universities –
( Carolina State University, University of California et al )
Virtual WorkSpace was intended as an environment to enable distributed collaboration over a network. It depends heavily on computer-generated graphics and virtual reality devices as well.
ClearBoard was similarly a non-co-located collaboration support system that allowed two users to appear to sit face to face, and see the shared work between them
The members of a pair viewed a common PC display using desktop sharing software; They trailed Microsoft NetMeeting, Symantec’s PCAnywhere, and VNC. They used headsets and microphones to speak to each other, and text chat for communications as well. They used several instant messaging programs (Yahoo Messenger, PalTalk, AOL Messenger) before implementing the project. The final experiment was run with NetMeeting , as this program provided PC sharing, text, audio, and video in one platform.
Distributed pair programming
Time for some action…
COLA Eclipse Plugin Demo
Distributed pair programming
Opportunities for Distributed Pair Programming
New extension of team
KT phases
Domain expert on either side
User story specific need
Collective Code Ownership & knowledge sharing
When can it be an overkill?
Mixing Remote and local pairing, long tasks
When collocated pairing can be done, avoid distributed pair programming.
0 comments
Post a comment