Though arguably somewhat off-topic for CodeProject, this article examines the increasingly heated debate over technology outsourcing—in particular, offshore outsourcing of software development jobs. While this article is sure to provoke a fusillade of flames and impassioned rhetoric, the offshore outsourcing issue must be rationally evaluated by all professional software developers, as it has career implications for almost all of us.
I am merely a (very) amateur economist and experienced programmer, with free-market tendencies and a fierce libertarian streak. However weak my economics and policy background may be, I feel a pragmatic voice with in-the-trenches knowledge of the software development profession is somewhat lacking thus far in the offshore coding debate. Herein lies my presumptuous attempt to catalyze that voice.
Though it is not a new concept, the offshore outsourcing of IT work, in particular software development, has received increased attention of late from all corners, including IT industry pundits, analyst firms such as Gartner, corporations in established countries considering or engaging in outsourcing and offshore coding, many of the companies that provide such outsourcing services, as well as rank-and-file IT professionals in established countries, fearing for their jobs as they are "replaced" by cheaper labor.
Typically, the argument from the corporate perspective is thus: Offshore programmers in emerging economies like India, Southeast Asia, China, etc., work for substantially less than their US and European counterparts, while producing code of equal or greater quality. Therefore, in an economic climate that demands cost cutting wherever possible, it makes complete sense to move as much work as possible offshore.
Of course, those companies that provide offshore outsourcing services, such as Wipro, do nothing to discourage their prospective clients from taking this view. Indeed, no doubt many readers have heard management discussing this very option, as though it presents an ingenious way to get around the unpleasantly long six-month development schedule they have just been presented.
On the other side of the table, rank-and-file programmers often (but not always) take a somewhat more pessimistic viewpoint: Cheap laborers from undeveloped countries are stealing domestic programming jobs and gutting the domestic job market, much as they did to the manufacturing sector in the last century.
Given this unsettling prospect, a number of professionals adopt a protectionist stance, choosing to view their colleagues in Asia and India as opportunistic thieves and charlatans, tricking gullible management into the Devil’s Bargain that is offshore coding.
The canonical example: Manufacturing
Those who fear offshore coding, often cite the experiences of the manufacturing sector during the latter half of the 20th century. Since this particular discussion is still the subject of heated debate, any "objective" analysis which provides any insight is necessarily debatable, however the comparison is so instructive that it’s worth stepping on a few toes to examine the subject.
Basically, Japan and then China and other emerging economies began to compete with American manufacturers in the latter 20th century, producing goods in greater quantities, at substantially lower cost. These goods included not only Japanese automobiles and consumer electronics, but clothing, toys, consumer products, etc.
The cost reductions realized by the foreign manufacturers arose from two advantages: increased efficiency, and cheaper labor. In some cases, unskilled factory workers earned orders of magnitude less than their American counterparts, while working longer hours in largely unregulated working conditions.
While the human rights issue of the treatment of workers is relevant here, the point is this: foreign manufacturers could produce the goods Americans and Europeans needed, at a substantially lower cost. As a result, competitive pressures depressed the American and European manufacturing sectors, with many fearing that the developed world would become utterly dependent upon Japan and the emerging economies of China and Southeast Asia for all its worldly goods.
Of course, in the end, this did not happen. China is a large and growing manufacturing powerhouse, and Japan is the world’s 2nd largest economy, yet the US is still an economic superpower, with a substantial manufacturing industry of its own, and Japan is only now emerging from 10 years of deflation and stagnation. Thus, we must conclude that those who dismiss offshore coding as a fad, and those who herald it as the end of the world, are equally incorrect.
While comparing the offshore coding trend to the history of offshore manufacturing in this way is instructive, we will discover that significant differences exist, which prevent a simplistic comparison between the two. Nonetheless, the insight gained from the offshore manufacturing trend applies just as well to the offshore coding trend emerging now.
Though much of the negative press associated with offshore coding focuses on the loss of domestic jobs, the objective economic perspective actually yields two equally important questions:
First, what is the economic impact of replacing domestic programmers with their offshore counterparts?
Second, what is the net gain (or loss) realized by the domestic corporations engaging in offshore coding?
The @$#!%&* steal our jobs…
Adam Smith, the father of modern economics, wrote in his seminal work "The Wealth of Nations" that (to paraphrase) it is self-evident that it is more efficient and therefore economically better to buy that which one cannot make cheaper oneself. This principle is likely obvious to almost everyone.
For example, it is obviously more efficient for most people to buy flour than to grow, cultivate, and grind wheat to produce their own. Similarly, it is far more economical to buy a color TV from Best Buy or JC Penny than to attempt to construct one yourself. In both of these cases, one could probably produce the good oneself, but it would take time and money that could be more efficiently spent elsewhere, in ways that more directly benefit the economy and the individual.
According to Smith, this principle extends from individuals and households to entire countries. That is, if US consumers want cellular phones, and India can produce the same cellular phone for US$ 10 that US companies can produce for US$ 100, it is generally better for the economies of both India and the US if the US consumers purchase the Indian cellular phone.
The justifications of this assertion are ample:
The benefits to the Indian economy are somewhat obvious, as it benefits from US economic prosperity as US consumers buy more phones. In particular, the example above benefits the Indian people, as it grows the Indian economy, creating jobs, increasing demand (and thus, pay) for skilled workers, which in turn will seek to enjoy their new middle-class lifestyle by spending more in the local economy, paying more taxes, etc.
Further, the US economy benefits in this example, in a number of ways.
First, more US consumers will be able to afford the cellular phone, and therefore pay the sales and other consumption taxes on the phone. In this case, the old example of selling 1000 of something for $1 being better than selling 100 of something for $5 is very applicable, particular as it relates to the tax revenue which of course stays within the US and local economies.
Second, it forces the US cellular phone manufacturers to increase their efficiency, or close down. A more efficient manufacturer will consume fewer economic resources for equivalent output, (re)gain competitive advantage, reduce costs, and may even increase profitability. The alternative, though somewhat cold-hearted, is also positive, as it frees the resources (including workers) consumed by the inefficient and uncompetitive US cellular phone manufacturer, for use by more efficient and economically beneficial endeavors.
This contrived example applies equally well to onshore vs. offshore coding. To contrive another example, if a software company, Evil Empire Inc., can produce its software, World Dominationware, at a cost of US$ 1 million using domestic programmers, or US$ 100,000 using offshore programmers producing software of equal quality, Evil Empire Inc.’s executives have little economic reason to choose the domestic programmers.
As a result of this, Evil Empire can sell its software at a lower cost and higher profit, yielding more tax revenue, increased wealth for its shareholders, faster and more significant growth, and thus increased payrolls (though likely not including many programmers).
Thus, the assertion of this section is that Adam Smith is correct, and that his theory applies as much to wheat flour as it does to programming. While the local consequences of offshore coding may be negative (job loss and the ensuing unemployment), these can be overcome (see below), and the net result at the macro level is generally positive for both economies.
Note, however, that there are exceptions. If a country were populated entirely by programmers who had no other skills, and another country began taking their jobs by offering a cheaper product of equal quality, the country of programmers would likely suffer economically. However, this can hardly be seen as an injustice: if one cannot provide a competitive service (that is, if other countries can provide programming services for less than our hypothetical nation of programmers), one should not be surprised when one’s customers go elsewhere.
Further, at the micro level, those employees who lose their jobs are obviously not benefiting, at least initially. Though it may seem cold-hearted, the same maxim in the previous paragraph applies to individuals as well: if one demands more for the same service than someone else, it should come as no surprise when the cheaper price prevails.
In much the same way, imagine a junior programmer applying for an entry-level programming position, and demanding US$ 120,000/year. Is it a profound injustice when the employer selects a different, equally qualified candidate asking for US$ 40,000/year?
This issue of micro-level consequences and the associated solutions will be examined further in the following sections.
Offshore coding and the blessed bottom line
The previous section discussed the economic impacts of offshore coding on the host and client countries and their citizens, however the discussion was based on the assumption that domestic and offshore programmers produced identical (or at least equivalent) products, differing only in cost.
As most programmers are likely aware, this may apply to the manufacture of children’s toys and toasters, but software development is much more complex, therefore assuming equivalence of output is a convenient theoretical abstraction that has very little relevance in practice. In this section, I present a more pragmatic discussion of the costs and benefits of offshore coding, grounded at least tenuously in reality.
Corporations, executives, and other scourges
As much as we may distrust and despise money-hungry, soulless mega-corporations and the money-hungry, soulless executives who run them, we must acknowledge one thing: corporations (and their leaders) have a moral and legal obligation to make money for their shareholders. While this does not condone illegal activities ala Enron, it does condone any legal activity that stands to benefit the corporation and thus its shareholders.
Therefore, before this discussion really begins, it must be acknowledged that corporations do not have an inherent duty to their employees to employ them, to refrain from replacing them with machines or cheaper employees, or to subsidize inefficient workers. While many will argue that corporations have a social obligation to the communities in which they operate (and to an extent they do), this does not forbid the lawful use of more efficient resources to perform the same tasks.
That said, an exception to this rule arises when one considers unions. However, a corporation’s obligations to its unions are not inherent, but rather contractual. Similarly, if I could convince my employer to sign a document obligating her to employ me for the duration of my life, and barring her from ever questioning my efficiency or value, she would then have an obligation to do so. Of course, more likely she will fire me and find an employee who is not so unreasonable, which is also her right.
Having established that corporations serve their shareholders and not their employees, let us now examine the practical costs and benefits of outsourcing.
In a free-market economy, the market decides who wins and who loses. While factors like quality, cost, and availability influence market success, so do less tangible factors like public perception and reputation.
While offshore coding may make great financial sense, it may cost more in public opinion than it saves in dollars. In general, the populous does not like to lose jobs to foreigners, particularly when the foreigners are paid substantially less and thus undercut domestic labor substantially. This may result in a serious back-lash in the public’s opinion of the domestic corporation doing the outsourcing.
As an example, consider the (mild) outcry over the state of New Jersey’s decision to outsource welfare processing to a call center in India. From a fiscal perspective, this made complete sense, particularly for a cash-strapped state suffering from serious budget deficits. Unfortunately, if the public resents the decision enough to create a significant outcry, they may also vote (with their dollars or their votes) to punish the perpetrators.
Thus, a corporation considering offshore coding must consider the sensitivities of its customers, the public at large, and the domestic governments who are sometimes hostile to corporate interests. This may be a significant concern for corporations that deal directly and visibly with the public, and virtually no concern for corporations with a very low profile.
Closely related to the issue of public opinion is that of employee morale. While we’ve established that corporations do not owe continued employment to their employees, corporations do have a selfish interest in keeping employee morale high. Not only does high morale improve productivity, it reduces turnover, and likely increases access to qualified workers interested in working in a positive environment.
Thus, when a corporation announces it will replace 10% of its domestic workforce with offshore labor at 1/4th the cost, morale likely takes a hit as employees realize that the concept of a corporate/employee relationship as being familial or custodial is largely fictional, and a frequent casualty of budget cuts and financial pressures. As a result, their loyalty to the corporation may wane, increasing turnover and decreasing productivity. Thus, the cost savings realized by moving the 10% of the workforce offshore, may be countered by a cost increase from the other 90%, as they reduce output and increase turnover, and a loss in competitive advantage as highly qualified workers go elsewhere for their interviews.
Programmers as cogs
During the industrial revolution, as manufacturing grew into an economic powerhouse of an industry driven by mechanized engines of automation, skilled tradesman became increasingly irrelevant. Instead, cheap and easily exploited immigrants and children could be put to work en masse, with minimal skills or training, and replaced just as easily.
Of course, this enabled the economic and social developments which made the world what it is today, but it also enabled business leaders to view their employees as cogs, which are a minor hassle to replace, but nonetheless easily replaceable by any other cog.
Unfortunately, this mindset seems encoded into the genetic material of managers and executives everywhere. As programmers know, the reality is not so simple. Even assuming that programming is a single discipline, without specializations in networking or GUI or databases, the cold fact of the matter is that the best programmers are in some cases hundreds of times more productive than the worst programmers, and obviously the best programmers are much rarer than the worst.
The result of this reality is that comparing two programmers on the basis of their cost is utterly meaningless. What good is a programmer at 1/10th the price, with 1/100th the productivity?
That said, it is unfair to say that all offshore coders are less capable than all domestic coders; the point is, a programmer’s capabilities--as well as her cost--must be considered when determining value. This is a very difficult problem when hiring domestic programmers, and becomes virtually intractable with offshore coders.
Without some reliable metric (lines of code per dollar per day doesn’t cut it), the ROI of offshore coding cannot be reliably established. Relying on cost alone when making the decision is dangerously close to abdication of fiduciary responsibility, which is not a phrase executives like to hear.
Projects as blueprints
The previous section’s discussion of the origins of the programmers-as-cogs mentality is equally applicable to the related fiction, projects-as-blueprints.
In an industrial setting, a project is typically the design and production of a product; some tangible, physical thing coming off the assembly line. Once a skilled engineer designs the product and produces blueprints or schematics, the unskilled cogs can set to work and produce the product.
Obviously, software is not so simple. Bad programmers can build worthless software from masterful designs, and good programmers can (sometimes) rescue abysmal designs through masterful programming. In either case, the skilled labor is distributed evenly across the product lifecycle, and is not concentrated on the design phase as is the case with manufactured goods. Further, the design and production teams are not decoupled; each must interact constantly with the other, to ensure the product being built and the product being designed are indeed the same product, and the best product it can be (and even that the product is what the customer actually wants).
As a result of this tightly linked lifecycle, it is difficult to find one point at which the skilled laborers are done, and the offshore cogs can take over and begin production. Therefore, the offshore coders must actually be an integral part of the product lifecycle, as skilled and competent as any other participant.
Having established this fact leads us to the next point:
Assume for this discussion that all offshore coders are fluent speakers of the domestic language. Not only is this often the case, but a language barrier is the least of the communication problems associated with offshore outsourcing.
Given the realization from the previous section that offshore coders must be as much involved with a product as the designers, stakeholders, end users, and testers, it becomes clear that offshore coding does not mean requirements can be gathered, e-mailed across the globe, and expected to come back as a polished product.
Instead, the same bothersome collaboration and feedback loops used by domestic development teams must extend to the offshore coders. This is complicated by the distance (as great as telecommuting is, when it comes to meeting to discuss development projects, there’s no substitute for being there), time difference, a lack of understanding of domain-specific factors, and the usual problems of wasteful, unproductive meetings, conflicting goals, poorly-defined objectives and stakeholders, shifting requirements, etc.
These problems are significantly amplified when agile methods such as eXtreme Programming are employed to develop in so-called "real time". One of XP’s principles is that the design forms from the code, and that frequent deliverables yield iterative user feedback which leads to an ad-hoc discovery of requirements, and management of requirements changes. Therefore, "real time" communication between all participants in the development process is critical; when communication breaks down, risk increases and the probability of success plummets.
Thus, those considering offshore coding must realize the following caveats with regard to communications:
First, the only cost savings will be the cost of the programmers, testers, etc. that are moved offshore. Project managers, internal QA staff, support and maintenance personnel, and project stakeholders stay in-country, and stay involved.
Second, collaborative barriers actually increase management overhead, likely adding to the time required by stakeholders, end users, and often highly-paid internal architects and designers. This must be subtracted from the cost savings.
Third, offshore coding does not eliminate the most intractable elements of software development, including the project management principles that are routinely ignored in domestic development projects. Indeed, when it comes to shifting requirements, the collaborative barriers and de-coupling of developers from the rest of the lifecycle associated with offshore coding actually increases cost and hassle.
Support and maintenance
If programmers did their jobs perfectly, users’ requirements were immutable, and competitive pressures didn’t exist, changes to software would be unnecessary. Sadly, programmers fail, users are fickle, and competition is fierce, therefore software must not only be maintainable, but downright agile.
In addition to the development-time agility problems described above, support, maintenance, and agility after initial development is concluded, are equally important to the long term success (and therefore justification) of any development project. When software is developed in-house by domestic programmers, even if little documentation is developed, it is reasonable to expect the original developers or their successors will be available to support and maintain the product, and modify it in more significant ways as business requirements change.
With outsourced development (offshore or domestic), however, the client is much more insulated from the original developers. In all likelihood, ongoing maintenance and support will require an ongoing contract with the offshore coders, with enhancements likely requiring additional funds. Even in the face of such contracts, the original developers may or may not be available, and if not, their replacements must consume valuable (and expensive) time ramping up to make the changes. Further, the attendant communication problems described above are associated with this effort as well, particularly with major enhancement efforts.
For the reasons described in the previous section, it is likely that once the offshore coding decision is made, it "stays made", as moving back in house from offshore will be more expensive than staying in house in the first place.
Due to the structure of the outsourced development effort, the client’s choices end up quite limited. Since the client is decoupled from the individual developers on the project, the client’s view of the offshore coders is an aggregate one; thus, they are either all competent and capable, or not. Thus, a client’s options are to stay with the offshore coding company, or not. By contrast, an internal development team is slightly more transparent, with incompetent individuals more likely to be discovered and replaced, without replacing the entire team and starting over.
Thus, corporations considering outsourcing must realize that if things go sour or don’t turn out, it will be difficult to back out.
When an application is built in-house, it makes sense to perform a code audit for a number of practical reasons, of which one is to ensure the system is secure against accidental security bugs and deliberate back-doors. Unfortunately, this valuable feedback/QA technique is often skipped, for various and irrelevant reasons.
When offshore coders have been employed, code audits become not only a good idea, but mandatory. While a domestic employee might undergo a background check, or face criminal penalties for deliberate subversion of software, offshore coders are usually not vetted for background anomalies, and certainly are not subject to domestic civil and criminal law. Further, the fact that offshore coders work for less money suggests that unscrupulous offshore coders can be compromised for less money.
As a result, a responsible project manager should not accept code from an offshore firm without a comprehensive code audit. Of course, the code audit must be performed by a competent programmer specializing in security audits, which adds substantial cost, and substantial time to the development lifecycle. By contrast, a domestic development team could be used to perform its own code audit, which, combined with background checks and the pain of civil and criminal penalties, mitigates security risks for far less time and money.
What’s left of the bottom line
If, upon consideration of all of the above issues, quantitatively as well as qualitatively, the bottom line of the offshore coding spreadsheet is still black, it likely makes good sense to engage offshore coders in some capacity.
The key point to take from this section is this: the question to ask is not "is offshore coding wrong or bad?", but rather, "will offshore coding make my shareholders richer?". However, from the length of the previous section, and the extent of the caveats, it should be clear that performing a rigorous analysis is complex and time-consuming, and the answer may very well be "stay in house".
What not to do about it
In this section, several proposals are evaluated which have been floated by those who are in some way against offshore coding either as a trend or a practice. For each proposal, one or more reasons are provided explaining why it is a bad idea and should be ignored.
Unionize domestic programmers
For a number of years, some domestic programmers have been calling for unionization, or at least the formation of some sort of trade group providing advocacy on behalf of domestic programmers. Ostensibly, the objective of such groups would be to protect domestic programmers from exploitative corporations, corrupt governments, and job-stealing foreign programmers.
The fundamental flaw with this reasoning is the implied belief that domestic programmers need protection. In effect, those who advocate unionization or trade group organizations are accepting the "programmers as cogs" principle, and then asserting that domestic cogs are special and should receive contractually obligated rights and privileges.
In reality, a programmer’s union is absurd (and would no doubt fail when a majority of programmers refuse to join). A trade group makes sense (indeed the ACM and the IEEE could be counted as trade groups), but rather than advocating protectionist policies, a useful trade group ought to focus on helping its members differentiate themselves in a free market with training, certifications, and other (somewhat) useful benefits. Both the IEEE and ACM provide these benefits in some form.
Adopt protectionist policies
Failing a domestic programmer’s union, the disenchanted programmer labor movement often calls for various forms of protectionist policies. From the almost practical (though utterly indefensible) tax penalties for use of offshore coders, to the utterly absurd classification of offshore coding or the code it produces as an import subject to tariffs and taxes, the idea is to distort the free market calculus that makes offshore coding cost effective, until offshore coding becomes utterly unjustifiable from a financial perspective.
Apart from the argument above, which establishes the economic benefits of any net gain in efficiency--offshore coding included--a more fundamental argument against this policy exists: distortion of market forces towards a particular aim almost inevitably leads to a net economic loss. A recent example here in the US is President Bush’s protectionist steel tariffs, which did little to protect domestic steel producers from foreign competition, and seriously injured those domestic manufacturers who depend upon steel to produce their products, which became absurdly expensive in the face of the rapacious protectionist tariffs.
Effectively, advocacy of protectionist policies is attempting to cure the symptom, not the affliction. If profit-motivated corporations are moving programmer jobs offshore, and domestic programmers don’t like it, they are better served focusing on competing fairly with their offshore counterparts (perhaps not on cost, but on overall value, which as stated above is what really matters), and articulating their advantages over offshore coders.
What to do about it
While the previous section dealt with bad solutions to the offshore coding "problem", this section outlines some strategies that make sense, are practical, and don’t involve punitive market distortion.
The most fundamental strategy in dealing with the offshore coding trend is to adopt a productive attitude. Those who feel as though corporations moving jobs offshore are somehow wronging their employees, or that governments allowing offshore coding to continue are betraying their obligations to their citizens, utterly miss the point.
One must realize that as an actor in a free market economy, market forces determine one’s success or failure as surely as they do a large corporation. That is, each individual must realize that she is in competition with other individuals pursuing the same opportunity, and upon that realization, do what is necessary to distinguish herself from the competition.
Many programmers in particular find this distasteful; indeed, they became programmers because the business stuff was of no interest to them. Unfortunately, there is no choice; actors in a free market must take responsibility for their own success or failure, or face financial ruin. This point bears repeating: Fundamentally, each individual must take personal responsibility for his or her own success, and do what is necessary to ensure it.
In the Economic Perspective section, a discussion of the pros and cons of offshore coding is outlined. The industrious reader will likely see numerous opportunities to differentiate himself from offshore coders, in such a way as can be clearly articulated to management. This type of thinking is mandatory in a free market system; one must look for opportunities, and seize them when they arise.
Of course, some executives and managers may be unconvinced by a particular value proposition. They may be reading breathless articles in trendy business magazines about how their colleagues are saving millions by outsourcing everything except janitorial services to India. However, if they fail to consider all of the caveats above, and fail to recognize a superior value proposition, they likely will be rewarded accordingly. In particular, their competitors may not be so blinded, and may represent another opportunity for the industrious and differentiated programmer.
Arguably, education is a form of differentiation, but I feel it nonetheless warrants explicit mention.
Education can take many forms: college, certification classes, or self-edification projects undertaken to learn a new technology or product. In any case, the underlying theme is the constant learning and development of new knowledge and skills.
The industrious engineer will realize that education must be on-going, regardless of economic climate. This mindset of individual responsibility is extremely important for those who wish to run ahead of the pack. By constantly growing and developing, your value is increased, as are your horizons broadened, and perspectives expanded. When considering education, you needn't limit yourself to technology, but rather you should focus on that which is interesting or exciting, be it a book on C#, a security certification, or a master's degree in economics.
Advocate pro-business policies
A number of factors determine an employee’s cost to an employer, only one of which is salary. Factors like social security, unemployment and worker’s compensation insurance, various OSHA and Department of Labor requirements, and state and local regulations all burden US employers. Other developed countries impose similar burdens. Cost of benefits, like soaring health insurance costs, only add to the load.
Further, while developed countries for the most part have clearly defined commercial laws, the patent, trademark, and copyright laws in the US and much of Europe are largely broken from a technology perspective, leading to unnecessary and expensive use of patent attorneys in defensive patenting strategies, and attacking and defending absurd patents as a means of competitive pressure.
Finally, as much as anti-globalization and socialist activists claim the industrialized world governments are bought and paid for by sinister mega-corporations, the reality is that government has always had a love-hate relationship with business. From the draconian and incoherent US Securities and Exchange Commission, to the rapacious taxes foisted on domestic corporations to punish them for their success, businesses are often treated as second-class citizens by national and local governments that fail to recognize the source of their own economic prosperity.
All of these factors together must be considered when a corporation is evaluating its costs of doing business in a particular country. If citizens of the US or Europe are displeased that this business calculus points to India as a better host, a wise recourse would be to focus on making the US and Europe more appealing, rather than flogging the evil corporations until they once again prefer their domestic tormentors to India or China.
Roll your own opportunity
A fellow free-marketeer, John Cardinal, reminded me of what is perhaps the most compelling "niche" of all: founding and developing your own company. I have done this with Cryptos Mobile Systems, my current company, as have countless other programmers and engineers before me.
The advantages of this approach are several, including:
- Complete control over business and technology; the only stupid fads you suffer are those you embrace yourself
- Potential for substantial wealth; as a founder, you will typically hold a substantial equity stake, and stand to benefit financially if your company is successful
- Relative autonomy in terms of work style, hours, etc., although a startup typically requires absurd amounts of work
- The profound personal satisfaction of controlling one's own destiny, for better or for worse
- Appealing tax perks, like righting off equipment, education, business travel, etc.
Of course, this is also perhaps the most dangerous of all solutions, as job security is virtually non-existent, and you will often not know where the next month's mortgage payment will come from (if at all). Start-ups also require an absurd amount of work, coupled with constant stress, and disturbing uncertainties. To be sure, many readers will not have this option at all, for reasons of financial position, familial obligations, etc. For those who can, however, starting one's own company must be considered.
Another option for those of you readers who have been recently laid off, and have a few months' savings before they have to work again, might be to form your own company, to pursue an idea for a product or technology, or simply to learn about some new technologies or products. With the help of an accountant, buy whatever technology items you need through your business, including education or certification if necessary. While shopping around for your next job, continue to work on your company's project, learning and growing all the while. You might also consider drumming up short-term contract work, run through your company.
Not only does this approach allow you the freedom to develop new skills while between jobs, but it exposes you to the adventurous life of an entrepreneur, without all the attendant risks. Further, should your quest for work drag on, your resume will nonetheless quite honestly reflect contiguous employment, under the banner of your company. This is also a great way to develop professional experience in a technology or product which you haven't otherwise had the opportunity to apply.
Regardless of the approach you take, you are well-advised to at least consider the entrepreneurial route. It is a road fraught with peril, but the potential rewards (financial and otherwise) are substantial.
Find the niches
Taking into consideration the offshore coding caveats above, the industrious reader will realize that offshore coding is completely impractical for a number of scenarios, a few of which are examined below. By focusing on these niche areas, a domestic programmer may find areas where offshore coding does not offer a compelling value proposition.
Small, lightweight projects
The more structured and process-heavy a project, the easier it is to treat individual actors as cogs. It should come as no surprise, then, that offshore coding firms are often very adept at software development process, such as CMM. As any veteran of a top-heavy process knows, heavy process is completely inappropriate for small development teams, as the overhead is not commensurate with any positive gains.
Indeed, small teams often benefit from more ad-hoc, "real time" processes and quasi-processes such as XP and other agile methods. Being as they are more organic and fluid, attempting to use these processes while outsourcing development to offshore coders is very likely to end in an amusing yet spectacular failure.
Therefore, domestic programmers may focus more on small development teams, which are often encountered within startups, or small business units within larger organizations.
For many of the same reasons specified in the previous section, early-stage startups are usually not good candidates for offshore coding. Seldom does one read about a 12-man startup announcing it has outsourced 50% of its three-person development staff to Bangalore. Remember, offshore coding becomes appealing as one reaches a certain economy of scale, which is well above three programmers. By focusing one’s energies on startup opportunities, offshore coding is less likely to pose a threat to one’s ambitions.
For US programmers, the US government has an extensive need for programmers with US citizenship (visas, greencards, etc. are not enough) and security clearances. Other developed countries have similar programs. While obtaining a clearance is a difficult and time-consuming process, the result is strong job security, not only as a government contractor, but also later in the private sector. As security becomes more of an issue, the dubious security of offshore coding will make trustworthy domestic programmers all the more valuable.
While some programmers will consider this option schismatic, the sad reality is that programmers will always be subordinate to management, even if those programmers are offshore. Indeed, offshore coding requires more in-house management, not less.
Focusing on developing one’s management credentials, as well as maintaining one’s tech skills, will add value in any market. Focusing on management of a distributed workforce will render one even more qualified to manage offshore coders.
Due to the gap between offshore coders with general programming knowledge, and the displaced in-house programmers with extensive domain-specific knowledge, so-called business analysts are required for any successful offshore coding engagement. Along with architects, business analysts help define the project, which is then executed by the offshore coders (at least in theory). While outsourcing programmers may make sense, outsourcing strategy almost never does, therefore internal employees with a solid grasp of the domestic corporation’s business, goals, problems, and strategies and possessing the technical skills required to bridge the gap with offshore coders, are likely to remain extremely valuable.
If the prospect of "becoming a business guy" just so one can remain employed is distasteful, a wait-and-see approach may not necessarily be cataclysmic.
While Indians may work for 1/4th what Americans or Europeans make, they make about the same in terms of quality of life and percentage of average per-capita income. That is, Indian programmers making US$ 20,000/year aren’t struggling in poverty as one making US$ 20,000 in America would be; rather, US$ 20,000 buys a great deal more in India, primarily because India is an emerging economy.
However, as the doomsayer’s predictions of millions of IT jobs moving overseas come true, the Indian economy will grow and strengthen, such that US$ 20,000/year won’t be enough anymore. Indeed, already India is facing a shortage of programmers, and China’s burgeoning middle class is becoming increasingly restive and ambitious.
Assuming the US and European economies stagnate, as India and China grow and prosper, the business case for offshore coding will weaken. How long this will take, or how much India or China have to grow before this happens, is not clear. However, given all of the caveats of offshore outsourcing, the net savings is not likely to be close to 75%, which means that as the cost of Indian programmers increases from 1/4th a US programmer to 1/2 or 3/4ths a US programmer, the net cost of offshore outsourcing is likely to become sufficiently high as to negate any potential savings in labor costs.
Of course, if the US and European economies do not stagnate, one ought not worry, as an industrious individual should be able to find rewarding work in a growing economy, regardless of offshore outsourcing pressures.
This article has made some potentially inflammatory but ultimately defensible assertions.
First, outsourcing work to offshore workers who are cheaper and equally capable as domestic workers makes good financial sense, and is not inherently immoral.
Second, corporations owe no duty of loyalty or employment to their employees, and can (indeed, should) seek the most efficient and effective way to perform a given task, regardless of physical location.
Third, offshore outsourcing of programming jobs is potentially perilous domestic companies' bottom lines, and must be considered in terms of total qualitative and quantitative cost, not simply the US$ 20,000/year the Indian programmer makes.
Fourth, an industrious domestic programmer concerned about competition from offshore coders must resist the temptation to sulk and blame others, and should instead endeavor to differentiate himself such that offshore coders cannot compete with him.
Hopefully, the reader is at least enraged, or at best inspired to action, as a result of reading this article. Those who wish to deny the realities of free market economics may return their heads to the sand, but they do so at their own peril.
- September 30, 2003 - Initial publication
- October 26, 2003 - Updated to reflect more accurate Indian salary numbers (thanks Nishant S.), and to discuss the advantages and disadvantages of forming one's own company to avoid the outsourcing axe (thanks John Cardinal)