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.

Patterns of Dualism

We all live in a dualistic world. The Philosophy of Dualism has been proposed long time back in Indian Vedanta Philosophy. It’s called Dvaita. The concept is very simple, but hard to remember and use to our advantage. In simple terms it just states that – we perceive (actually our sensory perceptions) our reality in the form of ‘subject’ and ‘object’. This is the basic logic behind it. Now everything is built on top of it and it can get very complex that we become un-aware of it.

Below are some patterns I have consistently come across in my perception. These things are nothing new. We all know these. Just like we have ‘Design Patterns’ in Computer Science, we also can find patterns in dualism. Here are some:

1. Rise and Fall

This pattern just states that whatever goes up, will come down and vice versa. You can try to observe this around you. The stock market, population growth patterns, traffic etc. Any data you take, you would see this pattern embedded within it.

Rise and Fall
Rise and Fall

What is important to note is in this rise and fall, everything is advancing towards the future or moving forward.

2. Big and Small

This is very easy to see. In any scenario or situation – there is someone who is big or with power and there is someone who is small or powerless. And and in most of the cases, there is always a tussle going on between these two entities.

Big and Small
Big and Small

We see this every where in our society. The middle east conflict, the Sri Lankan Sinhalese & Tamil conflict, the minorities in India, US. This is prevalent everywhere. The division may be based on power, money, population etc – but the pattern is same. One group is Big and another Small. We are so obsessed with this pattern that we make folklore & mythological stories based on that. Example: David and Goliath, Kauravas and Pandavas.  We love to root for the underdog.

3. The Choice Paradox

This one is a little complicated. These are the mental locks or physical situations we get into where there is no way out. This is ambivalence that results after two equally opposite values try to pull us in either directions. This is most powerfully experienced at the person level as compared to the previous two which play out much more at the society or group level.

Examples: The things that make us happy can also make us sick. Chocolate. Some morally questionable activities may give us more joy. We have a common name for this pattern called Catch-22

choiceparadoxThese are few which I see around me. As I said, there are many more patterns and I am pretty sure you may see them or come across them. Let me know if you have any and I will add them here.

The GOTO of Meditation

I try to meditate on a regular basis. There was a time when I meditated for an hour every day, but now a days if I get 15 mins I am very thankful for it. Anyhow, what I realized recently is an analogy to programming headache. A GOTO statement in computer language is an instruction to the compiler/processor to jump to a particular line of code. It was invented long time back (I am guessing in FORTRAN) to make the computation easy. As it’s easier to jump the control anywhere you want to. But, this turned out to be a nightmare at later stages of programming where some applications may have millions of lines of code. There rose a criticism of the GOTO statement and you can read about it online.

There are many kinds of meditations available. Especially with the globalization, all kinds of meditation practices has been transported to America’s latest YMCAs (checkout Kalidasa @ Berkeley YMCA). But the whole premise or principle of meditation stays very simple. It’s like whoever/whatever created us wanted to have some fun, so he/she/it installed a ‘mind’ between our ears and hence begun the struggle over the control of thoughts. Our thoughts are streamed at much higher rate than any twitter system imagined. They are always chained. One thought leads to another and to another. By the time you become aware (if at all you can become aware) you are far away from where you started.

lake yoga

So, the principle behind any meditation technique is to not to follow this crazy route taken by our thoughts. They ask you to close your eyes, to reduce one more sesory system mis-leading you into distraction. Almost all kinds of meditations involve following something and doing it repeteadly. It could be your breath, a lamp or the train of thoughts itself. Like the weight loss programs, a meditation methodology is unique to each person. You need to try a bunch of them before you stick to one. The one I use is to follow my breath. I watch myself inhaling and exhaling, it’s not easy but slowly I get into a flow and then I am able to feel whatever people usually feel when they meditate.

But the mind is so cunning or distracted that I keep forgetting that I need to keep my focus on my breath and lose myself in the stream of thoughts. But then when I remember, I gently come back to watching my breathing. This reminded me nothing but GOTO statement of meditation. It’s like when I am lost in my stream of thoughts I remind myself and issue a GOTO to go back to watching my breath. So, please be my guest and go ahead and use GOTO exhaustively in meditation. It’s not considered harmful in meditation. 🙂

Ignorance and Fear

As I was driving back home, I got a moment to ponder on ignorance and fear. I was thinking about one of the idea I have been toying around with, in the past 1 year. I am not sure what is stopping me from going ahead and flushing out the details and get that idea out, but I cannot make myself do anything about it so far. I have happened to discuss with my friends about the idea and they all think it’s a great idea and I personally believe that it’s a great one too. As I thought about it, two things crystallized for me.

Ignorance and Fear. I think both Ignorance and Fear are cyclically connected. Like a catch-22 situation. I think ignorance leads to fear and more fear leads to more ignorance. It’s a hard cycle to break. Most of it is happening without my serious thinking of it. Only today in the context of my idea was I able to see how they are connected.

My ignorance about certain things – Flex, iPhone development, Erlang, Amazon Web Services etc has made me not even attempt to take my first step towards this idea. I am a perfectionist and it’s a pain in the butt for any perfectionist to take a tiny imperfect step. Add to that years and years of self-flagellation you get a very acute case of self-doubter and highly self-crtitical judger. I realized as I sat through the slow moving traffic that my ignorance about certain “supposed” things has created a fear in me. The fear which freezes me in my location. Sangita, long time back, mentioned from her Somatics class that there are 5 ways we react to trauma/fear.

  1. fight
  2. flight
  3. freeze
  4. appease
  5. dis-associate

I think I have done almost all of them on that list in my life, but the most popular one seems to be ‘freeze’. So, ignorance creates fear which freezes me there by contributing to the ignorance.

I realized that there are couple of things I can do to break this cycle. Believe it or not, it’s another cycle albeit an empowering one. I think before I craft this cycle I need to make one strong assumption. And that is – “It’s a friendly Universe out there”. Einstein said it long time back. Anyhow, here is what I think would break the cycle.

Little action is a great replacement for Ignorance. Instead of thinking/believing that “Knowledge” is the response to Ignorance, I think the better response to ignorance is ‘small action steps’. I think, all my life the way I have learned is by making mistakes. Only that I have never been aware of it. My first job was where I had to prove by building a web application in 15 days in a totally new technology. Start to end. I had no clue how I am going to do it, but all I knew was I am going to do it and I did it. As I moved along, the pieces fell in their places. This is nothing new I am mentioning but it’s an age old way of learning things through tinkering, trial and error.

But I guess what happened over the past few years is that I happen to fall into the trap of disdaining trial and error and prefer erudition. Which is not bad, but for who I am it’s not the right way. By making myself believe that learning/knowing everything before I proceed, has put me in a situation where I am freezing without moving on with my idea. So, now I have realized that ‘small action steps’ are far better supplement for Ignorance than heavy dosages of knowledge.

The second part of the cycle is forgiveness, patience, end result and big picture. This happens to be the antidote for the ‘fear’ part of the earlier deadly cycle. Obviously, through trial and error, through ‘ready-fire-aim’ method I am going to burn myself many places. But, if I keep the end result and the big picture in mind then I won’t allow the fear of failure to freeze me. To make this happen I also have to be more forgiving of myself and my mistakes. I know Freud taught us to blame it on our parents as to why we grow up to be like this. Parents commit their own mistakes with parenting as with any other things, but I think once you have that awareness of how our childhood can affect our adulthood – we should be bigger enough to be able to take a plunge and become what we aspire to be. Anyhow, I am blabbering. But to make the story short, I believe remembering the big picture and being gentle with myself will help me to get rid of the fear.

Once this cycle is in place, the change won’t be overnight. But it sure will come. As I type this, I can sense a great calm in my heart which is a good sign. I am going to take my first tiny little step as soon as I end this post.