Paul Lell (Engineering Support Lead)
A New Way to Approach "Build vs. Buy"
Working with passionate people has always been one of the highlights of my life. Whether it’s other authors, foodies, engineers, or others, passion is infectious. When passionate people get together and put their minds to work solving problems, not only do things get done, but they get done in new and innovative ways; often ways that others may never imagine. Passion has its problems, to be sure though.
For example, I love cooking. Not just because I love eating great food, which I absolutely do, but also because I love the process of cooking. Alton Brown is one of my personal heroes and he has inspired me to think about and treat cooking more like chemistry. He inspired me to think about the process. I can cook a great steak on the grill in ten minutes, or a fantastic steak in fifteen minutes with a screaming hot cast iron skillet and a hot oven. But I can cook an amazing steak with my sous vide setup, that same screaming hot skillet (or the grill), in about ninety minutes. Is all that extra time, process, and equipment worth it?
Well, that’s probably subjective, but praise from dozens of visitors over the years leads me to believe that it is. Certainly, I prefer it to the traditional, and much faster cooking methods. But there is one serious benefit to this longer, more technical method of cooking a steak: I can cook fifty steaks in nearly the same amount of time as five steaks, and they’re all consistently prepared and flavorful. You just can’t get that level of production and consistency out of the traditional methods.
The same thing applies when I talk to other people about what we do here and they ask, ‘why would an app developer not just use the built-in download functions instead of paying for your custom engine?’
The age-old ‘build vs. buy’ question.
It’s a valid point, to be sure. There is nothing inherently wrong with building these features in house but the thing to be aware of is that the default tools, while perfectly adequate, will always be just that: perfectly adequate. Anything that is done to make it more performant, or do things that aren’t part of that built-in functionality, means work that then needs to be re-done whenever the underlying functions are changed by Apple or Google.
That time means development dollars spent on just making sure your ‘basic’ functions are still working, when you could be spending those monies innovating, adding features, and enhancing the user experience. Not to mention that the basic functions most developers would build their own solutions around do nothing to provide anything beyond basic download.
And as a side note, our extensive testing on other providers’ download solutions (so-called ‘full service providers’ such as BrightCove, BitMovn, etc.) indicate that they also build their download features on the basic, included tech in the operating systems, so using them is tantamount to building it yourself. They’re really only providing download capability so that you can check a box for the feature; not because they’re passionate about providing the best possible download feature set.
So it can be good to build a feature like download yourself and have complete control over it, but when the budget is looked at, it needs to include the costs of ongoing maintenance whenever big changes are rolled out by Google, Apple, et all, and those costs could easily explode if/when you decide to add other features that use download in any way and those same OS changes are rolled out.
If you consider the functionality and performance that can come from a team of dedicated innovators with a passion to make last-mile issues a thing of the past, and spread the individual line item cost over a few years instead of absorbing the lost opportunity and monetary cost of building it yourself, the picture changes quite a bit.
So the question is, do you want a perfectly cooked, succulent steak lovingly prepared and perfectly cooked and seared by someone who is passionate about doing it exactly right every time? Or do you want one that is good but not as good as the last one you ate, or possibly the next one?