News

Tools for Distributed Development Teams

I've been doing a fair amount of thinking lately about the software that can support geographically distributed development teams. Because I live on the far side of nowhere (there are probably more combines than computers in this county), that's the only kind of team I get involved with these days. Today, for example, I spent a fair chunk of time working with a developer on the far side of the state and another around the globe in Norway. Assuming you can get a decently high-speed connection to the Internet, there are lots of tools that can help. Here are some of the ones I've grown fond of.

E-mail: I expect every reader of this Web site is using e-mail already. But if the spam flood is threatening to drown you, consider adding a good client-side filter. For Outlook, I like SpamBayes. I've also used SpamBully. Either one can help you reclaim your Inbox, which makes it much easier to spot the truly important mails from your team members.

Instant Messaging: As with e-mail, I find the key to effective use of instant messaging is to not let it dominate your schedule. When a new instant message comes in, you're not required to answer it immediately (though you may want to take a quick glance, just in case the subject is urgent). Instead, wait until you have a pause in your other work to deal with the message. If both parties take this approach, a single conversation can stretch out over hours or days, but that's OK; you can always scroll back to remind yourself what's gone before. One thing that I find helps take the sting of urgency out of instant messages is to run the instant messaging client on a secondary computer, rather than on the one where I'm actually writing software. That way incoming messages don't take the focus away from what I'm doing.

Online Workspaces: Depending on your project, you might choose to keep everything online. For open source projects, the standard location is SourceForge, which hosts over 70,000 projects. It supplies web hosting, bug and feature tracking, mailing lists, download servers, CVS source code control, and other goodies. You'll find fewer restrictions on your code's licensing, but fewer features as well, if you host with Microsoft's GotDotNet Workspaces. Personally, I prefer having my source code on my own servers, so I've shied away from these sites, but it's good to have the choice.

Wikis: Another interesting tool for collaboration is the wiki. A wiki is a Web site that's written by its visitors; every page can be edited directly in the Web browser by anyone who can view it. You might think this would lead to an avalanche of spam and pornography, but wikis keep track of the history of each page, and successful public wikis tend to breed a community of people dedicated to keeping things well-organized. Two good examples are the original WikiWikiWeb, and the open source Wikipedia encyclopedia. But why not use your own password-protected wiki as a central repository for everything from design documents to notes on bugs to future plans to everyone's pizza preferences for the celebratory party when the product ships? You can find lots of free software for implementing wikis at the Wiki Engines page.

Groove: Another interesting collaborative tool is Groove Workspace. Groove is a general platform for collaborative content of all sorts: files, messages, project plans, notes, instant messages, you name it. Because Groove provides a variety of public APIs, it's extensible to include more tools. The plumbing behind Groove is fairly complex, but the result is simple: all members of a workspace get synchronized copies of the entire workspace on their local computers (synchronization is carried on as a background task over the Internet, and does not require everyone to be online at the same time). If you can convince the whole team to adopt Groove, it's like having a common bulletin board that everyone can see in real time.

CodeWright: The CodeWright programmer's editor is now owned by Borland. In addition to many of the features that you'll find in other programmer's editors (such as a flexible macro language and Visual Studio .NET integration), CodeWright includes an innovative feature that I haven't seen anywhere else: CodeMeeting. CodeMeeting acts as an instant messenger client embedded directly in the CodeWright interface, allowing you to chat over TCP/IP with any other CodeWright user. Even better, CodeMeeting enables collaborative editing for documents open in CodeWright. Either user can edit the document, and both users will see the changes. This opens up the possibility of doing long-distance pair programming, with two developers working on the same code.

What's missing? A good time and billing package that uses a central repository and doesn't cost an arm and a leg. Anyone got any suggestions? Drop me a line, if so.

About the Author

Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.