Yesterday, I received yet another email from an offshore company advertising their software development services. I noticed that since last fall I am getting at least one such email every week, and this tells me that either offshore development is getting more popular or the number of offshore/outsource providers grew so fast in last year or two.
So, why is offshore app development is getting so popular? There are 4 main reasons for it: low cost of labor in countries other than the USA, challenges with hiring good developers in house, and speed of hiring remote team vs individual local developers.
Obviously, the number one reason for outsourcing software development is the high rates of US programmers compared to developers from countries like Ukraine, Philippines, Argentina, etc.
Let’s compare salaries of different types of programmers in two capitals: Washington, DC, capital of USA and Kiev, capital of Ukraine. I will use site DOU.ua for information about Ukrainian salaries and GlassDoor.com for American salaries.
To make sure that I am comparing apples to apples I used the seniority categories used in DOU.ua. They assume that Junior Engineer has less than 2 years of experience, a Mid Level Developer has 2-5 years of experience and anyone with 5 years under the belt is considered as a Senior.
The median annual salary for Junior Java developer in Kiev is $8,400, Mid Level Developer is $27,300 and Senior Java Developer is $45,600.
The median annual salary for Junior Java developer in Washington, DC is $74,637, Mid Level Developer is $86,990 and Senior Java Developer is $104,778.
Here is a table with salaries for Java, .NET, and QA Engineers
As you can see from the table above, salaries of Senior Engineers in DC more than twice higher than comparable salaries in Kiev. In case of less senior developers the differences are even higher.
Don’t forget that there are other expenses related to in house developers:
- the company must pay its share of Social Security tax
- if the developer is not remote, than she needs an office space
- no one will work for the company that doesn’t provide healthcare plan
- at least 10 paid vacation days
- other goodies like pizza on Fridays and company sponsored team building events
The best way to find a good developer is by referrals. As Steve Jobs famously said that A employees hire A employees and B employees hire C employees. Similar to this, A programmers know other good programmers and if you are a good manager you will ask A programmers in the company for referrals.
Once the referral list is exhausted the fastest way to find talent is working with recruiters. If the company decides to use retained search, then it has to pay an upfront retainer, then fee when quality candidates are presented, and a final fee when the candidate is hired. It’s a lot of money – about 1/3-1/2 of a programmer’s salary.
Challenges with hiring good developers in house
If you ask any technology executive what the hardest part of their job is almost everyone will complain about how hard is to find a good developer. And they are not talking about mythical 10x developers. One CTO was telling me about interviewing programmers and listed the technical questions she was asking.
Those questions sounded so simple to me, but she said that most candidates were struggling even with simple problems. And those candidates were prescreened by HR which rejects about 90% of resumes!
Things get even worse if the company is using a technology that is not widely used. For instance, it is very hard to find a Ruby on Rails or Node.js developer in Washington, DC area. I remember when I put Node.js as a technology on my LinkedIn account for about 6 months I was getting calls from different recruitment agencies trying to fill the same Senior Node.js developer position in Woodlawn.
How all the above is related to the topic on hand? When you are searching people in the area inside of 15-20 miles radius (I used to drive 30 miles at some point and after some period decided to search for jobs closer to my home) the talent pool is extremely small. If there are a lot of technology companies in the area and companies tend to cluster together for some reason the competition is high.
Of course, if the company’s name is Google it can lure anyone it wants by offering very high salaries, but as I noted earlier the number one reason to go offshore is saving on labor.
Now imagine if you can tap talents from any city in the world. In theory, the talent pool, in this case, is unlimited. Granted the number of good developers is significantly lower than the number of incompetent ones, but 1% of 1,000,000 is higher than 1% of 10,000.
Speed of hiring remote team vs individual local developers
Hiring is not just expensive, it is also slow. It takes months to fill some positions which companies cannot afford. The biggest advantage a company can have when competing with others is delivering solutions faster than competitors. No people, no products.
One company I know solved the hiring problem by engaging a vendor which employed 1 offshore developer for each onsite developer. They guaranteed the number of engineers they provided, unfortunately, they didn’t guarantee their quality. Anyway, in a matter of days, the software development team of about 50 engineers grew twice in size with the help of the offshore vendor.
A side note on 10x developers
There is a myth in the industry about 10x developers or unicorns. During my last job search, I talked to the CEO of the company that wanted to hire me. The CEO said that people who interviewed me called me a unicorn developer. He even put his finger on his forehead to show me that. But do you really need a unicorn?
Let’s review the assumption that some developers can produce 10 times more code than the average ones. Each person has a certain ceiling and he or she simply unable to solve problems above that level. I know my ceiling, it’s pretty high in some areas, but it is real.
So, if we are talking about complex problems some of them require a certain minimum set of skills which in most cases cannot be taught. For instance, most people can be trained to solve some troubleshooting tricks but if a person does not have certain analytical skills he or she will always stumble when facing a new problem.
I think the best analogy is the painting. If you do not have artistic skills than it doesn’t matter how long you work, you will never be able to reproduce Rembrandt’s portraits. But for some average artist (good one, but not an artist) it may take several months to finish it.
So we have people who can finish task and people who cannot finish no matter how long they try. It’s not that some people are 10 times faster, it’s really about some people able to succeed and others not. This is my opinion and I hope all this makes sense.
So, what does this mean practically? You need to know the strengths of your employees. For instance, if you make me work on UI tasks I most likely fail, but if you let me work on the backend, I will be your 10x developer.
How about Upwork?
When hiring engineers on sites like Upwork you can choose candidates from your country. If a Maryland company hires a contractor from Arizona, then technically the contractor is not an offshore hire. In this case, the contractor is onshore. But the cost problem applies to Upwork as well.
Even on Upwork the rate of a good US developer will be significantly higher than the rate of an offshore developer with similar skills and experience. And it’s not because US developers are greedy or spoiled, it’s simply because the cost of living in the USA is higher than in most other countries.
There are numerous studies claiming that the demand for software engineers will be increasing constantly in the next 20-30 years. At the same time, the number of college graduates with Computer Science in the US will not keep up with the demand.
More and more companies will be forced to look beyond their local communities when searching for good developers. So offshore software development is on the rise. Good news for developers and even better for managers with offshore experience.
I listed the reasons why offshore is so popular and why it probably will be even more in demand and you may be wondering if offshore app development sounds so good than why doesn’t everyone switch to it. I published a post where I listed all the reasons why offshore is not always a good idea.
Images used: Hoeppner, Kristina D.C. “NodeBots workshop at nz.js(con)”. Mar 10, 2017. Online image. Flickr. Feb 18, 2019. https://www.flickr.com/photos/4nitsirk/33353790885/