May 6, 2017

"Cheap" Outsourcing

I was reading my daily Quora digest this morning and the following post: "What did you do to make your software career better?" To my surprise and disappointment, one of the most upvoted answers was "to quit ... [because of] cheap outsourcing." And while outsourcing has had an impact on the job market, this answer is complete nonsense.

Misconception #1: "Less expense, more productivity"

This statements checks out at first glance. The reality, however, is that it is only a shallow truth. More often than not, there are complications than people realize. There are two primary reason for this:

There are two different kinds of expenses

This statement targets the most obvious of the two: compensation (i.e., salary and benefits). Without a doubt, outsourcing is cheaper because:

  1. Salaries are much lower outside the U.S.
  2. You don't have to worry about benefits
  3. If things don't work out or you don't need them anymore, you can just let them go.

The other type, however, is the one that costs you in the long run: intellectual debt. It happens in two different ways.

  1. Losing ownership of the product

The more one relies on outsourcing, the more one loses control over the actual product itself. You're not the one who built it, so maintaining / fixing / enhancing it is going to be a pain. You're either going to have to deal with a code base you don't understand, or you are stuck with hoping the outsourced talent can fix it. And if they run into issues or unable to fix it in the time you need, you're just SOL.

  1. Decaying morale / Diminishing talent

Assuming that the company has an internal team, relying on outsourcing as the primary workforce can cause morale to decay. After all, most developers are in the field because they enjoy creating something with their own hands. Excluding people who want to become managers, most developers are going to get bored and leave.

Productivity also comes in many forms

For sake of argument, we're going to simplify the obvious form of productivity: lines of code released every iteration. After all, if you managed to hire five offshore developers for the price of one, simple math would guarantee greater production. The problem with this kind of thinking is that it makes software development analogous to factories. And that could not be further from the truth for one reason: technical debt.

While it might feel like outsourcing gets the job done faster, this is often at the expense of quality and long term decisions. In other words, imagine you had someone build and decorate you a two story house in a month for half of the normal cost. Shortly after the job is complete though, you find out that water can only come out of one outlet at a time. And also, don't try rearranging furniture because they welded it to the floor.

Misconception #2: "The only way to survive is to take up the workload of more than 1 person."

I am sorry that the author of this response felt this way, but the problem is with the company / leadership and not with the industry as a whole. It doesn't matter what job you choose, even freelancers will encounter horrible clients. The difference lies in what you choose to do about it.

If you should find yourself in this situation, you GTFO. I assure you that the mental and emotional toll is not worth it in the long run. And on the flip side, I assure you that good managers who care about your well-being exist.

Misconception #3: "My salary and career [have] gone stagnant [because of] cheap outsourcing"

I'll address this statement in two parts: (1) salary and (2) career.

"Stagnant Salary"

Unless your company has some weird pay scale I'm not aware of, we are all going to hit a cap with our salary at some point. If one expects their pay to increase time just because, I got bad news for you. That is a false sense of entitlement that is only going to land you in a world of hurt.

If a higher salary is all you want, jumping ship to another company is your best bet. Or if you want pay the scales according to your accomplishments, try sales or start your own business. Outsourcing is the least of your problems.

"Stagnant Career"

This is perhaps the most absurd statement I read in the entire answer. Since when does some random developer in another continent impact one's career growth? As far as I'm aware, they do not have control over what I do with my time and my ability to learn and develop new skills.

If you feel like your career is stagnant, one of two things needs to happen:

  1. You pick up new skills to challenge your abilities as a developer. In other words, if your primary skills are HTML and CSS, maybe it's time to pick up some JavaScript. In other words, challenge yourself with something new.
  2. The environment you are in needs to change. Remember that job positions are usually malleable. Start by trying expand your role and responsibilities within the team. If that goes unappreciated, the answer is simple: leave. They have no interest in growing you, so you should have no interest in helping them grow either.

Final Thoughts

To Leadership and Management:

Outsourcing is an avenue that can help keep the budget smaller and be effective if used properly. However, I hope that the decision is made with the consultation of someone with the technical expertise. Because at the end of the day, outsourcing is often not as “cheap” as everyone perceives it to be.

To Future and Current Developers:

Countless posts and talks have said this, but software development is hard. The learning curve is never ending and the field will never be static. Outsourcing / automation / [insert new things here] is just another complication as well. Do not see these things as attempts at making you irrelevant. Instead, use it as motivation to continue growing your arsenal of skills.