Monday, October 27, 2008

Distributed software development collaboration

I'm reading a book, "The World is Flat" by Thomas L. Friedman. It's a pretty good read, with surprisingly informed descriptions, and fairly accurate diagnoses.

The main thrust of the book is how technology is changing the world (making it flat), and it talks about offshoring and global competition. It's definitely food for thought for me, since I'm thinking a lot about that. The "one shore" idea is that you can have a local or distributed software development team, and increase or at least maintain productivity, using new technologies and tools, particularly open source tools.

I'm not trying to build an offshore consultancy, except in the sense that I want to be "offshore", literally, and still working from my sailboat. But I'm not opposed to collaborating with offshore individuals or teams.

As a matter of fact, two strategies I'm interested in pursuing are 1) collaborating with other independent developers, testers, sysadmins, designers, project managers, etc. and 2) building a team from local talent where I'm living, whether that be Seattle, Ecuador, Fiji, or wherever.

The products and services that I'm targeting are software development lifecycle and collaboration tools.

For the first form of collaboration, the idea is to enable a distributed team to work as efficiently as if they were centrally located. Not, something I believe completely possible, but a goat to strive for. A lot can be done in this less than ideal collaboration environment, and there are definite advantages, including the real productivity gains that can be achieved by those that prefer this environment, and the enabling it does by spreading development over a wider geographic pool. Not to mention the typical aims of traditional offshoring that include reduced labor and infrastructure costs.

For the second for of collaboration, the idea is to develop best practices and tools for teams that might otherwise not be able to pool the capital and experience that large scale professional teams in big budget organizations can muster.

The primary purpose of both forms of collaboration for One Shore, and for me specifically, is not, as I said, to build an outsourcing consultancy, but to develop the tools and processes for my own development aims. So the result is the same whether it's a widely distributed development team building the tools that increase our own productivity, and learning the techniques to work disperse, or whether it's building the tools that allows a team of talented, but untrained individuals to work together in a way that typically, only experienced enterprise groups can collaborate with big budget software.