One of my posts yesterday drew a question and a response on the relationship between these two, so I thought I’d give the topic some airtime.
For anyone interested in the subject, a good place to start is Martin Fowler’s seminal article on the subject.
Read it for yourself, for sure it’s worth it. When I read it the first time around, I remember two things really stood out for me:
- One, that the way to break teams up when seeking to do agile-with-offshore is “high cohesion and loose coupling”; you have to move entire cohesive units over, not what you would plan for in a waterfall or cascade approach. This is really important, since everything agile relies on good quality communication and team facetime.
- Two, if you don’t do this, then you get a variation of Conway’s Law in operation. The system you build is a reflection of the team structure. So when you don’t have high cohesion loose coupling in the way you’ve structured the team, don’t expect to see it in your code.
There’s lots of good stuff in Martin’s article, and in the Thoughtworks Bangalore experiences he shares. Agile and Offshore can and do go together.
Incidentally, with all this talk about Agile. I thought it was worth linking to the Agile Manifesto, just in case one or two of you were interested in the subject and hadn’t actually seen it before. Rummaging around Martin’s articles, I came across it again, and felt it was worth sharing.
So here it is: The Manifesto for Agile Software Development.
I can’t resist copying it here, just for those who don’t bother to follow the link:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
[Signed everyone who is anyone in Agile]