Building a software team with international freelancers

Abstract

This article offers a comprehensive discussion on the inevitable tide of using more freelancers via platforms such as Upwork in software development. Based on the author's success stories, this article covered the opportunities, challenges, ethics and a working model of using freelancers in software development.

Particularly, it introduces a ground-breaking new Real-Time Distributed Software Development methodology, which removes the biggest roadblock faced by software developers when considering using freelancer programmers.

What a story!

I was once developing a medical cloud that needs an advanced JavaScript component to display and annotate heart EEG graphs, which we don't know how to write, so I suggested to get a freelancer to do it. I found one called Neil in UK on a freelancer platform called Upwork with very good track record. He quoted AU$4000 and four weeks. But the CEO felt UK was too far from Australia, so he found a local consultancy firm. The contract was signed at AU$13,000 to deliver the component in three months.

After the coding started, I realized that that firm also does not have programmers who can do this, and they subcontracted the work to a third firm, taking a big cut for doing nothing. The development dragged on for six months. The developers in the third firm did not read requirements and emails and never answer the calls. I spent tens of hours in emails trying to explain why their delivery did not meet the requirements, but every next release still had problems. Both sides got impatient over time. Eventually they said: "We no longer want the remaining half of the payment, and we stop here."

With deadline fast approaching, the CEO asked me, "Ask that freelancer Neil if he can finished it in two weeks." Neil said: "Yes, $6000 in two weeks."

At the end of the two weeks, Neil delivered. I communicated back to him for a small issue. He fixed it in the same day. After that I never contacted him again. Customers were impressed with the sexiness of that ECG graphing component. I wrote Neil a five-star review on Upwork.

I have since worked with freelancers around the word, from Estonia, Ukraine, India, Pakistan, Europe and US, to develop web components, mobile apps, logos and book cover. All jobs were delivered in time, with very satisfactory results, and all the coding jobs costed a fraction of what could have been charged by local consultants.

The benefits in using freelancer programmers

1. Better coding quality

  • An employer can leave a rating and review about the quality of the freelancer’s work on the freelancer platform. Bad ratings not only look bad, but also cause the freelancer’s visibility on the platforms to be reduced. Therefore, freelancers have a much stronger motive to achieve excellence than those hired as a conventional full-time employee.
  • During the negotiations, all of the freelancers I hired agreed that, if they failed to produce an acceptable quality or they had too much delay, I could pull the plug and pay nothing. This imposes much lower risk on the employer than hiring conventional employees. However, I have never pulled a single plug. Instead, I ended up paying 10% bonus on 95% of my projects, because those who had the confidence to agree on this term always did superb jobs.

2. Shorter time to market, better adapt to fluctuating work load

  • There is a much larger pool of talents globally than the local job market.
  • The time needed to source a freelancer is in days if not hours, while that to source a full-time employee is one to two months, including four weeks of notification.
  • Freelancers tend to voluntarily work for longer hours so that they can finish as many jobs as possible. This means shorter time to market.
  • A software house can adjust their head count on a daily basis.

3. Lower cost

  • Employers only pay the freelancers when they are needed.
  • The upfront cost to hire a freelancer on Upwork is zero, while that to hire a conventional employee is thousands of dollars.
  • Talented programmers in developing countries charge a fraction of those in developed countries.

4. Happier employee

  • Freelancers with talent can make a living wherever they are - even if there is no software industry in their country.
  • Freelancers have full control over their time, and they do not need to be stuck in traffic in the rush hours.

The challenges

There are some challenges and concerns which prevent software managers from harnessing the benefit of freelancers:

1. Communications issue

Communications is one of the critical factors that decides the success or failure of a large project. The freelancers may be thousands of miles apart who have never met each other. They cannot go into a meeting room and sort out issues on a whiteboard.

2. Intellectual property concerns

A large software project is usually made up of many components. For the project to compile on the freelancer's PC, he has to have all the components. Giving all of your intellectual properties to someone in a different jurisdiction is a great and often unbearable risk.

Luckily, a new ground-breaking and patented SkyBridge® Proxy DLL technology solves this problem.

Mary lives in Australia and Peter in the US. They work for different software companies. The two businesses are collaborating to develop a software application. Mary is coding component A and Peter component B.

Using the SkyBridge® Proxy DLL technology, they don't need to have each other's code, and yet they can both compile and run the application.

When the application is run on either Peter's or Mary's computer, the source code on both computers are executed in real time, as if they are on the same computer.

There is little learning needed. Mary and Peter each needs only three to five minutes to download and configure the SkyBridge SkyBridge® Proxy DLL environment. That's all. Their code doesn't need to be contaminated by extra code such as special SkyBridge® attributes to facilite this Real-Time Distributed Software Development.

See details.

3. Ethics

  • Is it right to give the job to people in another country, instead of your local community?
  • Is it ethical to pay a quarter of what you would have paid to local consultants to the developers in a poorer country?

I don't think readers need my two cents over such big topics. However, if you ask the freelancers I hired in Estonia, Ukraine, India and Pakistan, they would tell you that they greatly appreciated the money I paid them, which they would have had no way to earn on their local job market.

I do not envisage a software house with a single software development manager and 20 remote freelancer programmers. Instead, there should be a core team of local developers, working with a much larger team of remote freelancers.

This way, using freelancers does not necessarily mean that, instead of hiring 20 local developers, you hire 3 local ones and give the 17 jobs to freelancers in other countries.

Instead, it enables you to undertake a much larger project that requires 100 developers with only 20 local developers whom you are able to find on the limited local job market.

4. Regulations

Medium to large organizations in developed countries such as Australia may have strict HR regulations that may prevent them from hiring remote freelancers. However, when there is a need, a great opportunity to benefit everyone, the regulations need to and will be changed to adapt to the new trend.

A working model

A software development project can be conducted by a local team which consists of architects, programmers and testers.

  1. The local team creates detailed software requirement specification, the software architecture and software design documents.
  2. They then decide what components can be carved out and outsourced to remote freelancers.
  3. Local programmers start coding.
  4. For each outsourced component, the local team creates the detailed water-tight requirement spec, like the one I gave to Neil, and decide the skill sets and the levels of skill sets needed.
  5. The team lead finds freelancers on platforms such as Upwork.
  6. They create online source control projects on platforms such as GitHub. They may also employ SkyBridge® RTDSD so that they don't have to share their source code with the freelancers.
  7. The requirement specs of the outsourced components are given to the freelancers, agreed payments are paid into the escrow accounts, and they start coding.
  8. The local team creates automated software testing code and manual testing procedures that can be used to verify and validate components both coded internally and outsourced.
  9. When a freelancer finish his/her work, it is verified and validated. When accepted, the fund in the escrow is released.

The cost of missed opportunities

Suppose your business makes a bid for a software development project based on the following assumptions:

  • The extra 20 developers needed will be hired on the local job market as employees. They will be ready in six weeks.
  • Each developer will work 7.6 hours each day, and be paid $600 to $800 a day.
  • The project will be delivered in 12 months.

You competitor makes a bid based on the following assumptions:

  • The extra 15 freelancers will be ready within two weeks.
  • Each developer will work an average of 10 hours each day, and be paid $200 a day.
  • The project will be delivered in 6 months.

Who will win might be obvious.

Conclusion

As far as I can see, the inevitable tide is coming. This tide is only accelerated by the COVID storm, which forces the decentralization and distribution of the work force of most businesses. I did not seen any of my colleagues face-to-face for twelve months.

Not surprisingly, my productivity increased, because I have better sleep - I do not have to get up at 6 to avoid the traffic jam. I work one hour more every day, and still have one hour more time to exercise, because I do not have to be stuck in traffic.

How much difference will it make to my employer, then, if I am in fact on a different continent?

Those who hop on their surfboard earlier will have great fun riding this tide, while those who are tardy might get their expensive business shoes wet.