29

A senior programmer of mine is paid $120k per year. Yes, he is very good and a fast coder too.

Though, is it possible for this person to be more productive than outsourcing 10 people from Bangladesh or Pakistan and pay them $12K per year?

Just wondering cause I run a software company and have been challenged with this question. As good as one person is, how would he compare to 10 people?

I appreciate any experience one can share with outsourcing and don't forget to multiply that by 10.

EDIT 1

Forgot to mention that the current $120K paid programmer is a Pakistani (migrant). So please it's not about race or where the outsourced workers comes from.

EDIT 2

An interesting proposition came regarding the programmer's age. My current employer is 44 year old age. Most of the outsourced programmers will be in their 20s. A team of younger coders vs one "old" coder?

EDIT 3

Thank you for all the comments so far. Most of the work we do are quite simple and somewhat repetitive. So outsourcing should be fine based on the comments seen. The current $120K per yer developer I have is good but like any of us he has issues. Some aluded that it might be ideal for me to let him manage maybe another 3 more developers from Pakistan cause he's Pakistani himself. But looking at his fit, he has more of the Mark Zuckerberg type personality.. timid and can easily be bullied. I'll have to work through my spreadsheets on this. But so far, all answers have been very good!

  • 2
    Comments are not for extended discussion; this conversation has been moved to chat. – Lilienthal Feb 9 at 13:47
  • So you are a bully? It seems that you are confusing politeness with timidity, and doing what the manager asks even when it is nonsense with “can be bullied”. – gnasher729 Feb 11 at 8:17

13 Answers 13

25

This question is exactly why a friend of mine almost went bankrupt with his company developing and selling a unique software for architects... He was No 1 leader in the (niche) market and thought: Lets have more features in lesser time and hired an Indian company to create the next version of his software:

The software was delivered in time, and it had all requested new features. But it was instable, crashed all the time, was slow and the acceptance at his customers was next to zero: They all moved to the next competitor.

He went back to develop himself (he had developed the software in the first place), stopped outsourcing, started paying more for experienced developers and now (after almost 10 years of struggling) he is back to position No 1.

This youtube video can be taken for software development for 100%.

Experience and knowledge in software development can NEVER be replaced by pure "coding time": 1,000 lines of code done by an experienced developer are worth way more than 500,000 lines of code done by people who rarely know what they do.

Another point: Software development is often not "dividable" in arbitrary numbers of tasks. Even in complex software you have a lot of dependencies and cannot develop on 100 libraries / parts of the code at the same time. So a big amount of your developers will sit waiting for the next free task.

And even if your development is complex enough to have 100 people work on it at the same time (this is HIGHLY unlikely as at the moment just ONE developer is able to handle it all): You need ONE person to coordinate who does what: If you e.g. organize yourself in scrum teams then there is a maximum number of members in each team (20 is seen as the very max usually) and you need someone to coordinate that 5 Scrum- Teams so that everybody has enough work.

Project managers / scrum masters / however you call them usually don't work for 12k...

And one last point: I have been the 120k person in such a project... And I had only 5 "cheap workers" in my team. I had to rewrite ALMOST EVERY SINGLE LINE of the code of the others because it was

  • buggy
  • slow
  • not expandable
  • not accepted by the customer

Simply: Don't do it... it will not work.

  • You get exactly what is asked for, and nothing more. Mediocre code quality may even mean more hours needed meaning more pay. – Thorbjørn Ravn Andersen Feb 11 at 18:35
40

I think you'd be surprised at what outsourced developer rates really are. This report on 2019 rates has Bangladeshi rates averaging at $25-$35 an hour - which is equivalent to $52,000 to $72,000 a year. Pakistan is the same.

Sure, you can probably find cheaper developers out there. But you can easily find cheaper developers closer to home. And probably about the same quality.

So those 10 outsourced developers you're paying $12,000 might produce more code than your single $120,000 home-based developer, but it's very likely going to be badly written, badly architected, buggy as all hell, and generally a nightmare for you. On top of that, you are going to have to co-ordinate with those 10 outsourced developers, and you're going to find yourself having all sort of communication issues (especially as there's a good chance they've picked up several other $12,000 a year jobs along with yours).

  • 1
    Comments are not for extended discussion; this conversation has been moved to chat. – Lilienthal Feb 9 at 13:48
  • I am not sure if I can relate to the link you have mentioned. I was a developer in India who recently moved to US for some reason. Having seen both worlds, young (<30 years) developers in India are generally paid 5000 - 20000$ per year. Managers make about 40000$ per year. Maybe cutting these middle-men/middle-women would help. (Glassdoor mentions similar rates too) – Prasad Raghavendra Feb 9 at 15:25
  • 1
    Thanks Prasad, but this is Pakistan... it's twice less developed than India, hence twice cheaper – user1034912 Feb 10 at 2:25
  • 1
    @PrasadRaghavendra You were paid that value, but the ones that link you to the employer back in the US usually ask for a way higher price. For a Brazillian example - The client was paying around $150 USD per hour, but I was only seeing $60 USD out of it. The rest was being taken by the middleman as a "fee". It was a rather... uncomfortable thing when I found out how much money they were making off of my back. – T. Sar Feb 10 at 13:25
27

In addition to the existing answers I just want to stress one thing:

Humans are not like CPUs on a computer where more is better. Coordinating development is a highly challenging task that requires expertise and effort, as well as good interpersonal- and teamwork skills.

10 programmers, each being 50% as good as 1 well-paid skilled programmer, does not equal the productivity of 5 skilled programmers.

Hire ten mediocre programmers with minimal teamwork experience, and you will end up with a huge, uncoordinated, unworkable mess as a code-base, full of bugs and unmaintainable. Hire one good one, and you will likely end up with something workable.

  • 4
    Please do not use backquotes to highlight quoted text in comments. This syntax should be reserved for code or data, not normal text. Abusing code markdown has ugly results, causes problems for parsing tools such as screen readers for the visually impaired, and is easily avoided by using italics and quotation marks instead. – Lilienthal Feb 9 at 13:47
  • 1
    Comments are not for extended discussion; this conversation has been moved to chat. – Lilienthal Feb 9 at 13:48
  • 6
    As a side note, even CPUs don't work that way. Distributing a task between multiple slow CPUs requires much more organizational work doing it on a fast one, and Amdahl's law explains how the performance gain from adding more CPUs are limited. – ojs Feb 9 at 14:22
  • This was pretty much the main point of Fred Brooks' seminal work The Mythical Man-Month. A must-read if you are seriously considering going this route. – Seth R Feb 9 at 22:39
16

Yes. A single really talented developer will beat ten cheap, disinterested beginners.

That does not necessarily mean this particular one will beat the specific outsourcer you have. But it is well possible.

First, do not underestimate the amount of overhead you get with a bigger team, and the effort to get a new team up to speed on an existing project, an existing framework or just your already existing software development standards. Your senior programmer can have a good part of the next project done by the time your outsourcers write the first line of code.

Second, do not underestimate the amount of management effort to run an outsourced software development team. This will be costs on both sides - so on your side it will take time from a project manager who is probably cheaper but not terribly much than the coder, and on the outsourcer's side there will also be a manger person who doesn't write code. Experience also shows that more iterations are required.

Third, the amount of existing knowledge about your business processes, the implicit requirements of your internal customers, the system architecture and dozens of other details that the outsourcing team will not have and that will cause issues down the line that then need to be fixed - depending on the project this can range from a time saver to a dealbreaker.

And finally, yes a senior developer will easily beat a few junior developers in productivity. The fact that for any given task, he has a vast experience of possible solutions in his head, can more reliably estimate which of those will work best in the specific situation and can implement it quickly and reliably without much trial-and-error or reading of documentation is a massive advantage.

All together, these items can well add up to enough to beat the numbers. Also keep in mind that software development does not scale linear. Just like digging a hole in your math 101, the fact that one person digs that hole in ten days does not mean that ten people can dig the same hole in one day. They'll spend most of the day standing in each other's way.

  • Can you explain why you talk about "disinterested beginners"? I cannot find this in the question? – guest Feb 9 at 18:45
8

Speaking here as a developer

I'm being paid now twice what I was being paid 5 years ago, and I'm doing things 10 (or 100) of me simply wouldn't have understood 5 years ago.

Some days I can spend many hours analysing a situation then spend five minutes churning out some code that adds real value to our product, which is fast, robust and expandable due to the analysis performed. How would you propose your 10 outsourced programmers would coordinate that analysis?

If you think you need good quality code, the quantity becomes irrelevant.

If you don't think you need good quality code, good luck to you, there's plenty good answers here already that list the ways that can end in disaster

I read an excellent comment a few minutes ago asking if you needed surgery would you rather have a $120k surgeon or 10x $12k surgeons, yeah, that one answers itself. Your software product is a very complex thing, it's not like building a wall.

  • I'd love for the downvoter to explain what they felt could be improved in my answer – Darren H Feb 12 at 15:27
7

Here's a bit of reality check.

First, you don't get a software developer in Pakistan for $10,000 a year. The salary for that developer will be more like $30,000 a year. But you can't get a developer for his salary only. You'll go through some outsorcing company who adds their cost and profit to your annual cost. So these 10 developers cost you $400,000 a year.

But that's not all. 10 developers in Pakistan are useless. To handle 10 developers, you need a project manager. Which will cost you about the same as your $120,000 developer who can manage himself. So now your 10 developers in Pakistan cost about four times as much as one good developer in your own country.

Then you are saying "productivity". What is productivity? I count productivity as amount of useful, problem free, maintainable software delivered. Outsourcing companies don't count that - they count billable hours delivered. And your outsourced developers don't count it either - they count lines of code, or story points. Quality is not something they care about. Actually, they will be discouraged from delivering quality, because that reduces the amount of things the customer (you) pays for.

With six to ten developers, with oversight at your company that is actually on to problems, you can probably deliver the same functionality. But nowhere near the same cost.

For a case where outsourcing cost a bank (Lloyds TSB) 100s of millions see this article:

https://www.theguardian.com/business/2018/jun/06/timeline-of-trouble-how-the-tsb-it-meltdown-unfolded

  • Well answered. Though $30,000 is the salary of a Senior Manager in Pakistani. Pakistan has twice cheaper living cost than India. It really is around $1000 for a good 5 years experienced developer. – user1034912 Feb 9 at 12:25
  • 1
    @user1034912 sources? – HorusKol Feb 9 at 13:20
7

tl;dr:

  1. Boilerplate coding of modules with standard interfaces is easier to outsource than custom software with proprietary interfaces.
  2. Be prepared to spend more time on specification and documentation.
  3. Provide resources to support and guide the external team.
  4. Do not be fooled by a spreadsheet with hourly wages. There is significant non-obvious overhead.
  5. Mitigate the risks.


Here are a few anecdotes from my personal experience which may help narrow the "answer parameter space".

  1. I have worked with a consultant programmer who single-handedly reverse engineered an industrial communication protocol for distributed devices and implemented a sufficient emulation (using an existing general communication library) under Windows which allowed us to perform a system test of the embedded devices we programmed in software on a PC. It was a productivity boost for testing and turnaround times and essential for debugging.

    This was something most programmers, myself included, simply could not do. It would be irrelevant whether you put 1, 10 or 100 to the task: You would not get a result.

    That's the most clear-cut case, where a replacement completely fails: A task which requires an extraordinary expert.

  2. In another company a certain task was given to a team in India. They set up meetings, specifications, everything worked very well. After a few weeks the team asked a question which showed that they had completely misunderstood the scope of the task. Like, you ask somebody to implement the database connectivity of your online store and they start implementing a TCP/IP stack which you only learn a month later when they ask about Ethernet frame sizes.

    The likelihood of misunderstandings and late corrections like that are higher between different cultures. Many Asians find Westerners rude; many Westerners do not understand that Asians are more polite and tend to avoid confrontation, accusation and contradiction. For some Asians it is important to save face, so everything is reported being fine until some material defect (like a missed milestone) appears. The Westerners probably had missed the earlier, more subtle signs of trouble.

  3. In my current company one of our senior engineers travels to the South East European home of the external team several times a year for a week or so. He answers questions, helps avoid misunderstandings like the one above, gives support with the complex build environment, promotes best practices, listens to their troubles like network connectivity and access to test results etc. and then reports back to team leaders here. In addition, there are bi-weekly telephone conferences with the external team and our team managers. External teams need a lot of care and feeding.

  4. Young developers everywhere tend to change jobs relatively often while they pursue their career. English speaking Asians may change even more often because new companies emerge, or because there is an opportunity to get a work visa somewhere else where they can earn 120k. Working for you is a reference for their next career step. Be prepared for turnaround in your team of 10. Unfortunately the most likely ones to leave are the most experienced and productive programmers, including the team leader.

Here are some more general considerations.

  1. Outsourcing works best — or works only — with exact, detailed specifications. This is ambivalent: Good specifications haven't hurt anybody yet; but on the other hand your senior engineer may already know what to do with just a few keywords because he has a system view and knows how this part would fit in. A detailed specification is part of the task which needs to be done. Once the specification is complete and correct down to a level that "anybody" can implement it, not that much work is actually left. (Some CASE tools would already generate some code for you from such a specification.) In effect, you will still have to do a significant part of the work at home.

  2. Communication with an external team will be mostly in writing, for a variety of reasons: Contractual obligations, documentation, different time zones, difficult communication via the telephone. This makes the collaboration much less flexible than with an in-house senior programmer. Your desk neighbor can simply ask you something, can focus on a feature or tool you need right now for the rest of the day and so on; this will be much harder for the external team. If the requirements change a whole list of documents will need to be revised for the external team; if it were your colleague you could simply tell them.

  3. Everything else being equal, larger teams are less efficient because of the necessary communication and coordination overhead. For a start, one of your team of 10 externals will not be a developer but a team manager, and you will need somebody in your own company who can dedicate a significant part of their workday to coordinating the work of the externals. (This will be on top of the specification etc.) This is independent of the issues relating to outsourcing in general or international collaboration in particular.

  4. "Never change a running system" should not be your only motto because that would prevent innovation; but it is a warning: Changing a way of doing things which is proven working is inherently risky. The external team may not work well together, may not actually have the advertised level of expertise, may fall apart after a few weeks or may simply need three times as long as planned. What I learned as an engineer is that predictability is perhaps more important than efficiency. Outsourcing adds some uncertainty which was not there when you were developing entirely in-house. I liked Mikesplace' advice of risk mitigation. Do not simply assume that the outsourcing will work, and don't make the future of your company depend on it.

7

Since your question is just about comparing the output of a single senior dev to 10 people who may be devs, I'm not going to go into the logistical issues.

The first and most important difference between a good developer and a bad one isn't the amount of code they can write, but the correctness of the code they send you. So, you may not want to outsource your development if you're writing something where failure can mean death, as Boeing has found out. Even if no one will get hurt if your program doesn't work, bugs that make it to production can cost your company in terms of money, consumer confidence and regulatory compliance. Your site could be compromised because of a security vulnerability that requires a simple OWASP Top Ten exploit that your senior dev wouldn't have introduced, for example. Even sites that appear to work but in fact are not accessible to persons with disabilities according to local law may land you in court. Considering the cost of bad code to every company, you may suddenly value the code your senior dev writes more than the code your outsourced devs write, even if it is less features developed overall.

It is also not necessarily the case that your senior dev is able to successfully develop fewer features in the same time as your outsourced devs. Notice that I'm not saying they will write more code - anybody can write a lot of lines of code, but what matters to your company is not the number of lines of code, but the number of features successfully implemented. Features are rarely unique, and even if they have a little unique part most of their implementation requires doing things that have already been done, either in the system or in another one. Hopefully your senior dev is senior not just because they've worked in your company for a long time, but because they're able to leverage their experience to design and write the code to implement features quickly.

6

Are these 10 programmers comparable to the 120k programmer in all aspects that are relevant to the job?

If not, then I would say no, similar to my answer to the question “Will hiring 10 physicists allow me to accomplish what a single Albert Einstein can accomplish?”.

From a business standpoint, the 120k programmer solves a lot of things for the business... will these 10 be able to accomplish the same thing?

1

Yes (but with caveats)

Regarding pay - note that if your friend's take-home pay is 120K, then his cost to the company is considerably higher - I'm not sure what those costs are in the US anymore, let's add another ~80% onto that (payroll, retirement fund, holiday-pay, cost of floorspace, etc etc). So we're looking at ~200K in costs.

Let's look at the outsourced developers - I've used Eastern Europeans, and you can get quite good quality for ~20/hour there. So let's roll with that - at that rate, your developer cost is really around 35-40K annually.

If you spend some time hiring correctly, you really can find a few (say 2 or 3) developers from that region who will absolutely write more working code than your one developer. This might push your price up however - let's pay them 50K annually - that's still around 50K cheaper than the local developer.


Caveats

The first is that good developers in non-US countries aren't stupid, they want to come to the US to work, so you'll probably either end up paying them more to retain them in their home country, or if they're particularly good you'd be advised to consider moving them to the US.

The second is that there are some cultural issues to overcome - I'm not going to get into that here - and this can cause problems with your offshore talent if you're not aware of them.

The third is that a 10x developer anywhere will be hard to replace (see "move them to the US"). Don't lose them!

Fourth the co-ordination of work can be tricky. Many companies (large) are opening tech hubs in these regions to offset this. They do this by sending local managers overseas to command the culture/organisation of these offshore regions, and by allowing themselves to bypass dubious middle-men companies and control talent directly. This yields tremendous savings and you get to really attract better talent.


Summary

If your question is just "can one person truly compare with 10" then it's really "it depends", on the one person and the ten being compared against. But you can make savings by offshoring work. This is naturally what has provided downward pressure on tech salaries after all.

  • "Good developers in non-US countries aren't stupid, they want to come to the US to work" - can you explain this more because I do not understand what you mean? In any case, I work with good developers in non-US countries and they sure as hell don't want to come to the US. While I cannot say about myself if I am good or not, I would prefer any European country (except Belarus) over the US. – guest Feb 9 at 18:42
  • what i mean is that there is always upward pressure on the price you're paying as well - that you can lose your cheaper developers to higher paying (for example, moving to the US) jobs. – bharal Feb 9 at 18:55
0

Comparing 1 good developer to 10 foreign is not a good comparison because it would be a risky approach to do such a thing. Comparing a team of 3 Western developers to 2 local and 5 offshore would be a better comparison. Because the two locals would be able to architect and QA the work and mitigate project risk in a way that could never be done with 10 offshore devs who could completely screw things up and waste 100% of the project budget. I once personally managed 3 offshore devs and I am a senior developer and the 2 year project was a success, during that same time a highly respected Business analyst from the same company, well, his offshore managed project (same offshore company) ended up being flushed down the toilet

  • Risk is a factor I didn't mention in my answer... – Peter - Reinstate Monica Feb 9 at 17:23
  • The only point I'm trying to make is it's not fair a comparison if you totally exclude a mixture of local expertise, due to project risk. You need to minimise risk first and then it becomes fair to compare. You will never eliminate risk with a team that is 100% offhsore – Mikesplace Feb 9 at 20:37
0

It's a mixed bag. Outsourcing is a great thing if you know what you are doing.

I managed a Fortune 50's key business unit outsourcing strategy for a few years. We were able to get some amazing rates and (more importantly) great commercial terms. There were a lot of benefits, too. Increased productivity with lower cost was one of them...but it's not as simple as just sending work to low cost geos. There is a lot of risk mitigation that goes into it and you need to have a plan.

First, low prices seem great but the bodyshop is going to take their usual margin. You think the sales teams are going to surrender their sweet, sweet commission? No way. This means that the workers doing your work are feeling the pain. You end up with expeirence builders who work cheap for six month and then go find a better job. Turnover is a real problem. If you just need warm bodies to crank code them maybe this is not much of a factor. If you expect people to stick around you will need to pay them a little more.

Second, your pool of cheap workers probably won't be the best quality. Expect rework and many, many hours on phone calls between 10:00pm - 2:00am if you are in the US. They will require detailed direction.

Third, the technical scope is maybe 20% of your problem. You need to really think about the business terms. How do you expect to manage warranty terms? IP indemnity? IP ownership of deliverables? Supplier's limitation of liability? Supplier's rights to terminate? Injunction mitigation/supply line protection (if you have customers that will depend on this work)? There is a whole supply chain/procurement component here that needs to be understood. A lawyer will tell you to take a hard line against risk. Practically, you need to determine where you can yield/concede "to get to yes."

If you choose to outsource, you need to spend A LOT OF ENERGY defining precisely what you need your people to do. They do not think and they won't problem solve...they're not paid to. They will take the shortest possible route to completing the deliverables in the scope as they are defined in writing. If you are envisioning something and assume that no competent coder would need basic, entry level directions to make your vision a reality, think again. "Certainly they will realize that they need to..." is never something you should be thinking. EVERY LAST DETAIL must be clearly defined.

As far as billing goes, do not agree to "actual effort", "true hours", "time and materials", or any other open ended billing structure. Your scope needs to be written well enough to get fixed cost, milestone payments, or time and materials with not-to-exceed pricing. Your supplier will bleed you dry if you just open your checkbook and agree to pay based on hours with no regard to deliverables.

If you go this route, consider hiring someone who knows what they are doing and take a lot of notes. You can manage this. It's not rocket surgery. Just skip the learning curve.

  • This answer was downvoted. I'd like to know why. Please don't delete this comment. – acpilot Feb 10 at 20:06
-5

Just wondering cause I run a software company and have been challenged with this question. As good as one person is, how would he compare to 10 people?

It's worth to give it a try. Terminate your programmer, and replace with 10 people oversea, your team will suddenly grow much larger. In the worst case, you will just have to hire another local programmer with the same salary. So... you have nothing to lose in your experiment.

10 people will of course produce you higher productivity than your single programmer, that's exactly why all Western companies outsource software development to oversea. They will write more code, test better, and work longer hours. As long as you are dedicated to spend time on managing them, why not? However, if you are not willingly to manage them, don't bother.

  • 7
    It's not true that "all Western companies outsource to overseas" - many companies prefer to keep local teams, since outsourcing brings about administrative load and other issues. Some other companies also pay the same rates for remote and overseas work. Even if they are taking advantage of wage differentials - it isn't anywhere near as dramatic as a 10:1 ratio: kelltontech.com/kellton-tech-blog/… – HorusKol Feb 9 at 2:47
  • 13
    "you have nothing to lose in your experiment"... uhm, what? You lose the domain knowledge of that programmer and when you inevitably end up having to rehire a new 120k programmer, he'll need a few month to become as productive as the one you terminated. Together with the cost of recruiting, you could easily be down 100-200k plus several month of lost development time until you're back to the old pace. I also have doubts about "10 people having higher productivity". Cheap programmers often have negative productivity where they develop something and then you spend years fixing the mess. – Morfildur Feb 9 at 9:58
  • 5
    I laughed out real loud while reading "test better". Writing good, meaningful tests is at least as hard as writing good code. – Eric Duminil Feb 9 at 11:04
  • I read an article about a company that was shortly (three months) before releasing much improved hardware with significantly improved software, supposed to get them lots of upgrade sales and other sales. They fired their developers and outsorced development to save money. Three months later the product was not ready. Twelve months later the product was not ready. 24 months later they re-hired all the developers willing to come back at much higher rates. The outsorcing company sold all their computers with all versions of the software, so they did not get anything of the 24 months work they.. – gnasher729 Feb 9 at 12:51
  • ..had paid for. Six months later the product was ready. By that time most existing customers had jumped ship, and competitors had better products. – gnasher729 Feb 9 at 12:52

Not the answer you're looking for?Browse other questions tagged or ask your own question.