Although some problems are inevitable, there are ways to be more productive in your software development if you are prepared to take a risk and try some new methods.
Someone who has never shied from change is Tillmann Bruckhaus, who is an old hand when it comes to alternative software development practices. In 1999, when he worked as a chief architect at Sun Microsystems, Bruckhaus was using distributed teams consisting of people located outside the company to help meet development project constraints.
Today, he does the same thing at Numetrics, where he works as director of analytics helping to build software that uses business intelligence techniques to monitor the performance of development teams for integrated circuits software and firmware.
"We are working with remote teams. We have a team in Pakistan and they do the database and web programming, while an Armenian team brings the statistical and data mining expertise," says Bruckhaus.
Project managers taking this approach should be wary of their intellectual property leaking into the public domain, warns Struan Robertson, technology lawyer at Pinsent Masons.
"A popular misconception is that you own the code that the freelancer develops, and that is not the case. The freelancer owns the copyright to the code unless you specify otherwise," he says.
One of the biggest challenges for an executive trying to farm out elements of a project in this way is managing the developers.
"You must make the time for the additional co-ordination and communication. It may be difficult to judge the skill of the remote team, and you may, therefore, have less confidence in the project's schedule," says Bruckhaus.
Jack Repenning, chief technology officer at Collabnet, a collaborative platform for software development, agrees. Repenning, who has participated in open source software development projects since the early 1980s, says that for all the technological advancements that have been made, there are still significant difficulties facing project managers who employ staff in diverse locations.
"When you get into a situation where one person goes to bed before another comes to work, it can all fall apart, and I do not think anybody has managed that, other than by using scrum," he says.
Scrum is an agile development methodology in which a problem is divided into a set of discrete tasks assigned to groups. Its name alludes to the scrum formation in rugby where, as in scrum development, people fulfilling distinct tasks come together to form an effective whole.
Scrum emphasises short meetings designed to address immediate problems and keep tabs on progress on a frequent basis.
Repenning posits the "scrum of scrums" idea, in which a scrum dealing with a set of related tasks forms part of a larger set of scrums.
"There is one person called a scrum master in each team who keeps track of the status. The scrum masters will also meet, a little less often, and they deal with larger components of the task.
"The key point is that scrum masters do not have to be as tightly co-located," says Repenning.
Agile development practices, such as scrum, can be useful in dealing with the inevitable management overhead that besets projects with distributed teams.
"The key is that you must ensure the development is very transparent," says Kent Beck, developer of the extreme programming methodology.
Bruckhaus says, "If someone offers to do something for you as part of a larger development, then sitting back and waiting for the deadline day and expecting it to be met is a recipe for disaster.
"That is why agile development can be helpful in this context. You can work in small time boxes, so you can get a verifiable functionality back at a faster rate."
Tips to help accomplish this include daily code drops in which iterations of code are submitted on a frequent basis to a shared server.
They can then be reviewed by project managers so that any misunderstandings or potential problem areas are taken care of before they become damaging.
Automated tests to verify the code quickly and regularly, without bogging down development staff, are also crucial in distributed collaborative development scenarios.
When it comes to specifying projects from the outset, it is worth remembering the mantra "a stitch in time saves nine". This is especially important when dealing with people from different cultural backgrounds whom you are not seeing on a face-to-face basis each day. Ensuring that they understand the scope and requirements of the project from the start is crucial.
Sourcing the team members
Like many project managers sourcing members of a virtual team, Bruckhaus focused on people that he knew. He had a network of people who had previously worked for the company, but had subsequently emigrated. He was able to build virtual teams using these individuals as local hubs for talent.
Other project managers propose a more open method for building distributed groups.
Kevin Wade, founder of IT recruitment firm Topcoders.com, sourced design and development talent from people that he had never met, via the internet. "I have built 40 or so websites with freelance designers and coders," he says.
Wade used web-based hiring sites to find the skills that he wanted, before starting Topcoders.com specifically for software recruitment.
The site is due to be relaunched in about four months with new functionality, including tracking and extra administrative features.
There are rival sites doing similar things, such as Rentacoder.com. This site, which serves as a marketplace to connect buyers with coders, does not charge a finder's fee to the buyer, but instead charges the developer a commission for a successful bid. As with Topcoders .com, the payment for the job is held in escrow (by a third party) until the code is delivered and the buyer is satisfied.
Scriptlance.com, another site offering a similar service for web masters wanting to commission script programmers, charges a commission both to the programmer and the commissioning project manager, but the percentages are lower - 5% of the bid to the programmer, and a flat £2.50 fee to the buyer.
Tapping in to open source
Another way to find talent online is to tap into the open source market.
Many people who think of open source think of Linux, which has an extensive hierarchical network of developers who contribute code to the person directly above them in the chain. However, many open source projects have far fewer people (normally in single figures), which makes such complex management practices less necessary.
There are tools to help find open source projects and the coders who contribute to them, and they can also be used to find code that has already been developed by the open source community.
Sourceforce, a well-known orientation point for the management of open source projects, is one such point of call, but if you want to gauge the health of a project, consider a search engine like Krugle, which was built especially for developers, says Repenning, who was involved in a project for Collabnet to create an open source framework for distributed project management.
The Krugle service makes it possible to search for code, or for the projects themselves. Search results detail metrics such as the numbers of lines of code and the number of files in the project.
However, there are some potential pitfalls with open source projects. First, open source developers will be even less controllable than virtual teams.
"You need to remember that you are deriving your energy from this open source dynamic," says Repenning, adding that waving cash at them will not work.
"To some extent, no software developers anywhere are coin-operated, but open source developers in particular are not. They want to do the right thing, their own thing, and you have to respect that," he says.
For many people, the main rewards for working on open source projects are intellectual stimulation and recognition for their work. Consequently, managers have to understand the value of public praise, says Repenning. Understanding how to build a community around the project is crucial. That community needs to thrive on conversations that may well be sparked off by the project manager.
The other danger for companies using collaborative open source efforts lies with intellectual property. The traditional GNU General Public Licence (GNU GPL) dictates that any product using code developed by the open source community must itself be given to that community. In this way, it infects everything it touches with the open source "copyleft" ethos.
Make open source work for you
Fortunately, there are alternatives. The GNU Lesser General Public Licence GPL (LGPL) makes it possible for proprietary code and open source scope to co-exist. The BSD licence does not include the same infection clauses either, and the Mozilla public licence is also liberal when it comes to the commercial use of code.
This means that it is legally possible to combine open source developments with proprietary code (useful if, for example, there are certain parts of your intellectual property that you do not want to make public).
However, project managers should be wary of getting code that they had not bargained for. Proprietary code could make its way into code contributed by the open source community, or by paid remote workers, leading to a lawsuits further down the line.
There are ways to protect a company against such dangers. If using a paid contractor, then put some form of liability clause into the contract, so that the coder pays in the event of a lawsuit. Of course, it becomes important to ensure that they have indemnity insurance and will be able to pay the bills.
Technology can also help here, says Repenning. Products from companies such as Black Duck Software can scan your code and match against a knowledge base of publicly known code, to help inform you of any copyright infringements.
But all of these measures may not help project managers caught in the headlights, after all. The management overheads required and the planning and forethought needed to successfully pilot new ways of working calls for such approaches to be factored into a software development project at an early stage.
Fred Brooks, author of The Mythical Man Month, was right when he said that you can not make a software project that is running late finish earlier by adding more people.
Anyone wanting to shake up their project management processes should be thinking ahead and treating this as a long term strategy - not a short term fix.