32

I am trying to create a web and mobile application. But I am confused between hiring developers or just outsourcing the project.

Some people say it's better to outsource your project, but when I search about other companies like Facebook for example, they have hundreds of developers. Why they didn't outsource their project?

What is the key factor that makes it better to outsource a project instead of hiring developers?

New contributor
user3486308 is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
48

If it’s a core business function — do it yourself, no matter what.

There's a wonderful essay written by Joel Spolsky called In Defense of not Invented Here Syndrome. I'll quote some of it here.

Indeed during the recent dotcom mania a bunch of quack business writers suggested that the company of the future would be totally virtual — just a trendy couple sipping Chardonnay in their living room outsourcing everything. What these hyperventilating “visionaries” overlooked is that the market pays for value added. Two yuppies in a living room buying an e-commerce engine from company A and selling merchandise made by company B and warehoused and shipped by company C, with customer service from company D, isn’t honestly adding much value. In fact, if you’ve ever had to outsource a critical business function, you realize that outsourcing is hell.

And it sounds like your website is entirely based on introducing cutting-edge, new features that no one else has. If you want to do that well, then you do it in-house.

  • Imagine Nintendo outsourcing their game's code and development.
  • Would Apple ever outsource their revolutionary design?
  • Or Renaissance Technologies outsourcing the secret mathematics behind the Medallion Fund?
  • Could Salesforce be the powerhouse it is if they outsourced their marketing and sales people? Would Facebook be as iconic if they outsourced their design?
  • Imagine Tesla outsourcing their battery production. Oh wait, they did as a short term measure, and it's not going well, and they're trying to bring it in-house.
  • And never, under any circumstances, outsource customer service. To your customers, they are you.

And these principles and examples make sense intuitively. If a contractor could sell Apple's vision and direction, or Google's scalable technologies, or Salesforce's PR, well, that contractor would make more money just by being their own company.

But DDP that sounds hard and expensive.

Creating a successful business is hard and TANSTAAFL. That's why I don't do it.

I'll edit this answer to add one point.

Outsourcing can be fine as a short term measure, but any broad aspects of your customer's experience that are reliant on outsourced labor should be considered weaknesses that need to be addressed with appropriate levels of priority. Here are some examples when it's probably ok to trust a 3rd party.

  • Are your developers behind schedule and they need to focus on features? Feel free to contract some testers for a few weeks.
  • Need some shirt designs for your online store in the next 2 weeks and the previous guy quit? Contract a designer and hold hands with them so that you're satisfied with the new inventory.
  • Your office receptionist and administration had better be direct-hires, but feel free to contract out the office cleaning services.
  • 3
    Came here looking for this answer, glad to see it. +1 – KRyan Feb 14 at 21:52
  • 5
    Great answer overall. I just disagree with the absolute rule regarding customer service. For instance, if you're Hertz and need to tow someone's car from the middle of Death Valley, it's best that you hire someone local to do it. The same for global businesses that need 24/7 customer service and that need people that are fluent in three to four languages. Sometimes, it's worth hiring that call center in Luxembourg for first level support instead of trying to do everything yourself in your own country. – Stephan Branczyk Feb 14 at 21:52
  • 11
    The first example is not very robust; e.g., the majority of Nintendo Switch games are made by 3rd-party developers, not in-house at Nintendo (and this is generally the industry practice for any other hardware maker, as well). Looking at a Top 30 list of best-selling Nintendo Switch video games, only 11 of 30 are made in-house at Nintendo EPD, with 19 of 30 by 3rd-party developers. – Daniel R. Collins Feb 15 at 1:16
  • 1
    At our company, not only is our coding done in-house, we also try not to use third-party libraries. We're not hot-dog salesmen; we know what's in our product. – EvilSnack Feb 15 at 5:28
  • 4
    @DanielR.Collins "Their games" means exactly that - their games. Zelda, Mario... There's a few examples I'm sure where they contracted out, but by and large their stuff is custom. – DeepDeadpool Feb 15 at 18:38
46

It's mainly about the stability/ duration of your needs. If you know you will need a full-time person to work for you over the next years, it frequently makes sense to employ one. By employing someone directly your initial cost is higher. It includes onboarding, providing the person resources such as a laptop, etc. But the cost pays out when the person turns productive. You have a specialist on board and control over them.

If the amount of work is to vary significantly, for example you just need someone for a 4-month project, it frequently makes sense to outsource it since then you are more flexible. If done correctly, the initial costs will be lower. You just pay for what you get.

However, it's difficult to answer your question about employment-oursourcing in a general way since there are additional factors to be considered. These include the availability and cost of labor in your area, the labor legislation (e.g. is it possible to employ someone for just a day/week?) and also what kind of outsourcing you mean. For example, in Europe many companies are currently outsourcing to Asian countries. While this works in some cases, it frequently also impacts on the quality because of the cultural differences and coordination issues.

  • My problem is exactly this: "It's a lot about the stability/ duration of your needs.", I have no experience and idea about the project development needs after it successfully launched. – user3486308 Feb 14 at 10:35
  • 12
    I have no experience and idea about the project development needs after it successfully launched then I think you're asking the wrong question, because understanding those needs is orders of magnitude more important than deciding the employment structure for your staff. – dwizum Feb 14 at 15:15
  • @dwizum: How can I find the answer of those questions? – user3486308 Feb 14 at 16:33
  • 4
    @user3486308 - Presumably, someone is asking you to do this project. If so, you need to go to them and ask them for those answers. Who are your users going to be? What are they going to need to be able to do? Will you need to add more functionality in the future, or is this a short term project that will be turned off after it's no longer useful (like an app to run a specific event, that's useless afterwards)? If you're the one with the idea, then you need to ask these questions of yourself, instead. – Bobson Feb 14 at 18:46
  • 2
    @user3486308: A big company can afford to treat the project as an optional extra whilst starting it up, and if they hire contractors can scrap the whole thing very quickly, no wasted costs on redundancies or left over unused computer kit. Even for them though, the calculation is difficult. For example, if it becomes successful product for them, they may regret the terms of relationship with the outsourcers, and need to pay costs to bring control/development in-house. As a large company they can take that risk and pay later if it looks worth it – Neil Slater Feb 15 at 10:55
31

In some comments, the OP has stated that

I have no experience and idea about the project development needs after it successfully launched.

and

this is my first experience and don't know having such website application will need what requirements in future(after it launched successfully)

As a first time entrepreneur, you might think that you finish building a website and then start collecting money. That isn't how it works. Except for some very special occasions (when specifically the website has a finite lifespan tied to something else - like the launch of a new product, a countdown to some specific event, etc.) you are never finished building a website.

Every day you will need to tweak something, fix a bug, add a new feature, etc., so unless you are prepared to have a permanent engagement with the outsourcing firm, at a minimum, you'll need to have the in-house talent sufficient to take over the project once the outsourcing firm delivers the initial version to you.

27

From somebody who has done both:

Don't outsource to save money. Do it because you need more talent than you can find in your own location.

Outsourcing requires remarkable clarity on what you want, and it requires communicating that clear vision, by documents, talks, explanations.

If you outsource you need a strong product manager to keep in constant touch with your development team. In Agile parlance, you need a daily scrum, and the product owner needs to participate (conference call, skype) pretty much every day for the first year or so you work with your contractors.

You should plan on visiting your contractors at least once in the first year, That's easy if they're a job shop in the next town over, and hard if they're in Asia. But you have to do it, to get a good quality product.

  • You make a good point, outsourcing makes sense sometimes if the human resources aren't available locally. – Kilisi Feb 15 at 2:05
7

Outsourcing gives you less control and even less knowledge of the people usually.

The big advantage is cost and if you don't have enough ongoing work to keep full time devs productive.

So the bigger the company and product line, the more sense it makes to do inhouse.

Things like product or information security are factors as well. Handing your product to unknowns is a leap of faith. If it gathers client information or anything like that it's also best to do inhouse.

4

I'd say only outsource if you have a very clear definition of what you want, so you can give them a specification, and you can both see and agree when it's done.

If you don't have this, you'll spend more time haggling over whether something is a bug (i.e. already paid for) or an enhancement (i.e. more money) than on actual work.

Another option is a contract worker, where you pay for an agreed number of weeks or months instead of by the feature. That way you don't have to worry about making an employee redundant at the end of the project.

3

My take is this:

The main argument for outsourcing is that you don't have to take on staff, which is a long-term investment. If you do a one-off software development thing, you probably want to outsource, because those developers wouldn't have anything to do afterwards (most of them, you'll probably need one for bugfixing and updates).

The main argument for in-house development is that you get to keep all the expertise and knowledge that was built during the development and can leverage it to other projects. I'm not talking about coding skills, but domain know-how, business understanding, etc. It also means all that knowledge stays in the company, which can be a factor if you have any trade secrets or other protection-worthy know-how involved. Yes, you can sign NDAs, but even if they don't intentionally blab about it, the external developers will use their gained knowledge in the next project, and that could be for your competitor.

Insourcing is also the correct decision if you need to be sure that you can still update and support that software some years down the road. There are so many pieces of software out there which are now unmaintained or badly maintained by someone who barely understands what they do simply because the original developer went bancrupt, or to retirement or the contract was simply over.

1

What Kilisi and BigMadAndy said, but it's worth considering another angle.

If you're involved in a product that will have a warranty and customer support period, it makes sense to have people in house who are familiar with the development and can suggest solutions. If you're planning a version 2.0, in house development will save you time teaching a [possibly new] external provider about version 1.0.

If you can consider a job completed the moment development ends, external sourcing makes sense. If you're thinking longer term, in house is the way to go.

  • As I commented to BigMadAndy, this is my first experience and don't know having such website application will need what requirements in future(after it launched successfully). But what I exactly know is "Sure, I'm thinking about next versions from now and have many ideas to add in the future! step by step". – user3486308 Feb 14 at 10:40

Your Answer

user3486308 is a new contributor. Be nice, and check out our Code of Conduct.

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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