The Antithesis: When It Makes Sense to Build Rather Than Buy
Continuing on from my previous post on why you should buy software rather than build it yourself - there are many situations where it makes more sense to build software yourself rather than buy it.
I should also add a caveat to my last post - while I talked about build vs buy, supported open source software certainly fits into the buy category, even though you may not exchange money for it. (Yes, I’m a closet open source fan - I ran Linux on my main desktop for five years.)
On to the list - when it makes more sense to program something yourself.
#1 - If it’s throw-away
If you need to automate something very quickly - as part of a migration, or a personal administrative task - write a script or small program to do it. Over the years I’ve written a number of small scripts and programs to help me with PC annoyances day-to-day. My favourite was a small Java program I wrote to count unique strings in Filemon logs to help troubleshoot a file server I/O problem.
#2 - If you’re in the technology business
If your business is software, technology, or the web (which is really just software), build it yourself. Duh.
#3 - If it’s your business at stake
Contrasting from the previous point, if your business isn’t software, but you have a software component which is your competitive advantage in business, I’m of the opinion that this should be built and maintained in house. Your competitive advantage is so crucial to your business that it doesn’t make sense to trust a third party who isn’t as highly vested in it as you. I’m not talking about IT infrastructure here - email, file sharing and backup are critical to a business, but aren’t a competitive advantage. I’m talking about software which controls some critical aspect of business operations. Examples? The booking, tracking and scheduling system of a courier company or the order processing system for a pizza company. Sometimes you can start with an off-the-shelf package, but it makes sense to have the skills in house.
#4 - To scratch an itch
While I’ve been talking primarily about business in these two blog posts, we’re all people. Sometimes we want to write a program to learn something, because we’re bored, because it’s fun, or to prove we can. To improve our skills, or because it’s a challenge. You don’t need a reason at all to write software for your own purposes. As well as being fun, I think it sharpens the mind.
I hope you’ve enjoyed reading these blog posts.