I certainly would agree with anyone who tells me there are appropriate circumstances and projects for outsourcing, whether on or off shore. As Jacky implied in her comment to my first post, when requirements are firm: such as localization or porting of a product that already runs in one language or on one platform: outsourcing can result in a product that is usable in the country where the localization is done, or can take advantage of engineers who do not think of the task as a boring repetition of something they have already done.
Maintenance of a deployed product can fall into that second category (some engineers think it is boring), but I think there are hidden risks to outsourcing maintenance (that I won’t go into).
When a company has an offshore subsidiary that performs development work, many risks I mentioned earlier are reduced because now there are shared goals, management chains, the ability to send in-house staff to work on the team, the ability to closely monitor the work, etc. This isn’t really “outsourcing”: it’s simple “offshoring”, and is a different animal with its own set of rules.
Contrary to many who outright oppose outsourcing of “U.S. jobs” abroad, I love the fact that there are pockets of software excellence around the world that are providing good livings for engineers and support personnel, providing incentives for education, providing role models and hope for young people, raising the standard of living, etc. I know it’s not always perfect, I know there are those who take advantage of workers, and that other employment in those countries (such as farming) can suffer from neglect. I won’t get into political controversy here, but there are certainly many stories to be heard.
My posts this week were intended to provide food for thought and a pause before jumping into an outsourcing situation without preparation. So many managers have this idea that someone else can do their development job quicker and cheaper than their own in-house staff and are lured by the siren call of lower wages and the (mistaken) idea that they are transferring development risk along with the work. They also severely underestimate the importance of an experienced, trained software project manager.
There’s a lot more to consider than developers’ wages, and I hope I made my case this week.
Even if you have had a good outsourcing experience, whether within your country or abroad, there may be a few unintended consequences of success.
You haven’t built the technical skills to create another product within your company. Do you plan to develop another product, or are you content with just this one? What about the next generation product? Will you outsource that as well? To the same supplier? It would be nice to not have to go through the ramp-up phase with a brand new team, but how confident do you feel that your supplier’s team will still be somewhat intact when you next need them?
I’ve worked for companies that were able to use their engineers on later versions of a product years after the product was first developed. This was possible because these good engineers were given other, interesting and career-enhancing work to do in the meantime, were promoted and nurtured, and then were still around when the next generation product was needed. They were there to train new engineers and to remember lessons learned from the first development.
By outsourcing, you won’t likely have that happen. You may argue that engineers don’t stick around that long now, but is this because of the engineers or the companies that don’t do career development any longer?
By outsourcing, you also haven’t created a skilled staff that could be a pool from which to promote (to VP or CIO, for example). A Fortune Magazine article (July 23rd, 2007 issue) called “Turning our Backs on Tech: Corporate America has to make IT jobs sexy again” by columnist Geoff Colvin talks about sinking school computer science enrollment and poor CIO succession planning as consequences of U.S. outsourcing of software engineering jobs abroad.
Unintended consequences. Another thing to consider.
If you’d like to learn more about this topic and other topics related to software project planning and monitoring, I hope you’ll consider attending my next class at UCSC Extension this Winter (Tues and Thurs evenings Nov 29: Dec 18) entitled “Software Project Monitoring and Control”. (http://www.ucsc-extension.edu/ucsc/) This topic (managing an outsourced job) is one of the modules in that course, and that course is one in our new Software Engineering Management program that teaches skills necessary to manage software projects from requirements to deployment.