Competition is healthy in business. If for no other reason, it forces companies to act in the consumers' best interest. But there are times when it makes abundant sense for competitors to work together.
After all, the fact they're competing means they're trying to solve the same problem. Maybe they have a different way of doing things, but ultimately their products or services are somewhat interchangeable for the customer.
Cooperating allows competitors to focus on a smaller piece of the effort and combine their results. This is a more efficient use of everyone's time because the companies didn't duplicate each other's efforts.
The problem is then going through the effort of integrating different pieces built by different teams at different companies. As you can imagine, there's a lot of room for error.
When it comes to integrating software products in particular, the software probably wasn't designed with integration in mind. It was meant for use within the company, not extending to people on the outside.
Building software on blockchain doesn't suffer from the same issue. dApps are inherently open and shareable by default. This allows for quicker progress when the decision to cooperate is made.
Take for example KoinDX and Koin City. These two companies were working toward similar launches for months. It looked like Koinos was going to have two DEXes for a while. Recently, they decided to cooperate and use the KoinDX DEX contracts and Koin City will focus on the token launchpad. That means less effort for both teams, shared liquidity, and more features faster for customers.
It's still great to have competition, but choose to cooperate whenever you can. There's no excuses in a decentralized, open environment.
P.S. partnering is also excellent for building trust within the industry.