17th
JUN

Infrastructure Perspective for Distributed Software Development

Posted by jvohra under Offshore Software Product Development

How do you build stellar teams for distributed software development? The Infrastructure perspective

Many organizations have a tendency of just picking up a project and jumping into distributed development, without adequately considering the fundamental framework, building blocks, and logistics, and more importantly the change in mindset needed for this shift in development process. All these need careful planning and organizing. Without enabling technologies for communication or collaboration, frameworks for project tracking, visibility, or transitions, and an appropriate engineering infrastructure, the very objective of having seamless cross-location operations will be defeated.

The greatest challenge of distributed development is ensuring that high-quality, flexible code is delivered promptly and predictably—regardless of obstacles such as communication barriers, different development environments, and distributed team structure potentially in different time zones. These challenges can be made easier by enabling the three critical components of infrastructure required for successful distributed development or the 3 C’s:

  • Communication
  • Computing
  • Collaboration

These components need to be built out to ensure that distributed teams can work as one team throughout the lifecycle of a project, regardless of their location. Also, putting these in place is a job in itself, and should be built into the initial planning stage of any dispersed project.

The first is Communication: While electronic communication is a poor substitute for face-to-face meetings, a good communication infrastructure ensures continuous, unlimited, and bidirectional communication. Telephone, video, email and chat tools contribute to a mix of formal/informal communication channels. For instance, at Silicus we use a mix of communication channels, including Voice-over IP, videoconferencing and virtual meetings or net meetings. Also, we’ve found that using tools such as Skype, with photographs of individual team-members on their profile can reinforce the one-team concept by reducing the anonymity and sense of distance that plagues geographically dispersed teams. While it doesn’t replace the “Hey Joe” environment of a centrally located team, it goes a long way in fostering an informal channel of communication between developers across geographies. Also, it functions as an important supplement to the formal Manager to Manger communication between locations, and prevents disconnects between the teams at various levels because it facilitates transfer of information.

The second factor that can make or break a distributed engineering initiative is uniformity in computing infrastructure. Multiplicity in terms of operating environments, tools, and a fragmented network can lead to compatibility issues, difficulties in managing code bases, and can lead to transitioning problems. Managing infrastructure itself can become a focal activity in such cases, overshadowing the main motive of distributed development. To ensure that work across the geographies is aligned, it is important to also align the tools and computing environment that are used to produce this work. For instance, good practice is to ensure that every location is using the same set of tools and versions. VMware infrastructure can play an important role in compressing software development cycles. It allows the creation of a centralized pool of IT assets (e.g. virtualized servers, storage and networking equipment) and, using LabManager, enables teams to rapidly setup and tear down complex, multi-machine configurations for use in testing and development. Also, configurations can be moved seamlessly to and from remote location.  This results in lowers communications costs, and enhances the efficiency and productivity of distributed teams by allowing defects to be detected early and fixed early in the development lifecycle.

The third critical component is collaboration infrastructure. In highly distributed development teams, the ability to collaborate with people across space and time is very compelling. For example at Silicus, we establish point to point VPNs as the foundation for collaboration across locations. It’s important to keep in mind that distributed development requires a variety of additional activities as compared to single-site projects: these relate to the division of tasks, sharing of artifacts, coordination of handoffs, and integration of components. So, you have to invest in creating collaborative capabilities, and developing a technology platform to improve the coordination of work. You can use proprietary tools to develop this platform, or use FOSS - Free and Open Source Software. Some FOSS tools we have found to be very useful are FocalPoint for release and iteration planning; CVS/Subversion for Source Code Control, Eclipse as an Integrated Development Environment, Ant/Cruise Control for Build automation; Bugzilla for defect and enhancement request tracking; Testopia for Test plan Management; Emma for code coverage analysis; TestNG as a unit testing framework and for UI Test automation; JMeter for load testing; and Twiki, KnowledgeTree for knowledge and document management.

The goal is to promote a long-term view of the development assets needed for effective collaboration, and to leverage this collaboration infrastructure across multiple projects over time. It is recognition of the fact that the same forces that have fostered the use of distributed teams are also yielding new ways to keep team members in touch and involved with team activities, and also allow them to maintain a sense of importance and ownership in the work being performed. By utilizing available tools and keeping alive the spirit of teamwork, distributed development teams can be as successful as the centrally located teams of the past.

About the Author

The author is a principal at Silicus Technologies (An Offshore Software Development Company) and has managed large distributed software development engagements.

 

Reader's Comments

  1. Softcoders |

    Can you name some more collaborative tools in the market ?????

    Some companies whom i work with also have problems w.r.t collaboration !!

    It was Interesting !

Leave a Reply