About Me

IT Executive and former Uber-Geek. Married with "The Boy", living La Vida Loca in Fabulous Las Vegas.

My Local Weather
February 22, 2012, 5:23 pm
Mostly sunny
Mostly sunny
74°F
real feel: 74°F
current pressure: 30 in
humidity: 17%
wind speed: 3 m/s N
wind gusts: 3 m/s
sunrise: 6:20
sunset: 17:28
 

Outsourcing–Dealing with “Good Enough”

Jun 03

Author:
Friday June 3rd, 2011 12:54pm

One of the most common issues that western companies deal with after outsourcing software development to India is a lower standard of quality of the software/testing being done.  It would be simplistic, and a little racist, to simply say that Indians are incompetent, incapable, or most laughably – lazy.  I’ve dealt with literally dozens of western managers and developers infuriated by software delivered that functionally works, but that doesn’t follow what we would consider even a modest amount of professional development discipline.  This can include things like no unit tests, unit tests commented out, poor understanding of the technology being used for development, insecure code that would falter under even the slightest SQL injection attack, etc.  Again, the software generally works but is not something you’d want to trust your customer’s credit cards to.

Getting to the real problem

Indian Data Center Power Backup SystemRather than simply label the developers as incompetent, to be successful you need to understand a bit about the culture to get an understanding of where this problem could be coming from.  Nearly 1/3rd of the world’s poor live in India, with estimates ranging around 645 million people.  That poverty has led to a culture of making the most from everything they have.  Very little is thrown away, and what is thrown out is then picked through and reused again.  That spirit of ingenuity is what has allowed India to start pulling itself up to become a major influence in Asia and the rest of the world.  There are literally dozens of examples of this that you see every day.  From motorcycles turned into trucks for hauling goods to cow manure used as cooking fuel, everything can be used for something.  Girls forming Cow Poop for Fuel

But that ingenuity comes with a downside.  When resources are scarce, the mindset is generally to take the shortest solution to any problem.  One of my favorite examples of this mindset shows up in Indian construction.  All over India beautiful new skyscrapers of steel and glass are going up, most of those do so with construction workers crawling on scaffolding made of bamboo sticks lashed together.  Why?  Because bamboo sticks are all that they need.

For your developers, the same mindset leads to software that functionally works but is of poor quality.  Your requirements outline the functionality required but if you don’t make the quality requirements as equally clear then you leave it to them to decide the path they take and more times than not, that path will include bamboo scaffolding and smell of cow poop.

Indian Scaffolding

How to to get past “Good Enough”

The key to ensuring the quality of the software delivery is to create processes that enforce proper practices.  Don’t leave quality decisions to the teams until they show that they understand the level of quality you expect as a standard.

  1. Make nonfunctional details part of the specification.  This includes unit tests, code coverage, documentation, etc.   Code is not accepted until these items are also met.
  2. Use modern development automation to help find issues before testing.  These include continuous integration, automated builds, and automated regression testing.
  3. Provide training for all technologies that you expect the teams to be proficient in.  Don’t assume they already know anything more than basic syntax.
  4. Code review EVERYTHING!!
  5. Find leaders within your teams who understand the quality required and appoint them as mentors to the teams.

Sometimes a cigar is just a cigar

While my interpretation of the cultural mindset of “Good Enough” might explain poor quality standards, this doesn’t mean that there aren’t some bad apples out there.  Not every developer has the drive and discipline required to produce quality software.  Your best bet for those individuals is the same as bad developers in any country.  Minimize their ability to drop bombs into your code base until you can eventually get them off the team and out of your hair.

 

<Disclaimer> Please see my earlier post for a basic disclaimer and explanation of the intent of these posts.</Disclaimer>

Share

7 Responses to “Outsourcing–Dealing with “Good Enough””

  • Mike:

    So Paul, In your opinion.
    When is it a good idea to offshore and not?
    For a big company example (CMM level 2-3) that has sizable process incorporated into their methodology.. seems like you are probably doing the requirement and test documentation maybe thats needed..

    but for a small company or a startup that doesnt have that infrastucture really in place and is very “agile”. It seems like the costs of vendor management/design/documentation/additional reviews etc.. outweigh the cost savings….

  • Prakash Srinivasan:

    Paul,
    While somewhat i agree with your points, but the most important point that you have might have missed out here (this may be missed out because you are also wearing management cap)…

    1. The poor quality of code leads because of poor estimation and pressure from high level mgmt to deliver the code with in short span of time eventhough every body understands it’s not possible to deliver. When indian company (probably high profile sales guys) promises to meet “standards” and because of cost measure and other political reasons, all pressure bounds to the “poor” delevelopers , unlucky “managers” to dealt with and take a short cut root to deliver something. So, i feel the problem is not with developers, it’s start with begining….

  • Prakash,
    While I agree that bad estimation and corner cutting lead to poor quality, that is true for any development team anywhere in the world. Taken as a whole however, quality (or more precisely “acceptable” quality) seems to be worse when development is outsourced. The key is to make sure that acceptable standards are made clearly part of the deliverables. Managers often do choose to lower quality standards when pushed up against a deadline, but unless they’ve communicated what acceptable quality is the choice is no longer theirs to make.

  • Srinivas:

    Paul,
    As always, you are good at articulating. To my feeling, few points that need review in your perception.
    1. How many offshore assignements you have handled?
    To give an example how deviant a generalization statement gets: Say in a Indian class of 100 students there are only 2 female. Out of the 2 female one always comes late. To put the fact in a generalized way you can say 50% of indian female always come late to school. (No offence to Females here – this is just an example). How far this statement is valid?
    2. Do you have any MSA (Master service agreement) if your concern is on quality. You can keep a company accountable and extract what you want if you properly have the handshake.
    3. To my feeling, you have played on SDLC rules. If design is perfect, we will have less issues in dev. If dev is perfect, less issues in testing. If the approach against time crunch is code code code and then test test test. This is like a factory model you were trying in software development. To my feeling this has a flaw.
    4. Indian culture is rich enough and existant since ages. Even without mechanization of western world, there are marvellous structures in India. The symbolisms used in this article are very offending – cow dung, Good enough. If that is the perception you want to paint, I feel you are not even close to understanding.
    Thank you.

  • Prasheen Prakash:

    Hi Paul,
    I agree with the views in your post however I think there are a few more points to think about.
    1. Why do companies cut corners especially on quality? – Cost is a major factor and most of the Indian outsourcing companies have extremely tight margins due to the competition. To maximise these they tend to get a profitable ratio of a large number of graduates to experienced folks working on the project. This trend tends to be accelerated by the fact that clients demand price reduction quarter after quarter.
    2. Talent is another factor. Outsourcing companies find it increasing difficult to retain talent due to the increasing industry salary benchmarks for experienced folks.
    3. Inefficient management. Due to point 1 it is compulsory for companies to have very good, efficient managers with industry experience and lots of common sense who could mentor the young graduates for the future. However due to point 2 they tend to lose good people hence leading to wrong people being in wrong posts.

    As a client what are the options that can be adopted to manage this situation
    1. Make sure the key positions are held by people who are capable. Introduce rewards and named resources into the contract to help the companies to retain those people during the course of the project.
    2. Introduce warranty period for the code hence making the companies responsible for any bugs in the deliverables.
    3. Make sure the deliverable and requirements along with the NFRs are absolutely clear in the contract.
    4. Talk to the outsourcing partner senior executives to make them realise the long perspective for them in completing the project on time and with the desired quality so that they understand it is not a one night stand.

    Cheers!
    Prasheen

  • Srinivas,
    1. I think you may have missed my disclaimer in an earlier post where I specifically called out generalization as a tool, not an absolute. I’m not implying that any of this represents every individual. As for my experience, I have managed literally dozens of teams, hundreds of developers, onshore and offshore.
    2. MSAs are only involved when outsourcing is done with a systems integrator. This issue however is a bit more generic. Also, contractual enforcement is usually done after the software is delivered, when it is often too late.
    3. SDLC rules work best for dealing with outsourcing. Agile, XP, etc are very difficult to do across geographic boundaries.
    4. If you feel insulted by my comments, I apologize. The symbolism I use are extreme so that the point comes across. It’s difficult to describe subtle nuance. And while I do have more than the average westerner’s experience working with and in India, I am not so arrogant to think I understood even a small portion of the culture. But that doesn’t make my observations any less accurate, as they are MY observations. You are free to disagree with them.

  • Prasheen,
    All good points. In particular, the rising salary benchmarks in India is wreaking havoc with quality and consistency. It’s becoming difficult to justify the time and effort for a company to educate and train developers only to see them leave at the first opportunity for a better paying position. That problem should correct itself when the demand for developers eases AND companies start paying their developers adequately from the start. Ultimately, as an employer now you have to find other ways to incent employees to stay other than money. It’s hard to do and even in my own recent experiences (that you are aware of) I often questioned why my staff chose to stay given the working conditions and lack of pay.

Leave a Reply

*
Archives