Collaboration has always been an essential part of the fabric of the Internet. E-mail, instant messaging, chat rooms, discussion groups and wikis are common collaborative elements that have matured over time. The rise of the Web as a natural extension of an individual's physical and daily world, the economic pull of outsourcing, the integration of third-party software, the use of home and remote offices, and the growth of strategic partnerships among organizations all contribute to the increasing distribution of teams and the need for better collaboration.
Collaborative development environments will be the next "killer app" in software development. We define a collaborative development environment as a virtual space where the stakeholders of a project—even if separated by time or space—can meet, share, brainstorm, negotiate, record and generally labor together to carry out some task. Whereas traditional development environments focus on improving the efficiencies of the individual developer, collaborative development environments focus on improving the efficiencies of the development team as a whole.
Collaboration has been used for years in other domains and there is much to be learned. Here is a top 10 list to keep in mind as the way we interact with one another continues to evolve.
The medium must fit the message. Before choosing how to collaborate, determine which collaboration mechanism is best. Whether it's a portal, wiki, instant messaging application or the use of virtual worlds such as Second Life, some methods are better served in collaborating with superiors, whereas less formal methods can be valuable in developing a rapport with peers.
Overcommunicating and including too many individuals can be as detrimental as undercommunicating and excluding team members. Collaboration should not serve as a vehicle to undermine any individual's position within the team.
"Present" does not mean available. Presence awareness features of instant messaging show whether a colleague is online, busy or out to lunch. But to be effective collaborators, we need to be mindful of how intrusive our communications are. A simple query to a colleague can determine his availability before asking numerous questions that he can't focus on.
Simplicity is key for productive collaboration. The collaboration method must make our jobs more efficient, not create more cycles of work. A discussion board can often help get the dialogue moving among a large team, but in some instances it is necessary to pull the discussion away to a smaller group for a final result.
Respect cultural sensitivities. Like traveling to a foreign country, be cognizant of cultural boundaries and business etiquette. For example, instant messaging is not an appropriate business communication tool in every country, and abbreviations vary by language. So what could be funny in one language could be insulting in another.
Build relationships. Collaboration provides more means to develop relationships and nurture professional contacts. In-person communication is ideal, but point-to-point video instant messaging can be as good as a face-to-face meeting, without airplanes or jetlag.
Watch what you say. Collaborative environments preserve information and help build audit trails, but this includes keeping all contents. The information shared should contribute to the team's goal and not embarrass anyone in a year's time.
Collaboration does not replace professionalism. Regardless of the method we choose, standard practices of business ethics and professionalism apply. Informal posts and error-laden letters are unacceptable, whether printed on letterhead or posted in a wiki.
Collaboration breeds mentors. Social software tools, such as blogs, tagging and virtual communities, can make it easier for people to quickly plug into a network of experts, find the information they need and work collaboratively. This helps build mentor relationships where an aspiring "apprentice" can be a silent participant in a mentor's community.
Open standards extend collaboration. Just like the goal of the open-source community, where code is freely available to anyone to use, redistribute and make better, the use of open standards in creating a collaborative development environment opens the door to a community of goodwill and support to improve the experience.
Many of us prefer the relationships built through face-to-face meetings and phone calls, but software and systems development is a team sport. Collaborative development environments are emerging to address the needs of the team, not just the individual, much as wikis, chat rooms and discussion groups have done for other domains. With these best practices, we can all become great collaborators in whatever domain we choose.
Grady Booch is recognized internationally for his innovative work on software architecture and software engineering. A renowned visionary, he has devoted his life's work to improving the effectiveness of software developers worldwide. Booch served as chief scientist of Rational Software Corporation since its founding in 1981 and continues to serve in that capacity within IBM. He is one of the original authors of the Unified Modeling Language (UML) and was also one of the original developers of several of Rational's products. He has served as architect and architectural mentor for numerous complex software-intensive systems around the world in just about every domain imaginable. Booch is the author of six best-selling books, including the UML Users Guide and the seminal Object-Oriented Analysis with Applications. He has published several hundred articles on software engineering, including papers published in the early '80s that originated the term and practice of object-oriented design (OOD), plus papers published in the early 2000s that originated the term and practice of collaborative development environments (CDE).