So, I’m beginning to think that Agile development is a metaphor for the ideal work environment where the client has a clear idea of what they want developed – maybe not the end product but at least a good sense of the direction they want to go in, the development team gets their work done unhindered, the management team gets the resources they need and everything seems to just flow; like a sake cup flowing down a small estuary under the cherry blossoms while lines of haiku are composed.
But in reality, it’s more like the hapless cat herder trying to bring their untameable pets (pests?) under control, while battling a multi-dimensional beast from the planet Zorg with a useless blaster. Not impossible, but down right tricky.
The event that has brought me to this realisation is our effort to try and find a new outsourcing partner to cover our workload. In order to start a conversation (the trendy new-ish word for business relationship) I have contacted a few, and sent them complete specifications of what we want.
Not very agile.
But how are they supposed to quote on what I want? It’s not a big project – we chose this project because it’s rather small, has a short time-frame for what’s wanted, and if it goes pear-shaped we should be able to recover. And in return they have come back with fixed price quotes where the most expensive is 3 1/2 times more than the cheapest. I’ve asked for clarification of the costs from all three, but I’m not really getting very far with that.
But how is this supposed to work for larger jobs? Do we then just take a developer on a retainer and push work through to them? That seems like a better deal. But one of the things we’re looking for is not a single developer, but an organisation that can do different parts of the work: HTML coding, PHP coding, graphic design, etc.
And having someone non-co-located (un-co-located?) is not within the spirit of agile where all the developers work together in the same place and on the same project. You can’t have a daily scrum when some of the participants are in a different location and time zone, and maybe use a different language.
So we just end up with the same processes happening the same way.
The last project I tried to have the outsourced developers work on a daily basis meant that they were trying to second guess some of the development decisions that were clear to me, but not so clear to them. I thought I had explained most of the project to them, but every now and then a decision would have to be made, and they would make it and check with me. And for some reason, it always seemed to be the wrong decision. It wasn’t a bad decision, and looking back it seemed like the most logical thing to do, but it wasn’t the correct thing to do.
The happy medium that we’ve found is to get the local development team to do the interesting part of the project: database design, setting up the framework, some design and any interesting or new coding that is required, and have the offshore developer do a lot of the grunt work based on the work that has been already done. So far, that’s been a good place to start.
In the end, I don’t think we can work within an agile methodology for every project in every instance. We’ll have to have hybrid teams, where the local developers can work together doing what they do best, and we have clearly defined development for the outsource agencies.