No, you just had a bad point that you'll come to realize if you ever have to manage a team or company.
More often than not, you outsource items that are not the highest value projects your resources could be spent on. Or, you simply cannot afford to hire a specialist for a specific need. Try to find me experts for some of the pattern recognition algorithms offered who will work at your shitty startup, your shitty big-co with minimal tech wing, or your random mid-sized in the middle of nowhere. I just described 95% of companies on the planet.
And to second relix's point, try to justify implementing something that may have taken years to optimize, even if you think you can do it better. Also, do you want to maintain it? What happens if/when the company loses you? Would they rather have some poorly documented, poorly optimized in house version with nobody around who knows how it works or have a contract with another party they can count on for maintenance and support?
Is this always the case? No. Sometimes it's a core function you want to develop in house. But, it's usually considered.
As a developer, a big step in growth is realizing how to best spend your time and resources, and realizing that contracting implementation of X to further speed up building Y is a choice you'll often have to make.
There's a balance to be had though with every project between IP/licensing concerns, the implementation of the algorithm itself may not be appropriate for all hardware / software combinations, and cost vs. implementation time and complexity of algorithm.
Component reuse is generally preferable to re-implementation, but it's not a blind creed to follow.
More often than not, you outsource items that are not the highest value projects your resources could be spent on. Or, you simply cannot afford to hire a specialist for a specific need. Try to find me experts for some of the pattern recognition algorithms offered who will work at your shitty startup, your shitty big-co with minimal tech wing, or your random mid-sized in the middle of nowhere. I just described 95% of companies on the planet.
And to second relix's point, try to justify implementing something that may have taken years to optimize, even if you think you can do it better. Also, do you want to maintain it? What happens if/when the company loses you? Would they rather have some poorly documented, poorly optimized in house version with nobody around who knows how it works or have a contract with another party they can count on for maintenance and support?
Is this always the case? No. Sometimes it's a core function you want to develop in house. But, it's usually considered.
As a developer, a big step in growth is realizing how to best spend your time and resources, and realizing that contracting implementation of X to further speed up building Y is a choice you'll often have to make.