We all know what Outscourcing is. It’s was and is one of the hot topics in the past couple of years. I have worked on both sides of Outsourcing – onsite, offshore. The one year I spent in India, I was working on the side where all the magic happens. Where the milestones are turned into code. I have worked on US side where I was churning out milestones for people who were working on my projects in India. Having seen both sides of this model, I have a opinion as to how we can approach Outsourcing and doing it really well.
Recently, Google came out with their definition of what they think a Cloud computing means. Btw, if you haven’t given a thought to Cloud computing you should. The future will be a mix of highend computers tapping into APIs of clouds and trying to keep the core set of data which is meaningful to us in sync. It’s like spreading the peanut butter equally across the bread so that when anywhere you bite into it, you get the same taste. All your devices will hook itself into “The Cloud” and you will have access to the data anywhere you want.
Anyhow, I am not here to talk about Cloud Computing. You need to follow these two people to know more about it. Werner Vogels and Steve Wright. I am here to talk about how Google’s idea of cloud computing can be applied to Outsourcing. I have been thinking a lot about outsourcing since I have been managing couple of them in the past few months. I ran into so many issues in these projects, now I think I have a idea how to get this to work properly. To get the outsourcing work you need to have a very good combination of Technology, People and Communications. Let me draw a simple picture to illustrate.
Both onsite & offshore has people who are interested in trading skills & profits. In this pic, no matter what kind of role each party plays, the most important part is going to be the middle one – Technology & Communication. So, what is Google’s approach? In Google’s approach – I meant the way Google approaches it’s Cloud architecture. Google has a inverted tree structure when it comes to running it’s cloud or search. It has this major goal at the top and then bunch of extremely well written programs & cheap disposable hardwardware at the bottom. Once again, let me draw a picture.
The most important thing in this picture is – the bottom layer of machines is highly disposable. Google uses cheap hardware stripped down to it’s minimal and they all run some custom version of Linux and if something happens to the machine and it dies, the middle part is smart enough to discard that machine and keep working. The middle part has a smart controlling mechanism, where a sigle failure in the system doesn’t halt the whole system. Now, if you imagine the scenario with outsourcing and if you have worked in an outsourcing project – you would have an idea as to how volatile the offshore programming jobs are. In India, I have seen people switching jobs just for another 100$ more per month. The attrition rates are too high and companies do crazy things to keep their employees on board, such as – bonds, contracts, promise of sending the programmer to US in 1 year etc.
So, this is where I got to thinking as to how I can apply the Google’s approach to Outsourcing. Let’s elaborate a little more on our initial picture of outsourcing.
A smart person would immediately point out that this is very hard to achieve. You cannot just have Technology & Communications to manage a bunch of renegade Indian programmers. That’s true. I agree. But that was take 1. Let me add in more details. As in Google’s approach picture, the smart programs in the middle also constitute – monitoring and controlling programs which watch the hardware for any failures. Also, the client is never in direct contact with the Programmers in a real world outsourcing model. So, adding in these details to the picture now looks like this:
Like I said, the most important part is going to be the Technology & Communication part. That is the central nervous system of the whole outsourcing model. I am pretty sure a lot of people are implementing outsourcing in the above mentioned way, but my leaning in this model is towards – how dispensible the programmers can be if you have a very sound Tech & Comm system. I have nothing against any programmers and I do want to keep the programmers I work with, but in this dire times nothing is long term and it would be selfish of me to expect a programmer to work for me for a long period of time. So, all this sytem does is to facilitate an easy transition of programmers into and outside the system. It doesn’t replace programming. If one programmer leaves, we need to replace him/her with another programmer. But this system enables to add any skilled programmer to the team and run with it.
So, what constitutes Technology & Communication area? Here is the list of things in my experience that have worked.
1. Project Management tool: I have seen people managing the whole project with just an Excel sheet – just like they do their personal finances. On the other hand a lot of people use tools with varying complexity. I have tested out many and I don’t have any particular preference. The systems I have used lacked in some features I was looking for. But over all, here is what I would look for in a Project Management tool.
- Team Management (Groups, Skills matching etc)
- Time Management (Calendars, Available timings etc)
- Messaging System (Email, Voice, Conferencing etc)
2. Monitoring & Tracking: These tools haven’t caught up yet. This is the reason why I believe that any system which does all these would be a custom built system. Because not many project management tools provide tracking & Monitoring.
- Time Tracking & projections
- Money Tracking & projections
- Code Tracking & projections
- People tracking & projections
- Progress tracking & projections
- Code repository: SVN
- Dynamic/Collaborative Documentation: Wikis
- Bug/Issue Tracking: Bugzilla
- Easy dev setup environments: Using opensource tools
We have worked very hard in the past 6 months to build this and to make things work in this ideal way at ruminal. So, far we have been partially successful but as we grow I think it’s possible that one day we will have a system along these lines where irrespective of how the market is on the other end, the system will be smart enough to raise flags on time so that the project keeps progressing.
Having said all this, I am still figuring all this out. I would love to have any input or feedback you might have to offer.