Trend: Software developers can work from any location with a broadband connection as long as appropriate procedures and tools are implemented.
Here are excerpts from an interview by GL Ness of Always On with Borland senior vice president Chris Barbin about distributed software development. (Disclosure: I do distributed development.)
There's something to be said for having a critical mass of people in one location: It makes it easier to communicate, collaborate, and learn. However, with the right technology, people skills, and processes in place, an individual working in a home office can just as effectively contribute to the team as someone working at headquarters or in a branch office.
...we're really only at the beginning of the virtual enterprise with software development. People used to think that knowledge capital had to exist in one place for software development to be most effective, but our customers have found this isn't necessarily the case. What is important is that the employer defines roles, responsibilities, and business goals up front and then properly aligns teams to accomplish those goals—regardless of where those teams are located.
Distributed development is a broader term that refers to software that's being developed by team members in different locations: It could be in a different city, a different country, or by a different company altogether (as in outsourcing). Outsourcing, in contrast, is just one type of distributed development scenario.
...distributed development is part of a larger knowledge worker trend; however, many companies don't take the time to understand the unique challenges that a distributed team can bring to the already complex process of software development. There's already a serious lack of alignment between business and IT; if you compound that with different languages, cultures, time zones, processes, and objectives, it magnifies the potential for miscommunication, increased cost, schedule delays, and outright software failure.
...distributed development works! We see it working every day at customer sites throughout the world. But it only works smoothly if companies and individuals understand the unique challenges this model presents. Organizations have to establish and institutionalize effective processes from the beginning and put in the technology infrastructure to automate those processes and make them more efficient. Process and technology aren't enough, though: People must be trained in those processes and technologies to make sure they're used and enforced. Organizations must appropriately align people skills, process, and technology to be successful with distributed development.
Distributed development can absolutely benefit rural America, regardless of how many engineers are in a particular location.
If effective, distributed development should actually help us improve that work/life balance that we all struggle to achieve.