Ask HN: Why don't startups outsource/offshore development if salaries are low?
I am from Central Asia, here you can easily hire really good developers for 2K$, avg 1K$ and beginners are ready to work for <500$.
Most of the companies are already outsorcing their development here and selling in Europe, US.
Most of us may think developers aren't good enough. To some extent you maybe right, but in general thats not true. Avg. developers maybe haven'n worked with AWS so far, because mostly no demand for AWS in local IT companies, catching up is no problem. Instagram owners also haven't worked with highload before gaining success.
Update: Please consider offshoring also, not only outsourcing.
Update: Reasons so far(ordered by priority, opinionated):
0. Mindset, (founders love vs contractors need) to make product
1. Not comfortable with remote workers or difficult to manage
2. High gaps in skillset
3. Time/Cultural/Language barriers
4. Low quality implementation (docs, tests, code)
5. Retained value
91 comments
[ 3.2 ms ] story [ 150 ms ] thread* Not as easy because they are not in-house.
1) Most companies are not institutionally comfortable with remote working, to say nothing of remote working internationally.
2) There exist pervasive skill gaps between talented engineers available to work at $150k per year and talented engineers available to work for $12k per year. I respect that many people wished this was not the case.
3) Many investors in the Valley, whose opinions are quite relevant given that one cannot self-fund employee salaries, are of the opinion that outsourcing development work suggests a tech company which will never achieve the path to $100 million in revenue followed by a $N billion valuation, which is what their business model counsels them to search for. They would point out "I cannot think of a single company whose product was not produced in-house in history which achieved that" and they would not be far from wrong.
4) Managing outsourced development is a skill, and its a skill that most companies and individuals suck at, and do not particularly wish to become great at.
5) It is the widespread perception in the American tech industry that BPO companies produce software whose quality is abominable and that the process of dealing with them is pathological, as evidenced by the fact that only companies which institutionally hate software and software people are willing to work with BPO companies. Many in the American tech industry do not hate software or software people, and thus would have a very high bar to be convinced to use a BPO company.
Ratio between salary ($150K vs $12K ) are too high comparing to ratio of skillset, 10x low salary doesnt mean 10x low skillset, thats just financial state in countries. A lot of guys are working at Amazon, Google, Microsoft and other big corps who took experience here, developers are not bad, they might not have enough experience.
~$300K is avg. spending for 10 developers with office and perks included annually. Compare it to $750K spending for 5developers where each of them has 2x skillset of outsorced developer just for salary and other spendings annually, which I guess will be around $1M/annually.
That's great (no snark intended) if you have a CTO who wants to move to Central Asia. Most startups probably don't.
As for the quality of developers, you will find everything across the board. The best shops in India are process driven and serious about continuous improvement and can be a joy to work with. The dirty little secret of IBM Watson and other commercial NLP systems is that it takes a small army to code those kind of things and you can get the manpower there.
I think the #1 fear about a tech company outsourcing is that you don't really control the intellectual property. This might not matter so much if you are running a two-sided market (Uber could outsource development because anybody who wants to rip them off has to go fight city hall in thousands of places) but if you really are a "tech" company you want to keep your knowledge close.
Your employees might take home your entire code base in the US, while working on-site on an air-gapped network. They can certainly do it when you're set up for remote work, almost by definition. In the US, the payoff for stealing your employer's code is low, and the risk of punishment high, but it still happens. I can't speak for non-US countries, but I would guess that most have a bit more relaxed attitude toward enforcement, especially when it would be on behalf of a US company.
If you think your IP is secure from the software developers who wrote it, you do not understand how they work. If you do not hold the loyalty of your developers, you do not control the IP, regardless of what the contracts say.
Also, many startups strive for amazing customer service, which usually means fixing issues on the spot when a customer calls in, American business hours. (I realize many remote developers are in similar time zones, but it is worth noting.)
This one person (or small local team) can then 1) drive the product 2) act as a project manager with a big workforce and 3) stop coding, start reviewing code written by the minions and 4) get them where they need to be on new tech stack etc.
Timezone issues should be minor. Even people in the US should only be in the office 1/3 of the day. You need to rethink your whole management style, prioritization-wise if you run into problems like commonly needing stuff during off peak times. (Or, just hire a rotating shift so you have a 24 hr staff in Asia).
A Silicon Valley startup /generally/ has most of their customers in the US. Both US businesses and US consumers have a cultural expectation that issues be resolved quickly within business hours, but are usually more forgiving at 9 PM at night. (For example, if I call my bank at 3 PM, I expect a resolution darn near immediately; if I called at 11 PM I would expect to leave a voicemail. In both scenarios I am equally satisfied, even though in the first I received an immediate solution and in the second I did not.)
It's not a matter of having developers on call 24/7, but in having the 8 hours they are online overlap the 8 hours that the customer base expects prompt service.
If you notified your bank of some technical issue. They would probably respond thanking you and telling you that they would look into it. I would be very surprised if they followed up with you to tell you when it was fixed (although, that would be great service)
Edit: just to add, the software dev on site can review customer services logs asynchronously, he shouldn't need to be the one actually working the customer service queue
most of the times, I work _with_ the client's in house dev teams so that they can take over when we are done. I _love_ this model as everybody wins.
Key is to staff with the right people offshore.
So, if you finding someone like that, how are you going to convince them to work on your problem?
(since I didn't know)
Regarding item 3, another perspective is that a lot of the outsourcing/off-shoring happens because it is something that is not a core competency of the company. Think any ERP system (SAP, Oracle, etc.) which is basically a CRUD app on steroids. If your company doesn't make ERP systems then you want the lowest skilled bidder doing the work. Is that the case for a tech startup?
It also requires almost the same count of people to offshore the work as it does to do it yourself. You need someone who can interface with the offshore team, answer questions about requirements (if they are even asked), etc. And deal with turnover.
You might be asking why any sane company would do this then? Simply cost but also accounting rules. When a company buys a service from another vendor (like buying bandwidth) I think it shows up differently on the books than when they have an entire department of people doing that work. That entire department needs to have retirement plans, benefits, vacation time, etc. and they show up in the employee count reported to shareholders. This nuance is probably why the counter-intuitive stock price increase happens after a massive layoff.
This was the first wave of problems and honestly after the failures of BoA and several other US companies who lost billions trying to save a buck in that market, US companies are hesitant to enter that market again whole hog. They will pick up a developer or two to augment a team, but not many people are sending whole projects over anymore. Everyone has a horror story and it's enough to make most would be bargain shoppers think twice about trying to save a dollar, by trading it for risk.
The second issue is one of tribal knowledge as I call it. People conduct their lives in very different ways from Central Asia to the US. What we take for granted as common knowledge over here may be a uncommon or not even done in your culture and vice versa. When we document systems, we take for granted "common" knowledge and it does not get documented. For example I worked on a system one time for a large hotel reservation engine that had work done in India. 2/3 of the development staff had never personally booked a hotel room online. It ended up costing more to have BA's and Architects document the system, than it would have to have thrown the BA's and Architects in a room with a bunch of developers. In the end what did we do, well we sent our CTO, our BA's and our Architects to India to sit in a room for 2 months at a time until the project was a success. Basically enough from the VP's to declare victory and get the hell out.
So what does it all boil down to, cultural mismatch. As US business homogeny (I don't mean that in an arrogant sense, I mean it in a corporate culture way) and the Internets global village takes it's hold on the globe, that mismatch becomes less of an issue, but someones is going to have to take the risk to prove it out, and unfortunately the generation that smashed on the rocks in India is now in the decision making seats and not many of them have an appetite to try a do over. Especially startups where project failures or delays can kill a promising idea.
I put the word "outsourced" in quotes because I also moved to Pune. So it wasn't really "outsourcing" in the traditional sense of hiring some of "those people" and throwing work over the wall at them - it was really just building a company with people who happened to live in Pune.
It's a great way to get more bang for your buck. Indian devs are just as good as NRI devs and ABCD devs (which most companies already have plenty of) - just cheaper.
Of course, VC's may not like it.
It was best summed up to me by a very smart friend when he said, "They are great Xerox Machines." Asians are great at copying and really good at predefined applications but culturally they are trained not to see how to solve problems from the start. They copy well.
A brother of mine discovered this in treaty negotiation. He found certain Asians lack the concept of the Subjunctive or the "If" conditional. This means that while they may use the If statement well in programming they are limited in concept design based upon contingency. This poisons the development in almost every respect. A startup is by nature the "What If" team of industry. This pretty much prohibits the Asians of Asian culture from the process. This is why their children raised in the USA express their native genius and do very well.
If you think price is the issue you bet it is! But buying an "If" thinker is impossible at any price. If you in Asia want to make use of your cheap programmers learn to be "If" thinkers and you will make your own startups there in Asia!
"They"? Good job over-generalizing one billion individuals.
I have no idea how correct their representation of the situation there is, but from what I have heard, because risk taking isn't valued that highly within Asian culture, they tend to be excellent executors but not always that great at thinking up creative solutions to various problems.
Obviously, you have smart people everywhere who achieve amazing things. But in itself it's no surprise that risk taking is valued higher in certain cultures (i.e. American) than in others.
It's often very subtle but plenty of things where a relatively small amount of investment would have a great ROI but it just isn't done because no-one else is doing it and it works just fine without.
People who are comfortable making such mass generalizations I wouldn't deem intelligent.
I've worked with every arrangement of developer mgmt on websites I've built. Inside, outside, agencies, freelancers, directly managed on agile teams, separate departments on semi-waterfall teams. Outsourcing works best when you have a lot of predictable work to do, for example (these are from my direct experience)
1) upgrading a CMS in an environment with lots of custom app dev. (Say what you will about how much it makes sense to write custom apps in a CMS; I agree with you). When we decided to prioritize the upgrade over new work, we got outside devs to work alongside the local agile team, to do the more predictable, less troublesome work.
2) Retrofitting secure forms processing onto an existing CMS where (to reduce attack surface) the secure site did not run inside the CMS, but used HTML exported from the CMS (for design/nav elements etc.). I actually think this would have been better with internal staff, but the one-off nature of the project meant that hiring FT was not possible.
I just don't see running a startup that either of these situations (or their analogues) will come up. For a startup you need fewer staff, doing less management and more work, as quickly as possible (most of the time). You need people who get code, get security, can manage a server, can set up a heroku app, etc. WITHOUT a lot of oversight because you are just not prepared, or too busy to do it.
It was mostly a mess.
1) Time/Cultural/Language barriers are inevitably the biggest problem. Want an answer to something critical right now? Too bad, it's 2 AM there and no one's around.
You're going to end up scheduling meetings at insane hours, and someone's going to get burned out on that.
I also had the fortune of watching an email thread where someone used a colloquialism ("Move it over just a smidge") and it took three days to resolve (because of the time differences) what that meant.
2) This is going to sound super snotty, but I'll just say it: There was a definite feeling of "you're still over there because you're not good enough for anyone to sponsor you for an H1B".
In general the really talented developers I met left quickly because they found someone willing to sponsor them. What was left was... well, what was left.
The salary gap is so severe that it becomes a lot harder to say "I want to stay near my family and friends." If someone offered me 100x my current salary to move to, well, anywhere, I'd be packed in 5 minutes.
There are 2 reasons I see now:
1. Living cost ratio. Well, you might get 10x salary comparing to Asian developer, but living cost is not at the same rate. 100x is different story, but again related to living cost, you might jump in there, when you get there you might end up with 101x living cost.
2. Assume every knowledgable person will leave their homes for 10x salary, 7x living cost and they are earning 3x of money and country will end up with idiots, slow development, slow financial growth in whole country. It takes some time for developing countries to be in decent place if professionals do not leave, it takes forever to be in good place if everyone will leave just for 3x or maybe 10x.
I knew this was going to be brought up, but it's not enough to overcome the monumental salary gap. Your example of developers earning "$2k" just made me think that I invest $2k a month, not even what I save in total each month.
The living cost is obviously much different. There's still really just no comparison, in terms of net compensation.
> Assume every knowledgable person will leave their homes for 10x salary, 7x living cost and they are earning 3x of money and country will end up with idiots, slow development, slow financial growth in whole country
That's all well and good, and you're right, but the individual ends up being much better off by leaving. Brain drain, as it's called.
Rhetoric like "do it for your country" is good in theory, but individuals who leave have an opportunity to help themselves and their families out immensely via monetary gain.
It's really, really hard to ignore that.
Cost of living matters. A lot.
It directly affects the kinds of things you can afford. Out here (in India), I can easily afford: house rent + groceries for a 2 bedroom apartment ( ~2000USD per year ), paying a cook to cook twice everyday ( 800USD per year ), paying someone to clean my house once a week. ( 200 USD per year ) and still manage to save up more than 50% of my paycheck - after paying 30% taxes.
Neither the places abroad offering me to move there nor any of my friends living there have these luxuries. That's why most of my friends working abroad want to come back to India "after making enough money". Especially the married folk, who are expecting babies.
Also the pay difference is really not as high as you'd think it is.Most decent companies (Google, Amazon, etc.. ) here pay you around 40k USD per year for a guy with 3-4 years experience. Most of my freelancer friends here seem to be making more than that actually.
3. The number of good developers is unrelated to the number of H1-B issued
Wow this is precious.
Not everybody wants to leave their country for more money. This is the most ridiculous comment I've seen in February.
We're not talking about $100. We're talking about orders of magnitudes of your salary. That's a shitload of money.
When you start getting into magnitudes of money like that, things like nationalities and being close to your family become extremely malleable.
If you wouldn't make that choice: great. I would, and I would bet a sizeable majority of people would be totally willing to move to another country to make 100x their current salary.
I'd even consider Arkansas.
This is the most beautiful state I've seen. I love it.
In that context, staying at home suddenly looks a lot more attractive, especially if you're aware of just how rich by local standards you'll be if you manage to build enough reputation as a remote contractor to triple your rates in future.
If I were from India, if my family had a connection to an area that went back hundreds or possibly even thousands of years to a region, if I could live similarly to how I live here on the kind of salary the job pays there, I wouldn't be in a big rush to leave either.
Would I leave this area to make 10x what I earn now? Probably. If I left for 5-10 years, I could come back and retire.
Is there any pressing or burning need? No. Not at all.
Even though I could be persuaded to go somewhere else, there are still limits to where I'd go. I wouldn't move to North Korea, even to make 20x my current income. I wouldn't move to any of the former Soviet republics. I wouldn't move to most of Central or South America. I wouldn't move to most of Africa.
I get it, for you, most of these concerns are trivial but that's simply not the case for a lot of people.
Two more things, what about cost of living? and do you know how tough it is to get an H1B unless you have studied in US. (my guess, no!)
At my job currently we have been working with an outsourced developer as all of our internal developers are always busy but we have other things we want to do. So we thought, hey we haven't tried outsourcing in a while, let's give it a whirl. The results have been on par with every other time I've used outsourcing in the past 20 years.
The end result will probably work for what we wanted it for, but the code is bad. I am not looking forward to having to support it and work with it over the next 10 years. And it's been a ton of back and forth to just try to get the code to do what we said we wanted it to do in the first place.
1) You don't outsource your core in business, so outsourcing tech is not appealing for tech startups, period.
2) Typically tech startups are more of a growth optimization problem than a cost optimization problem. Outsourcing to cheaper parts of the US, let alone overseas, usually doesn't increase the startup's growth potential.
An example from banking:
"Morgan Stanley has about 500 people employed in India doing research and statistical analysis. About 100 of Goldman Sachs’ 3,000 employees in Bangalore are working on investment research."
http://www.nytimes.com/2008/08/12/business/worldbusiness/12i...
Ups, thats my fault, lets add offshoring to the title.
2) OP's point is that you should spend less on dev and more on marketing thus, more optimized for growth(?)
I am sure this is very dependent on the company and technology. But generally every startup I have worked at has depended on a core group of developers early and they usually had some prior history or at least connection.
I can imagine this might be different for founders without a tech background... and anecdotally that appears to be true (non tech founders appear to be more open to outsourced development). That's pure speculation.
I would rather hire someone who I can meet face to face most days as you just don't get the same dialogue working remotely as you do when you're sitting on the same table. This is coming from someone who as worked as a consultant working mostly remotely for the last 6-8 years, and I did a degree remotely.
If I can't find a quality JS dev in London (it's not as easy as you would assume, but then I've only just raised money), then I'm willing to outsource portions. Still have a number of options!
The reality of a lot of development is that you, as a developer, learn about the domain in which you're working, and also grow your skills with each subsequent project you work on.
As an employer, it's desirable to pay someone to do work, and then to have that person do more work for you, and as they know the subject matter better and better and as they progress as a developer, the value they present to you grows. Additionally, this is good for the employee, as unless you're in a moribund steady-state company (i.e. so long as you're in a startup) you're there for the journey, and you develop in step with the company, and get to witness and learn a lot of stuff "at the ground floor".
Conversely, if you hire a contractor, the moment they're "done", that value walks out of the door, and if you want to do further product development, you need to train someone up, get them familiar with the existing codebase, and so-forth - and this is expensive, and if your contractor hasn't documented stuff thoroughly - you're up the brown creek without a propulsion instrument.
Seeing contractors/outsourced dev as a "cheaper" option is a false economy. Sure, it might be cheap in the short term, but it's a hell of a lot pricier in the long term.
The result of outsourcing in start ups frequently ends up with a most of misunderstanding and back and forth. Code not written with potential business needs in mind, and everything that goes with that.
It would be cheaper if it took the same time as doing locally and provided same level of quality. This usually doesn't happen. So what's saved in developer salaries is spent in founder/product manager time and delay of release.
The language barrier is pervasive even if the consultants speak English fluently. At my last company, we hired consultants from Belarus and besides a small accent there were no problems communicating with them. However, when it came to actually coding, the differences in language were more visible.
It was mostly simple stuff. the difference between an "Order" and a "Subscription". The knowledge about western addresses (we had to explain what a postal code was). You could always tell if it was one of our consultants that wrote a given piece of code.
That being said, it was effective. We accumulated quite a bit of technical debt that we later had to pay off, but by any metric, it was successful. They were very competent programmers (one was amazing!) and I wouldn't hesitate to bring them onto another project. But I would try to micromanage more.
"Indians devs are levelling [sic] up fast and I predict that in 4-5 years the quality gap will become almost non existent."
You may be correct but the Original Post is talking about now*. Also, you seem to agree that there is a "quality gap".
The reason was that Indian IT was dominated by body shopping companies that bid for grunt work and then threw quickly trained engineers at the problem , some of whom never even studied CS.
This is changing now as we have an ecosystem of smaller companies which hire better people and have better processes and incentives. It will take time for the effects to be felt but I am confident that we will improve thanks to the better exposure we have , and learning from HN and Github.
This isn't restricted to India though. Western developers should brace for a lot of competition in the years ahead. Eastern European developers are already almost as good.
But, and this is a big but: large numbers (the majority?) of those great engineers end up moving to the USA anyway. And, just as with evaporation, what's remaining is cooler than what left.
A lot of startups need to be constantly iterating. That's how they make their product. Throw something up, see what the feedback is, change it. You can't do that if the devs are not very close to the feedback. And that generally means living somewhere near the customers, with attendant costs.
1) Language barrier. Remarkably, still a major issue even in tier-1 cities in China. Not so much of a problem in India, but it's still there to a degree.
2) Quality. This is a big one. I've worked with some great developers and some really, really terrible developers. The former seem to be a rare breed. I can interview dozens of pre-screened candidates before I find someone who is any good at all. Never assume what is written on CVs/resumes as truthful until you've assessed candidates!
3) Culture. Don't underestimate the impact of this one. I'm a seasoned traveller, but working with people from other cultures can still be challenging at times. In my experience, 'face' is an issue when working with Chinese developers, and lack of directness and pro-activeness is an issue when working with Indian developers (sweeping generalisations, I know; just my experiences). These can have a big impact on your projects if you are not on top of it. Something else to consider in India is that it's very difficult to find people with many years of experience, as most people there don't see software development as a career - it's seen as an on-ramp to management positions, and there is a stigma attached to being a developer for 'too long' without being promoted.
4) Time difference. This can work for or against you, depending on what you want. I'm a firm believer than the best way to work with offshore developers is to work together, so unless one side is willing to change their working times, it's certainly a problem for me.
5) Previous failure. I've found many people have tried doing offshore development 'the wrong way', and it's left then disillusioned. Simply throwing a specification over the wall to a remote team will not work. Ever. Failure guaranteed!
I want to finish by saying it can work, if done properly. Over the past few years I've built up a team of 8 good, dependable developers in India. I've done this by working closely with them, spending time with them in India, conducting training sessions, buying Pluralsight subscriptions for them, encouraging direct dialogue and pro-activeness, mentoring, and generally spending a lot of time communicating. Of course, this all takes a lot of time and effort (and some money too!).
http://economictimes.indiatimes.com/magazines/corporate-doss...
Our founder & CTO has experience with co-founding another successful startup ($25-$50 million in revenue) with an outsourced engineering team, which I also and many of our team members also worked at.
The engineers we have employed in Kiev are very good. However, working with outsourced engineers is still very challenging. One of the things that allows us to be successful is our experience with it and what we've learned from our mistakes at our previous company. I wouldn't recommend it for your average company.
Many of the major outsourcing-providing countries have far more developers than even the US, so why aren't those outsourcing countries at least creating a ton of early stage startups?
My answer, as someone currently living in a major outsourcing providing country -- doing developer consulting is EXTREMELY opposite from making a startup, in many of the small but most important ways. Having a ton of raw developer resources, as many of these outsourcing countries have, is not the bottleneck.
Only working strictly as an outsourced developer will teach you to optimize all the wrong things.
Yes, we can find cheaper labor in other countries. Yes we can mostly overcome language issues, time differences etc. But one thing that is not insurmountable is the number of times the tech I have paid for would wind up in other peoples hands. The problem is not unique to other countries as it happens within the US too, but at least within our own legal system there are ways to protect clients and ourselves better. When dealing Internationally, the chances for a startup to guard their intellectual property and competitive advantage is far less likely.
And honestly, the companies that have been most successful in outsourcing Internationally, generally have a presence in Country. Microsoft, Oracle, GE among hundreds of others (I did this for/with GE for a time period). For a startup splitting a small team Internationally to try and save on what should be a core skillset and competitive advantage just doesn't make sense. Not to mention, the only thing of value for a startup early on is the team they assemble. If that team is not dedicated, is out sourced and worse yet, outsourced Internationally, the startup will struggle to gain the attention of investors if that is what they desire.
Last point, if you are bootstrapping then the equation (and risk profile) can change. It may be to your benefit to try and have some (IMO non-core) components of your software built offshore. Just takes some management and willingness to spend the extra time on documentation and communication. Additionally, for a well funded startup in later rounds they may choose to offshore parts of their development to help move things along because they have the ability to take some risk on there, and their core IP is already developed.
This could be solved with specialized agencies which finds/tests/interviews/guarantees code quality of candidates.