Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Why would you hire in-house over outsourcing in developing a product for your company? I can only think of a few but I'm not entirely sure if they're good enough reason.

This is actually for a debate that I'm going to have in class. I'm more inclined on the outsourcing part but unfortunately, I was asked to switch to the in-house side of the debate.

Any ideas?

share|improve this question

closed as not constructive by gnat, Bart van Ingen Schenau, Kilian Foth, Yusubov, Dynamic May 31 '13 at 20:35

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
Just to be clear, When you say outsourcing, do you mean just an external company, or as often colloquially used, off-shoring (ie, out of the country). –  GrandmasterB Sep 16 '10 at 4:43
    
I'm pretty sure my professor meant both when he said outsourcing. –  Terence Ponce Sep 16 '10 at 4:47
36  
I like how you outsourced your homework question :p –  glasnt Dec 20 '10 at 3:00

8 Answers 8

up vote 26 down vote accepted
  • An in-house team will be more responsive to your needs, since they're actually part of your company, so they have a better idea of what you want.
  • An in-house team is easier to communicate with- nothing beats regular face-to-face contact.
  • Your in-house team will have more domain-specific knowledge that an external team would have to learn.
  • You're investing not just in the software, but in the expertise solving the types of software problems your company has. Using your own developers builds up a stock of programmers who've dealt with those specific problems before.

(For counter-arguments, see Joel's take on it.)

share|improve this answer
5  
Joel's take in the link seemed to be more "why I wouldn't want to be an inhouse dev" no? –  MIA Sep 16 '10 at 2:19
    
Somewhat. One of hist points was that in-house development tends to produce crappy software as well. –  Fishtoaster Sep 16 '10 at 2:30
8  
I've got plenty of horror stories about crappy outsourced software, so I don't think it's possible to generalize that particular dimension. –  MIA Sep 16 '10 at 6:14
1  
+1 for "build local expertise" –  Frank Shearar Nov 2 '10 at 21:03
6  
90% of all software is crappy, and that may be an underestimate –  jk. Sep 29 '11 at 8:11

If the software is to be used tactically or strategically or is core to your business, then having programmers who also understand the business can be key. They also need to understand the support and life cycle and what will cost your company to support the systems after release.

I don't think that cost is generally a real factor. If someone claims it is, they're ignorant or lying. If you outsource, you're paying someone else's profit margin on top of their costs. Any savings due to geographic labor market differentials is usually quickly made up in increased cost of communication and education, and the rate differentials are not as large as they used to be, since the developing world is called that for a reason.

There are lots of kinds of software out there. In many cases, you can outsource something and be fine. The problem is that that decision needs to be taken on a per case basis, and you cannot solve it in a one-size fits all situation.

I'm sure there are a million things to look for in the decision-making process.

There would be cases where development of a well-specified yet core piece of software might easily be outsourced to a company who specialized in that kind of work - for instance a system-level thing like a device driver or web server might still be outsourced by a company who made an appliance and wanted to specialize on the user experience more than the building blocks.

On the other hand, if you're going to be driving that web server in special ways and even though you have it well-specified, you are going to have this component tightly tied to major multi-phase development initiatives, you probably aren't going to want to outsource that.

share|improve this answer

This is a late answer, but the more general "why would a firm hire in house X rather than outsource?" - in other words, why do companies exist, rather than a single CEO who outsources everything? - is called "the theory of the firm"

http://en.wikipedia.org/wiki/Theory_of_the_firm

and there's quite a bit of evidence and studies for various reasons why, and a lot of knowledge about when it makes sense to out-source vs. "in-source" various bits of labor and capital.

share|improve this answer

One reason to do it in-house is because you are using data encryption technology that cannot be exported to certain countries.

Software can arguably be done faster, at higher quality and meet the customer's expectations better when a small, local team of developers is used that can communicate face-to-face using an iterative model.

The iterative model is arguably less effective with outsourcing; outsourcing requires more work developing requirements, using BDUF (big design up-front).

If the application is large, and portions of the mundane stuff can be broken up into small, well-defined libraries, then outsourcing can be valuable for producing those pieces.

share|improve this answer

Outsourcing (locally) makes sense if the company doesnt have the resources to do the development or the know-how to even start. For example, a shoe company that wants to make an Android app. There's not much point in them doing that in-house. If its a software company, outsourcing a project doesnt make a lot of sense, though some gaps might be filled with outside contractors.

There's another form of outsourcing... buying up companies to obtain and rebrand their products. That is, a larger company will search around for an existing product, buy it, and rebrand it as their own. The net effect of that is essentially the same as outsourcing.

For off shoring, thats not always the good financial decision that managers would want you to think. There's too much domain knowlege (industry knowlege) required in most development that simply cant be 'bought' like that, and its extremely difficult to get a remote team to duplicate that with only a spec to guide them.

share|improve this answer

Because you probably don't know exactly what needs to be built.

share|improve this answer
1  
And what customer ever accepted their agreed-to requirements as a final deliverable without extensive scope-change? Sometimes, in-house developers can solidify and come up with various scenarios based upon much less-defined req's, vs. outsourced which just stops development until clarifications are made (and you've possibly lost a whole day off-shore). –  Xepoch Sep 20 '10 at 5:07

We only have a small internal team, and have only used small external teams, but the internally produced software has always been far better than the externally written software.

Internally we use documented patterns, appropriate business layer logic (not just classes that call other methods in the data layer passing back a DataTable with no actual logic anywhere), and we have a library of code we can re use from other applications that fit within our domain.

share|improve this answer

It depends upon various factors:

If you are developing a software product; obviously you must be having some secret plans, confidentiality, new ideas, etc. associated with it which makes it more sensitive to be preferred to do in house rather than outsourcing your software development requirement.

On the other hand, if you have tight budget or you want to focus more on sales and marketing activities rather than hardcore development or if you have more workflow than your current team can handle; you can go with software development outsourcing.

So, it all depends upon your preferences; both the options have their own pros and cons. If I have to develop a simple website, I will prefer to hire a website development company to outsource it and if I have to make a software product say CRM or an ERP, I will prefer to do it in-house.

share|improve this answer

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