One thing that our industry comes across a lot is the decision that we all need to make about whether we build something or buy it. As an engineer we always want to build something, but sometimes we really need to ask ourselves if that is the best business decision. There are many reasons why we might think it is a better idea to build something.
Some valid reasons include:
- This is our core competency and a key piece of our product offering
- Our business is proven, we have people knocking down our doors and we need to scale and it will be cheaper/better at scale
- We are doing R&D
Some seemingly valid reasons include:
- In two years our business is going to be larger
- I’m afraid that a remote service might go down
- I don’t like supporting X company because they are evil
Then there are the reasons that make me really sad such as:
- We won’t get the business unless we give the customer a substandard homegrown solution
- We want to have a chance to learn a new technology on a companies dime
- We are afraid to use anybody else’s software
If you are writing software for a project and your reason is one of the last three you should really do a personal inventory. If you do something that you know will not benefit your customers, who is going to refer you for another job down the road? If you are afraid to use software created by others you are crazy. Open source has already been proven to be much more reliable and successful than closed source projects.
But then there are those insidious seemingly reasonable arguments. On the surface they sound great, but let’s do a gut check.
- Two years is an eternity with software. Are you getting to the point where it really would be cheaper/better to build the software now?
- I have yet to see self hosted solutions that are more reliable than cloud based ones that are designed to failover…… Unless you are a Google and/or have a lot of money to throw at people/hardware to build this out.
- Get over it, if you bite your hand to spite your face you lost.
I say this because I have run across this with various projects over the years. Being a good consultant is like being a good auto mechanic in some ways. When I go to get my car fixed I want to only pay for what is necessary, not a bunch of stuff that I don’t want or don’t need. Mechanics that replace things that don’t need to be replaced and add on un-necessary services are crooks that I avoid. At the end of the day we need to ask ourselves, are we giving the customer what they need and want? Or are we just like those dishonest mechanics that we try to avoid. If I have a hammer or screwdriver that will do the job, what value am I adding by making my own unless my goal is to manufacture hammers and screwdrivers.