Over the past several months I’ve been pretty entangled in a tech philosophy question that I’m positive you will either 1) be involved in sometime in your career or 2) have already been involved in sometime in the past.
The simple version of this question is really just three words “all-in-one versus best-of-breed”
Do hyphenated words count as one word? Maybe that was a stretch, but it sounded way better than “just 7 words”.
Now, I have plenty of opinions on this topic, but I don’t really think just those three words are enough to lay out the landscape. So, before I jump into my feelings on this somewhat complicated topic, let me spend a short amount of time to explain the scenario.
Over time in the tech space, the concept of getting an “all in one” solution versus making or buying small parts of a full solution and integrating them together (best in breed) has been pretty hotly debated. And over the same time, the popular opinion has swung like a pendulum.
On the all-in-one side of the argument, solution seekers will be swayed to believing that you will save a ton of headaches by simply buying one solution that “does it all”. Sure, the all-in-one solution might not match your use cases 100% perfectly, but the concessions that you make in functionality are compensated by ease of use and lower overall cost compared to the total price of buying several smaller solutions and having to pay engineers to integrate them to make your perfect solution.
In contrast to that, the “best of breed” approach; argues that simple, specific, and cheaper solutions integrated together can provide a better experience and save money overall. Sure, its more work to take several smaller solutions and integrate them through APIs or other types of connectors, but in the end you get exactly what you need. Nothing more, nothing less. You also save money because each of these smaller solutions have way lower licensing costs larger all-in-one solution.
Now I sure as I rattled off those basic explanations, you may have immediately chosen what you think is best. And depending on what year we are in when you are watching this, you have probably been pre-conditioned by the current tech landscape to pick the one that is more popular right now. You see, as time goes on the popular opinion changes. And let me explain why that is.
The short answer is mergers and acquisitions. Whether you realize it or not, there is a forever churning cycle with tech companies and startups. It goes something like this.
Small startups build solutions that are lightweight and highly specialized. To get their companies off the ground they start selling this product at a relatively low price to get people in the door and to try to compete with less specialized solutions that just don’t quite do what they offer. People buy these solutions when they are looking for that very specific solution and then integrate it with other tech to compose their complete solution.
Next, as these companies mature, they begin to take market share away from large all-in-one applications. They start to expand the offering of their very specific solution to reach into other related tech. Their current customers will usually adopt these new features since they are already bought into the company and the integrations are easy because its just one more new feature added to the offering.
Now on its own, this could be seen as the small player becoming the big player, but the big shift back the all-in-ones actually comes in the next phase.
The bigger names out there who have been seeing the market share slide because of a competitor need to make a move, and since they are larger and generally have more capital, they will make the strategic move to acquire the once smaller company. They take the features of the smaller offering and bake them into their large, all-in-one solution. At first there is no real change since it takes time to merge two completely different tech stacks, but over time the smaller best of breed company just becomes a new set of features on the all-in-ones massive list.
But more importantly, the companies that previously decided to buy a solution from the “best of breed” company are now actually customers of the all-in-one offering… and all or some of the employees that used to work for the best of breed company are now employees of the large company.
And… the cycle starts over again. The consumers get frustrated with their solution only solving 80% of their problem, the former employees of the best of breed company see holes in the market, and they decide to start a company that makes a new “best of breed” solution.
You see where I’m going with this? This cycle never stops and over time you will see shifts in the market as well as popular opinion on which is the best approach.
Let me give you a real life example of this. And since I’m your average lazy developer I’m not going to do a lot of research and just give you the most obvious example there is. Let’s talk about Salesforce.
Salesforce IS THE all-in-one in the room. Both from an architectural standpoint and a business standpoint. Salesforce started as a CRM company. They made a web application that allowed you to keep track of your customers, log your phone calls, take notes, track deals and close sales. From that perspective, when it comes to CRM, Salesforce is the “best of breed”… and they were and still are best of breed in that category.
But it doesn’t stop there. Take a look at this list of companies that have been acquired by Salesforce. Just take a moment and read through it while I rattle on.
Now that I’ve spent way to long making the point, maybe it’s time to get to the actual topic of the post. Which one is right? Which one is best? What do you choose? Ok… so please hold back your urge to flip your desk when I say this, but the answer is “it depends on”. The answer is both, depending on the impact of the solution you are picking or building. Let me explain, so hopefully you get some value out of this.
Earlier I said that all-in-one solutions may not nail your feature requirements 100%. I think that is the part you want to focus on when trying to make a decision. Take a close look at what you won’t get if you choose the larger, but simpler to implement solution. Is the missing 20% super critical for your project or business? Will you honestly lose critical functionality that impacts the success of your product if that 20% is missing? If the answer is yes, they will either need to supplement the all-in-one solution with a smaller integration to get the missing parts, or you decide to completely forgo the monster and instead search for small cheaper components that will do the all the critical things you need.
On the other side of the spectrum, if you are looking at smaller best of breed solutions, how much time will you spend in integration hell? Will engineering solutions for making all the parts act as one become a never ending time suck? If the answer is yes, maybe you need to look a little harder for something that bakes together some of the stuff you need, so you don’t have so much ongoing engineering effort and maintenance on your hands.
And as a final note, there is one other super critical factor consider with the all-in-one solution. Remember that just because the mega product claims to support all the features you need, it doesn’t mean they are well-supported or even, well integrated into their current offering. Look to see how the specific features you need came to be a feature. If they were once a small company that was acquired, how long ago was it acquired? How much time and effort has gone into making that acquisition a truly integrated feature of the overall product?
And because I’m terrible at writing, here’s another final, final note: remember big companies have big sales teams. They will sell you the dream. They aren’t technically lying because anything’s possible. But really pay attention to the sales pitch and try to get some more technical people on the horn to ask some probing questions before you buy.
I hope this helps you as much as it helped me get it off my chest. Thanks for stopping by and until next time. Happy coding!