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.

2 comments

  1. Ignoring the fact that I am the living embodiment of reason #4, there’s another very good reason why companies will invest time (and therefore money) into writing software.

    #5 – When it is cost-effective to do so.

    Take your German bloke you referenced in your previous post. He said that he could use cron and rsync, plus a little bit of magic with the .vmx file, to replicate VMs. Whilst he might have been impressed with the additional functions of vReplicator, if he only had two ESX hosts and a few VMs, then he mightn’t really be that interested in vCenter awareness or pretty reports.

    This might be a bad example as vReplicator is hardly an expensive package, but the principle applies to other things too. If you can do a job yourself, and have it perform the functions you require it to perform, for less than the cost of going out and buying a comparable package, then writing your own makes sense. The same principle also applies to ease of use and suitability; if, by using your own custom software, you or your staff can do a job quicker and more efficiently, then – again – it makes sense to invest the time and effort in custom-writing something.

    Just a thought…

  2. Hey Dan,

    Great point. I agree with you there. There are cases where writing it yourself can be cheaper and easier to use. You do still need to keep in mind ongoing support – hopefully it would be easy enough for someone else to pick up and run with when you leave.

    Thanks for the comment!

Leave a comment