Collaboration Tools& Techniques for Distributed Teams using RUP Abstract The article gives a brief insight into the different techniques and tools which can be used by project teams (including clients) which are located at different geographical locations to improve collaboration. It demonstrates how the teams can use effective tools and techniques for collaborating. The article also talks in detail about team dynamics and how the team s bond together as a unit in spite of being physically distant. It demonstrates how a flat organization structure can be more effective than a hierarchical structure. Introduction Development of software is a human process. People, and not hardware, develop software. The process that guides or controls the way software is produced should be designed to take care of the human aspect of software development. Traditionally, the process we have been using to produce software (more popular as waterfall model) is based on machine-based assembly line product manufacturing processes. In the world of fast-changing markets where customers value return-of-investment (ROI) and time-to- market as the most important parameters in a software process, RUP and iterative methodologies help reduce time-to-market as well as help customers gain more ROI. But the success of RUP and distributed teams significantly depends on how well the teams collaborate.
When it comes to distributed / Off-shore/ Off-site teams, companies perceive that they are compromising or risking some aspects of software development process in return of reducing the cost of producing software. Iterative methods help building trust and confidence with the customer as they are considered part of the team. In addition, the risk of reducing quality of software produced in distributed team environments is mitigated by some of the iterative and RUP methods like unit testing, pair programming, continuous integration, evolutionary light-weight design, etc. In the different sections of the article, we will explore how RUP works well in distributed team model by taking care of not-only the human aspects of building software but also the quality, consistency and faster turnaround time from requirements to demo of the working software. Setting the Stage As we know, a project is always divided into multiple teams based on functions each one will perform business analysts, software engineers, test engineers and UI designers. The business analysts would write use cases to convert business requirements into functional requirements in the form of features. These use cases will form the basis for the black-box acceptance test cases written by the testers and the technical models / responsibility specifications written by the technical team. The technical models and responsibility specifications will form the white-box design for code. Also, the UI design team / business analysts will build the screens based on these functional inputs and adherence to the system use cases. The distributed team might also consist of business analysts, developers and testers. There could be customer development team and testing team in the base unit. For the purposes of this article let s assume the project is utilizing the Rational Unified Process (RUP) development practices and phases (Inception, Elaboration, Construction and Transition). Each phase had multiple iterations of 4-6 weeks each. Functionality will be added to the product incrementally and a demo was exhibited to the customer at the end of every iteration. Collaboration Tools Project Portal Project Portals are located in the intranet and is local only to the teams; it is secure and forms an effective tool for communication of different aspects of the project. We can use portals as a central repository of artifacts namely daily progress status, burn-down charts, transcripts of team member chats, calendar of events, links to use cases and personal time-offs etc. Also, it can be used to post lessons, retrospectives and other knowledge gained during the iteration execution. It can also be used as a team blog as well as personal blog for the project team members. Web conferencing Web conferencing is a real-time, interactive collaboration tool used for multiple purposes like voice, video conferencing, document sharing, application sharing, etc.
Web conferencing for white-boarding We can use web conferencing extensively for virtual white-boarding to understand and chalk out designs. These designs can be stored as images and printed out to be used as information radiators on the real team white-boards. These could be restored on subsequent web conferences for knowledge transfer, review or refactoring of design. Web conferencing for code sharing Another use of web conferencing can be for code repository walkthroughs. Here the teams could keep notes about a certain piece of code and share it. The IDE can be opened in desktop sharing mode for either live debugging or manual code walkthroughs. Web conferencing for kick-off meetings The RUP project normally starts with a kick-off meeting that had cross-functional participation business analysts, developers, testers, UI designers. We use this kick-off to prioritize the features in the project backlog. In distributed teams, these web kick-off meetings were very vital. These could be recorded and played back again for reference eliminating for the need of the continual physical presence of a business analyst, or a UI designer. The web conference usage and recording the web conferences eliminates the limitation of depending on the physical presence of some of the functional experts for development purpose. Status meetings via web-conferencing Status Meetings provide a co-ordination mechanism for everyone on the project and a platform for each team member to make commitments in front of the team. These meetings could be recorded and played again if the team member slipped on the task he committed. This benefited into self-organization rather than the project manager organizing the tasks for features. Video / Web Conferencing for Team member induction A new team member can be introduced to the team through the web conference. Having him face-toface with the whole team was a great experience for the new member rather than knowing every member just by his/her email id. The new member can be provided all the project information by means of recorded meetings where the different aspects of the project were recorded via the web conferencing tool. Here, the tool can be used as an e-learning tool. Emails Emails are very effective collaboration mediums for distributed teams to discuss and keep the teams informed on various project risks and issues. Emails can we used to record, review and audit discussions
and decisions. Emails etiquette is important to get the best out of this collaboration medium. We will discuss that in a different article. Instant Messengers IMs must be used for one-to-one communication between team members. This could beused if developers had to communicate about some coding aspects or design aspects or any other clarifications during the overlapping time zones. Continuous integration and automated testing tools Code should be checked in to a common repository. There should be no separate repositories for the distributed teams. Automated integration and testing tools will help team members in reducing skepticism about check-ins and any fear of breaking others code. This will increase the sense of collective ownership rather than pointing fingers for code breaks. The golden rule of thumb could be not to leave the office premises until the last code that was checked did not break the build. If the build was left broken by either team, it will be difficult and counterproductive for the other team to fix the build before starting work. The continuous integration (CI) tool and automated testing must be used for better efficiency. Collaboration Technique Effectiveness Flat project team structure The composition of the team can be based on a flat organization structure. There should be no designations like project leader, project manager, architect, senior developer, etc. Everyone would be a consultant and the roles should be swapped amongst the team members. The different roles that could be played are design, code, test, architect, project management, mentor or coach. No single person would be designated for the same role. The role should change on a regular basis. This will give the team a feeling of group ownership and role swapping improved the different skills of a team member. Coffee/Ice cream meetings Coffee or ice cream meetings would be celebration time. On completion of a feature/iteration/phase, the team could go to a coffee outlet or an ice cream parlor to celebrate the iteration release. Here the team not only can have fun but also can provide retrospective of the various events or practices followed during the execution of the feature. This team building exercise can help the team build a good rapport amongst each other and the team dynamics might improve a lot. Chocolates for breaking a build Every time the continuous integration tool showed a build break, the team member who was responsible should come to the center of the development room and put a chocolate into the build
bag as a penalty for breaking the build. This was intended to build in a sense of caution while code check-ins. After the eventual fix, he would be appreciated by a series of claps. Rotation of responsibilities The team members should rotate the roles amongst all team members to make the experience interesting and also provide a learning opportunity to new team members. Cross-location visits The team members should be rotated across the locations on a frequent basis to work within both the teams. This will help the two distant teams gel together more strongly. There should be more one-toone peer relation through these cross-location visits. Conclusion Iterative/RUP development was originally considered to work more effectively in a co-located atmosphere. With the world moving towards distributed development locations, Iterative/RUP can work well with distributed team environment as well but the key for the success his to manage and enhance collaboration. RUP has definitely proved to be a boon for empowerment of analysts, testers, developers, customers and management alike. Teams feel pride and ownership to work in an environment that is selforganizing, co-existing in a peer-to-peer interaction. Management feels charged with expectations of higher ROI i.e. faster and better development. The customer feels happy to remain in the loop, to be heard what he wants and is able to see progressively his product shaping to his expectations. About the Author: Mr. Vijay Krishnan is a senior member of Across Borders management team. Mr. Krishnan is responsible for vision and operation of the company. Mr. Krishnan provides strategic consulting on Smartsourcing and organizational process/project management changes to clients worldwide. Mr. Krishnan holds a Bachelors Degree in Engineering from Bharathidasan University, Masters Degree in Computer Science from Saint Joseph's University, Philadelphia and MBA from University of Massachusetts, Amherst, MA. Website: www.abmcg.com