2 Absolutely Necessary Qualities in an Offshore Team/Member

After a recent event – where I ended up working all day Saturday, I have been thinking a lot about Offshore developer/teams and Onsite Clients’ requirements. Having worked on the other side where the Client looked down upon us for every little mistake – but couldn’t let us go because it doesn’t get any better – I have realized couple of things.

Here are 2 absolutely necessary qualities that I would expect in any Offshore development team or member.

1. Escalate: Offshore development kinda happens in future. I mean the timezone wise they are always ahead of us. This needs to be used as an advantage. Whenever something goes wrong or something doesn’t work – the Offshore team needs to escalate it to their Clients Onsite. This helps the Client to take necessary action even before this issue turns into a roadblock.

I am not sure of any other country, but of what I have seen mostly in India. So, these observations are based from my Indian work experience. It is such a strange medley of opposites and paradoxes. Indian developers are very smart to grasp technical ideas but their smartness fails them when it comes to communications. From the childhood, most Indian parents encourage their kids to become class toppers (Believe me, topper is a household word there, I was once a topper too.). There is no emphasis on clear communications. Parental authority in the initial stages and later work based hierarchy system actually supresses any communication abilities a person may have.

The end result is – a brilliant mind, but a numb tongue. So, if only the developers or the team members can learn to voice their opinions much more vocally – we would not have so many issues. Escalate problems as you see it. Raise red flags whenever you can. Your Onsite manager is not your Dad, he won’t be mad at you or judge you for bringing up a problem/issue.

2. Proactive: Most Indian developers I meet are reactive in their approach to development. If I give them a problem they will solve it based on their knowledge. But life doesn’t come in neat packets of problems. It’s a big mess that just overwhelms you.

Being Proactive means, anticipating delays, anticipating what might come up and prepare accordingly. It is said that only 300,000 years ago Humans developed – Pre-Frontal Cortex, the area under your forehead which gives us the ability to simulate any situation just by imagining it. Prior to that, we had no clue of any experience which we have NOT faced it physically. Just imagine how important this is. We got a whole extra add-on. We got a simulation laboratory right in our heads. This gives any human to use Imagination to try to simulate things, situations, actions, behaviors etc without even physically experiencing them.

So, developers – please put that to good use. Use that 1/4th of your brain to basically see the future. It’s something everyone does without being observant. It’s called day dreaming. When you are dreaming of that beautiful girl sitting in front of you in a Coffee shop or when you are dreaming of that vacation you have been wanting – all these things use your frontal brain. So, next time just use it in your projects to fore see what would happen if you did something and what possibly could be your response to it.

An example: We setup a stage server and I asked the developer to add some changes there and test them. He made his changes, but when he went to test them – the login didn’t work. So out of habit of his reactive mind – he assumed that he is powerless and basically sent out an email to me (from the future) telling me that the login doesn’t work. Well, you are the developer – if login doesn’t work then you gotta fix it. That’s what I did. When he said, the login didn’t work – I debugged it and figured out what was happening and I fixed it. The only difference between what he did and what I did – is not technical, but psychological.

That’s all. I don’t want any more features in my developer from India. I don’t care about your sex, about how you look, about your skills, about your coding powers etc. All I need from you is – A good red flag raising capacity and the ability to fore see them coming.

That would save the whole industry of Offshore development from using double the bandwidth in communications – back and forth.

An Outsourcing Model: Google Style

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.

Big Picture: Outsourcing.
Big Picture: Outsourcing.

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.

Google's top down approach
Google's top down approach

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.

Outsourcing Model: Take 1
Outsourcing Model: Take 1

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:

Oursourcing Model: Take 2
Oursourcing Model: Take 2

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.

Communication:

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

Technology:

  1. Code repository: SVN
  2. Dynamic/Collaborative Documentation: Wikis
  3. Bug/Issue Tracking: Bugzilla
  4. 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.