Classically engineering belongs to the core of any high tech company. The engineering department converts the idea of a product (wherever this idea came from originally - marketing or science) to a "touchable" form - it's first incarnation. Products get their marketable differentiation mainly at this stage - here it is determined what makes a particular product distinguishable from the competitior's. So, outsourcing at this stage looks a little bit like giving away the most delicate information - possibly right into the hands of the competition.
But there are some scenarios in which outsourcing makes a lot of sense:
First, for a company that temporarily has a bottleneck in it's own engineering department and second, for a company that wants to include some features into a product without having the required knowledge for this section in-house. The first type usually outsources parts or all of a development, sometimes even to the extent that they buy from the outside company modules that were designed and manufactured to their needs and specifications. The latter type of companies wants a working prototype of the section and all information and assistance to integrate it into a bigger product. But for the outside company both are quit similar - the difference is only in the scale of the task and the type of "goods" to return to the customer.
Where are the advantages for both sides? First, again, if a company has more work to do than can be done in-house can get a product to market faster by engaging an outside company that will perform a distinct job. The final product, even if completely developed outside is still marked and marketed as an original product. But this product will be at the market faster. So far, so good. But why should any "detached" company accept engineering orders when they are only good for filling temporary holes? The answer is simple: It is their job. They are like fire-men.
And, like fire-men, they know their task very well. They have some knowledge that goes beyond the normal and average knowledge of the in-house engineers. This is true because they usually have their customers in so many different sections of the industry that they can accumulate knowledge from various disciplines. Thus they can build on a solid fundament. On the other hand, nobody can be a crack in all disciplines. If a company tells you that it can do everything, expect it to do it only avaragely. From specialists you can expect to do it better.
And this leads directly to the second type of companies that outsource engineering tasks: They want a solution from a specialist, not one from the in-house engineer who is trained for other tasks. Imagine the difficulties of an digital engineer who has to design a good power supply. Or that he has to design the analog frontend of a measuring system. In all these cases one cannot think in terms of "true" and "false". So, why loading that specialist with an alien task when it is easy to get the solution by simply consulting an outside company?
And outsourcing is usually cheaper than training people. This is true because of the "specialist effect": Someone who does some kind of work repeatedly gains some skills that a not so seasoned person does not have. So outsourcing is like hiring a specialist without paying for the education.
But, as for all business, check your partner before you make any commitment. There are a lot of serios companies which offer capacity but there are some who offer services that they cannot deliver. Any serious company will answer even the toughest and most technical question - without telling you that this would destroy their business. On the other hand, do not expect that they solve your problem at the phone for nothing - they have to live from their services that they charge.
So, when you are in a pitch the next time, check the companies around you that offer their services to help you - it is worth the time and effort!