The Artima Developer Community
Sponsored Link

Agile Buzz Forum
Dispersed Development

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
James Robertson

Posts: 29924
Nickname: jarober61
Registered: Jun, 2003

David Buck, Smalltalker at large
Dispersed Development Posted: Mar 30, 2004 7:17 AM
Reply to this message Reply

This post originated from an RSS feed registered with Agile Buzz by James Robertson.
Original Post: Dispersed Development
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
Latest Agile Buzz Posts
Latest Agile Buzz Posts by James Robertson
Latest Posts From Cincom Smalltalk Blog - Smalltalk with Rants

Advertisement

This is a case study presented by John daniels and Paul Dyson

What they are going to cover:

  • Multiple teams - each team in one office? Not the topic
  • Satellite Workers - most in one office, some remote workers. Not the topic exactly
  • Dispersed team - Every team member is remote - this is what they are covering

Why do it?

  • Cost (lower)
  • Get people who do not want to travel/relocate
  • Constrained by circumstances - (personal or business)

Case study, source: JD. Two FNL projects covered here. Both were part of a larger project

  • Specialized Workflow engine, 2 people, fixed price, 5 months, server based (EJB), no UI
  • Information management system with 4-6 people - T&M. Lot of interdependence between this part and others. Large EJB/J2EE project, 6 months

Case study - source: PD

  • Integration of web services provision for internet platform. 4-5 people, fixed price, Java web services, no UI
  • 4-5 people, 9 months, Java, multiple interfaces, migrated from office environment. Tried to develop a product from (1)

Working Environment
Needed:

  • Full broadband (beware upload chokes!) - needed cable/DSL
  • Phones plus conf calls
    • Could use VOIP for one to one
  • Powerful machines for team.
    • Beware desktop sharing over net with large displays
    • Install complete platform at each site - so need power at each site
  • Wiki for sharing
  • Version control system that works in this fashion
  • NetMeeting for collaboration
    • VNC or equivalent
  • IM for chat/see who's around
  • Security (physical and cyber) - in practice, ignored many of the customer requirements for physical security)
    • Firewall
    • IPSec encryption (same router at each site)
    • Encrypted email (PGP plugin)
    • if appropriate, encrypt HDs

Issues

  • Tool support for this is currently very weak (very ad-hoc)
  • Supporting multiple/varied desktops is very hard. Everyone ends up being an SA.

Interacting with the customer

  • Initial face to face meeting (ongoing)
  • cannot support regular XP model of an onsite customer
    • More expectation mgmt needed - lack of shared experience in team
    • More formal review periods
    • Need to schedule customer time, as it is not going to happen otherwise
    • Need more doc - without direct interaction, necessary
  • Issues need to be resolved by phone/chat/wiki
  • Customers had no access to the environment (VPN or servers)

FNL Example
  • Customer had already donse some prototyping
  • Customer had done extensive business analysis
  • Jointly produced feature list
  • Had access to their intranet and repository
  • They were happy to use dispersed dev - saved desks/space

e2x

  • Many onsite meetings for clarification
  • 2 - 3 week iterations, delivery after each
  • 1-2 days onsite to assist with integration at each step
  • 1 week onsite to really integrate

This latter project was hard

General approach

  • Evolutionary approach
  • Short iterations
  • Daily "stand up" meetings
  • features vs. tasks - used tools like the Wiki and spreadsheets to manage the difference

One thing learned - used Wiki as a "virtual wall" of cards for the project. Very difficult to enforce without discipline. Worked well, but the team needed to think about it. The actual development process was not a lot different from normal - other than the need for on site delivery and integration - in a full on site job, would have been more natural.

Designing the System
Needed to do early architecture/design work in up front face to face meetings. Worked better face to face, later on used shared desktop with virtual whiteboards. Did this in UML, used Rose (somewhat). The process was API driven (from the EJBs). Design doc was produced after the fact, not during or up front. Revisiting the design decisions were more important than in a "normal" XP process, as there is less lunch/coffee (etc) side conversations. Needed to make up for that lack. Ran up against poor tool support for dispersed diagramming.

Team Organization
mixed pairing with "buddying" - work alone, but check in with buddy on a regular basis. When pairing this way, agree on how work was to be done and split it up. Work as a pair until complexity was understood, then just go off and do it. One common split - tests vs. implementation. Most tasks were paired, there was the odd singleton task on the e2x project. In response to a question, code review and code quality takes extra work.

Programming Technology

  • Eclipse
( CVS
  • Eclipse and Tortoise clients
    • Server running on spare PC (Server hosting)
    • e2x later switched to the tool they were building (Cyclex)
  • Pair programming with NetMeeting
    • Slight delay over wire if you are not the driver (mostly ok)
    • re-synch to version control to switch driver
    • Mostly worked w/o problems!
  • Varying degrees of continuous integration as a result (IMHO, not a lot different from normal process issues)

  • Process for programming tasks
    • Sketch the ifc
    • Code the tests
    • Run new tests
    • Code the implementation
    • Run new tests
    • Iterate until pass
    • Run all tests until integrated
    • Check in
  • test focused rather than simply test driven
  • Updated user abd design doc before each software release

Project 2 FNL

  • Used customer repository
    • No Eclipse integration
    • Couldn't use NetMeeting while connected to their repository - made pairing very tedious
  • Pairing over NetMeeting via ADSL
    • Once VPN worked, easy
    • audio and desktop sharing worked well over VPN

Project e2x

  • Who's got the monkey?
    • Used an actual "monkey" toy in the office, what to do remotely?
    • Use IM (did not work as well)
  • Lack of "overheard" conversations
    • Interruptions are worse than when co-located (other phones, door, etc)
  • Latency makes swap over a problem
    • Poor support in CVS
    • Supported in Cyclex

What about Testing?

  • General
    • Focus on functional tests - are unit tests still important? They think less so
    • Used JUnit
    • Automated one click testing critical
  • FNL
    • When paiting, both developers had to get all tests to pass on their machines before it was agreed to be done - the "it works on my machine" problem

General Advice

  • Shared understanding of the tasks is crucial
  • e2x: Does work with people you don't know. Works better with people you do know
  • FNL: Only employed people that they knew already
    • Minimized start up time
    • Minimized cultural/personal diffs
  • Face to face - especially with customer - is still crucial!
  • Important to establish working etiquette as you go along
  • Allow time for setting up the infrastructure (VPNs, databases, etc)
  • Test focused
  • Maximum team size limit? They have done 5-6

Discussion session

  • One thing that comes up is that all interaction has to be more considered - and somewhat more formal - than in an office environment. John Daniels: This form of pairing is actually more productive (admittdely, anecdotal).
  • There are times and tasks where people work more efficiently alone. Remote development with buddying allows for that

Read: Dispersed Development

Topic: Heinlein On Altruism Previous Topic   Next Topic Topic: Charles' Rules for Online Argument

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use