Effective Collaborative Programming3

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Notes on slide 1

    The two programmers are still doing two programmers' worth of work, they're just doing it together rather than individually. There's an implicit assumption there that all bugs take the same amount of time to fix. In my experience, this is very much false. When I program without unit tests or a "smart" (syntax-checking) editor, the distribution usually looks like this: 4 hours to write the code. About 6-12 bugs that can be fixed in under 10 minutes. Syntax errors, type mismatches, nulls, and general brain farts. About 2 bugs that take an hour each 1 bug that takes 8-10 hours. which is that

    Pair programming transforms what has traditionally been a solitary activity into a cooperative effort. Remote pair programming , also known as virtual pair programming or distributed pair programming, is the practice of pair programming where the two programmers comprising the pair are in different locations, working via a collaborative real-time editor, shared desktop, or a remote pair programming IDE plugin.

    Productivity and quality with distributed teams.

    A primary consideration in virtual teaming is that of communication. Poor communication can cause problems like inadequate project visibility, wherein everyone does his/her individual work, but no one knows if the pieces can be integrated into a complete solution. Coordination among the team members could also be a problem. Finally, the technology used must be robust enough to support distributed development of software, not just to provide communications.

    New extension of team (although we very strongly recommend collocation in initial phases)‏

    The two programmers are still doing two programmers' worth of work, they're just doing it together rather than individually. There's an implicit assumption there that all bugs take the same amount of time to fix. In my experience, this is very much false. When I program without unit tests or a "smart" (syntax-checking) editor, the distribution usually looks like this: 4 hours to write the code. About 6-12 bugs that can be fixed in under 10 minutes. Syntax errors, type mismatches, nulls, and general brain farts. About 2 bugs that take an hour each 1 bug that takes 8-10 hours. which is that

    Favorites, Groups & Events

    Effective Collaborative Programming3 - Presentation Transcript

    1. Agile NCR 2009 July 18, 2009 Effective Agile Software Development with Collaborative Programming
    2. 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
    3. 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 an interactive & cooperative effort.
    4. A day of a solo programmer
    5. Challenges of solo programming
      • Focus Factor
      • Syntactical errors causing at least 10% loss in productivity
      • Passive reviews
      • No knowledge sharing
    6. A day in collaborative programming
    7. A day in collaborative programming
    8. 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.
      • Design quality
    9. 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.
    10. 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
    11. 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
    12. 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.
    13. 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.
      Distributed pair programming
    14. Questions

    + Xebia IT ArchitectsXebia IT Architects, 4 months ago

    custom

    366 views, 0 favs, 0 embeds more stats

    This was presented by Amit Sharma and Abhishek Agra more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 366
      • 366 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 9
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories