I'd made a LinkedIn discussion about what's better. Now I work in a project with in-house development, but I had experienced what's to be in a project with its development outsourced.
First of all, I don't think that one of them is bad. It depends of what are we gonna do and how the software is critical for business. Critical software has to be built in-house, only for the reason that it has business issues that the company wouldn't like that others know about it. Very known software, with very known requeriments, and not critical, is better to outsource because you have to redirect the brains to more critical and important issues. Another way to outsource is when you need to explore a new technology and you need control of the budget (usually in-house R+D never stops eating it).
Sometimes there may be politics or strategic reasons to do in-house when outsourcing may be more appropiated. That is when, you want to create a team of developers that would be part of the company and will be developing the critical software in the future. The opposite is true, a public organization may outsource only to make grow some little companies, like startups.
Thinking in my country, I think that Chile needs more in-house development, we need to learn a lot. I think that if we want to be in digital revolution we have to develop more internal than external and create a very powerful knowlegdement base.