To build or to buy, thatās a constant question we ask ourselves as software engineers. In this episode we dig into the nuance of these options and the space between them with an eye toward both the building of software and its eventual maintenance.
Kris Brandow: Thereās no general answer to that question, I think. Itās highly context-dependent. I think a great example of this would be Kubernetes in the current day. Kubernetes is amazingly popular, everybody is using it, itās sort of becoming a standard of its own⦠And you kind of have a choice when you start using it. You can either keep your applications as they were before, running in whatever they were before, and just make them run on Kubernetes. Or you can start leaning into Kubernetes, build operators, tap into the API, get all this information, but then youāre tying yourself directly to Kubernetes. And itās kind of hard to figure out which one of those things you should do, because Kubernetes has only been around since 2014; thatās about seven years⦠So seven years from now is Kubernetes still gonna be a thing? And if you lean into it very heavily, then youāre making the assertion that āYes, I think that itās still going to be a thing in seven years. I think weāre gonna benefit from having done this integration.ā
If you donāt, maybe youāre saying āWell, maybe thereās a possibility that we could hook into something else.ā But I think usually what winds up happening is that people donāt make a decision either way and you wind up with something in the middle, and in this case, being in the middle is bad, because that means youāre still stuck with Kubernetes at the end of the day, but you canāt actually move to something else, because youāre too tied into some of the things that Kubernetes is doing.
This also happens with cloud platforms. People are like āOh, we wanna be multi-cloudā or āWe wanna be able to switch away from AWS, and be cloud-agnosticā, and then you actually sit down and youāre like āWell, here are all the things that youāre doing that make it so that itās actually gonna be a giant pain to lift and shift to somewhere elseā, as they say.
So I think itās one of those things where you have to gather as much information as you can, and then make a decision in the moment that makes the most amount of sense. And then realize youāve made that decision, kind of more or less live with it, and then realize that at some point in the future when you have more information, that you should come back and potentially revisit that situation.
So if youāre building something today, I would say if youāre already using Kubernetes, lean all the way in. Use operators, use all these great features, because that will make your life a bit easier, itāll make your current way of operating a bit easier. But just remember that some day down the road, maybe 4-5 years from now, those decisions you made wonāt be making as much sense.
[36:05] Youāve gotta continually evaluate and reevaluate that decision that you made, which I think is kind of the theme that weāve had this whole time, around just like āYou have to bring in the requirements, you have to bring in the information, you have to gather all of that stuff.ā And on that, I wanna raise the prospect of build vs. buy outside of just the code realm, and kind of bring it to our process and project management ethos and the things that we do⦠Because as we have been saying, we have to gather all of this information, we have to evaluate, we have to track time, we have to do all of this.
In my experience, Iāve very rarely seen people making explicit build vs. buy decision around this; it usually starts out as a buy. Someoneās like āOkay, weāre gonna do Agile. Or weāre gonna do Scrum. Weāre gonna do X, Y or Z, and weāre gonna use these methodologiesā, and then it morphs into some sort of built thing that doesnāt really look as much like the thing you started with⦠And new people come in and theyāre like āWell, this isnāt how I did X, Y, Z, Agile, whatever, at my last place.ā So it seems like quite a mess. So Iād like to hear your opinions on āDo you perceive this as a problem as well?ā And where do you fall maybe on how we can start resolving this, or at least making it easier for people to make an explicit build vs. buy decision around this stuff?