Should you build it or should you buy it?
The building blocks of a software product are its features and that’s what software teams are busy doing - building features. There are certain pride and ownership related to that. There is certain pleasure in coming with a custom solution. Something you had to put your brain to, to battle with and figure out on your own.
Yet, is this really the optimal thing to do? Is this the best way to get from point A to point B? What is the end goal? To flex our brains and stroke our ego or to build a good product in the most optimal way?
So how do we know how optimal something is.
Let’s say you have a team of 10 people, who work on a feature and those people get paid $10,000 per month. Then one sprint (two weeks long) costs $50,000. How many sprints will it take to get that feature out of the door? 10 sprints? Then that feature costs $500,000. 5 weeks? Then it would cost $250,000.
So unless it’s a killer feature, you should even consider if you should work on it on the first place. Is this feature going to bring $250,000 in sells back to the company? What about $500,000?
Maybe you are sure, but maybe you are not. How can you lower your risk? Obviously developing it in-house is possible but quite expensive, so what are the options? Can you maybe get it cheaper in another way?
What if it you find out someone already developed that and either put it out there on GitHub for free or is trying to sell it one way or another. Would you use something that has not been developed internally? How would your team feel about it? Integrating alien code into their custom code?
Well, the question is rather - how would they feel if they spent 10 weeks working on a feature that either never gets finished due to budget problems or turns out to be a flop and a waste of time and money. Wouldn’t they have rather worked on something more promising? Something that you cannot simply buy for cheap? Something that brings more value?
I think they would.
And that’s where the product manager comes to play. She or he needs to evaluate not just the importance of the features, but also what is the best way to get them. Not everything has to be developed in-house. Sometimes it’s smarter to simply buy something and relocate the saved resources to a more productive activity.