Tuesday, February 1, 2011

(2be OR 2outsource) OR NOT (2be OR 2outsource). That is the question

Fortunately, most often the dilemma does not look like “To outsource or not to be”. However, it easily might sound like “To outsource or not to grow”, and that is a real issue.

Why are we so afraid to outsource software development? Okay, maybe not afraid, let’s say we are cautious and uneasy about outsourcing. Anyway, it does not really matter how we name our feelings that result in avoiding outsourcing. The avoidance matters. Is this avoidance justified or not? Is it right or wrong? Do we lose or win?

To be more specific, let us take a case. Let me be a company owner, and let’s assume my company needs a piece of software to be developed. I do not have available personnel to undertake the development of this software. Maybe I have developers in my staff but all of them are now busy working on other tasks, or maybe I do not have any developers at all, it’s not the point. The point is: I need software to be developed, and I do not have anybody in my staff to do it. What are the options? Obviously, there are two of them: to hire new developer(s) or to outsource this development. To choose a right option I could begin drawing a pros/cons table, but I would rather skip this step because all the pros and cons are evident. All in all my choice depends on how I plan to use the new piece of software:

  1. Either I plan this new software to be in the focus of my business (like I am Microsoft, and the piece of software is a new word processor);
  2. Or this software is not in the focus of my business, and I plan to concentrate on other things: on other software, or on absolutely different things like e-trade, or real estate, or building airplanes.

If I am in the situation #1, I would never outsource this development. If #2 is my situation, than I do not see any fundamental reasons not to outsource.

So, if given just in facts, without any emotions, the decision looks simple and obvious. Why is it not so obvious, when we add emotions, and what are these emotions? I would say the main emotion is fear. You may call it uneasiness, caution or even prudence, but basically it is just fear, just a fear of something new and untested. Not a lot, a usual human fear one experiences times and times during his/her life: while entering school, or joining the university, or attending for new job, or visiting countries different in language and culture, etc. We always are able to overcome this fear of new and untested, so let us do it in this case also.

May I suggest considering an analogous situation. Imagine a gentleman who has never ordered custom tailor made shirts. Always before his mother used to sew his shirts when he was a boy, and then he began buying his shirts in a store as he became older. And now this gentlemen needs to have perfect custom made shirt. I do not know why, maybe for his wedding ceremony, or he is a pianist and he is preparing for his upcoming first concert at Carnegie Hall. It does not matter why, but he understands that he needs a perfect shirt, and he has three options:

  • His mother is still alive, and he can ask her to sew a shirt for him;
  • He can go to a store and buy a best fitting shirt there;
  • He can order a custom made shirt.

First two options are well known and proven, however the gentleman is not sure that choosing one of them he will get the needed result: his mother is rather old, and she does not know much about modern fashion, about styles, trends and so on; as for a store, even in a good one you are not guaranteed to find a shirt that perfectly fits you, that is of a desired color, made of a desired fabric with desired buttons, etc. Thus our gentleman turns to custom made shirts. What about fear? Yes, he is a little bit scared: he has never ordered his shirts at a tailor workshop, and he is not sure whether they would do it perfectly, or maybe they will just waste his money; whether they will be on time for his wedding (concert); whether they will need some excessive boring control from his side. Yes there are concerns, so what? Do these concerns totally stop our gentleman from ordering his shirt? No, why should they! It is quite a standard situation, and he knows what to do: he uses references, word of mouth and generally available information to choose a “right” workshop, a workshop he can trust.

Yes, we’ve found it! Here it is this key word: TRUST. It is trust that makes it possible to overcome fear in such situations of uncertainty and lack of information.

Real confidence can be gained only through real experience, we all know this. So, the more shirts you order at a given workshop, the more experience you have, and this experience defines the level of trust. Moreover, each your next shirt is potentially better because you yourself become more and more experienced in the issues of what to pay attention at, how to manage the interim procedures of measurement and of trying your shirts on, etc.

What about software development outsourcing? Absolutely the same, no difference at all: we are frightened to start due to lack of confidence. So, we need some minimal initial level of trust enough to make a first step, and we can get this initial level by requesting and examining credentials, references, and proven success stories from potential vendors. For instance, as to my taste, I am very fond of a success story of long-term business relationships between my own company and our US customer Better World Books company. For more than 7 years already we are moving forward tohether on developing the Indaba project, and here are some footprints: http://inrecolan.com/ourexperience/successstories/124-1,

http://inrecolan.com/howwework/testimonialsnawards/108-1,

http://inrecolan.com/howwework/testimonialsnawards/107-1, http://inrecolan.com/newsnarticles/companynews/269-1 .

Certainly, ordering a piece of software is not absolutely the same as ordering a shirt, so in addition to obtain a definite level of confidence, we also need to pay attention to the specifics of software development. Before starting an outsourced software development, we have to carefully think out all the development processes and to prepare accordingly. It’s not a rocket science, it’s a usual organizational activity that must be done. We need to understand that dealing with outsourced development (either onshore or offshore, no difference) is not the same as dealing with on-site development. In short: we have to have a manager assigned from our side as well as a perfectly organized development and communication processes. To be more specific:

  • depending on the project, there can be used either RUP-like (MSF-like) fully documented methodology or Agile techniques;
  • no doubts that all the developed source code, as well as project data, sketches, drawings, manuals, documents, records, databases, programs, etc., is always owned by customer;
  • repository can be located either at the customer’s or at the vendor’s premises. As for development environment, in addition to development tools there should be utilized version control system and project management tools (for example, SVN and Redmine or maybe other ones: VSS, Mercurial, Git, Microsoft TFS, etc.);
  • reputable vendor should provide full cycle of analysis/development/testing procedures.

This way, after eliminating initial fears, you come to usual professional business relationships, and you are able to utilize software development outsourcing to grow your business.