Custom software.
If you’ve ever tried having anything custom-built, you know it’s not a trivial process. Clothes. Packaging. Furniture. Interior design. Cars.
Software.
It sounds easy enough, right? You interview a couple of folks who can do it for you, you tell them what you need, you cough up some dough, you wait a while with great anticipation, and presto, your perfectly built, one-in-the-world, form-fitted item gets delivered to you, complete with a bow on top.
And then you start using it, and realize all the wondrous benefits it brings you, by being just right.
Or not.
What it’s like creating custom software
The fact is, crafting anything custom, especially something as open and fluid as software, is not a walk in the park.
You’ll spend an inordinate amount of time thinking about it, realizing what all the edges are, and thinking even more about how to solve them. Even with the help of extremely good and talented engineers from your software development house or agency helping you.
What your software development agency can help you do, is to find your blind spots, and apply logic, reasoning and experience to create as elegant a solution as possible. To minimize the number of rough edges so that most things just fit, and finally, to help you take care of those rough edges so that they’re properly handled.
Because the point of custom-built software is to handle things just right, and not be a 70% or 80% solution, because (usually) you can find those off-the-shelf.
But once you embark on this journey, you’ll realize how many things that are apparently “easy” or “simple” are actually not.
When should I not build custom software?
I’ll state the obvious. When there’s a ready-made, off-the-shelf solution that actually already solves your entire problem.
Or even most of your problem.
The reason for this is that more often than not, what looks easy to solve, actually requires a minimum set of features, done properly, to actually solve your problem.
Take for instance the idea of putting a live chat popup on your website. Sounds easy, right? Basically toss a bubble or button somewhere on your website, and popup a little chat box, that users can type their stuff and you can see it.
Now, when we think a little deeper about that live chat system, we instantly run into these questions:
- What interface should I use to see what my users are asking?
- Will I be notified when a someone asks a question?
- Can I assign multiple people to answer user’s questions?
- How do I prevent (or allow!) multiple people from answering a single user’s question?
- Can I have an autoresponder if nobody is online?
- Can I have an autoresponder if someone is online but nobody has responded in a certain amount of time?
- Can I set my operating hours so that the chat system knows when to automatically mark my business as offline?
- Can I have a form displayed if I’m offline so that people can leave their contact information and I can get back to them?
- Can I change the look and feel of the chat system?
- Can I keep a history of the conversations that have taken place?
- Can I integrate this with my X system (e.g. ticketing system)
And in considering these already very surface-level questions, we haven’t even talked about security yet. Things like how do you prevent people from spamming you, and so on.
So what seems like just a simple live chat system, actually has a ton of features and edge conditions that need to be thought about, and solved, before the system “just works”.
And building these features to a relatively high degree of completeness, where you can trust and rely on it without worrying whether it’s actually working correctly or not? That takes time. And money. And energy.
Therefore, if you have a need, and there is a decently good solution out there, it is probably far more worth it to simply use that, and perhaps even customize off it, rather than from ground up.
So, unless you have a very specific need or reason to, things like your CRM, inventory software, accounting software, marketing automation software — off-the-shelf is probably good enough.
But weren’t you going to tell me when I should actually consider custom-built software?
Yes. And there are 3, in my humble opinion. In the order from the most obvious, to the most interesting:
- When there’s no solution out there
- When you absolutely need an integration that doesn’t exist
- When it enhances the core differentiating factor in your business
When there’s no solution out there
This doesn’t need much more to be said. If you need a function or a feature, and there doesn’t exist a solution, then you probably have to custom build it.
The big question here is then — do you really need that solution?
And if you do, and even more interestingly, if quite a number of people need it, would that actually be a viable product or business to start? Just a thought.
In practice, this isn’t likely to occur very often. Most of the typical problems are already solved, or mostly solved.
Of course, if the partial solution exists but really isn’t good enough, then it is reasonable to consider building your own solution.
But make sure that you have enough of a handle on the problem to actually draw out a solution, even if you’re hiring a software development house to build it.
When you absolutely need an integration that doesn’t exist
If your problem already has a solution, but that solution (and other alternative solutions) do not have an integration that you need, you might then need to customize.
Most of the time, this happens when you need the solution to integrate with some legacy (but important) software you’re using.
Or perhaps with another home-grown or custom-built software that you’re relying on.
There are many approaches to this:
- Customize the solution so that it naturally integrates with what you need it to
- Use an off-the-shelf solution that is amenable to extension, and have it extended to integrate with what you need it to
- Take a robotic process automation approach to “join” the solution with what you need it to integrate with
When it enhances the core differentiating factor in your business
And that brings me to the key reason why you should consider custom-built software.
When you have a business process in place, that is unique to you, that forms the core of your business, that defines part or all of your competitive advantage in the market, you should custom build the software that powers it.
The system, process or mechanism that you use to drive your business that keeps your customers happy, that keeps you efficient and scalable, is the very thing that technology and automation can help you to defend.
And most of the time, this will very naturally encompass reason #1 and to some extent, reason #2 as well.
Example 1
Imagine you’re a digital advertising company, and you have developed a process in which your business (and the dedicated employees helping you run your business) is able to select the best channels for advertising, write good copy, and monitor the results.
Imagine further that you have a playbook that you know already works, that keeps your customers happy and your projects rolling in:
- When your advertisement isn’t even showing up on the channels, you check 6 metrics, and you employ A/B testing using strategies A, B and C.
- When people view your advertisements but don’t click on them, you immediately do some other things.
- When people click on your advertisements but don’t convert, you specifically do yet something else.
- When people stop midway while converting, you try copywriting and design strategies X, Y and Z.
If you are able to automate that monitoring, and the rules behind them, you will be building a scalable business that your competitors will find extremely difficult to compete with.
Even if you cannot automate everything (most likely you can’t, even with the newer stuff like machine learning), if you can automate away the tedious portions that suck up your employee’s time and attention, or the stuff that is error-prone, you are strengthening your competitive edge.
Example 2
Imagine you run a pet supplies store, and you also have a fleet of delivery vans to deliver stuff to your customers.
Each day, your logistics planning manager has to find a way to pack the right goods into the right vans, so that your drivers drive the least.
When your drivers drive less, they:
- Save more fuel
- Have shorter working hours
- Are less likely to get into accidents
- Have more time to buffer against unpredictable conditions like traffic, vehicle breakdowns, etc.
Therefore, optimizing their route is a huge win for your business.
Now, with a bit of thought, you’ll easily realize that computing the optimum route, and packing each van with the optimum goods, is not easy for a human to solve, but one that a well-designed algorithm can easily get right all the time (for a reasonable definition of “right”).
You then quickly further realize that a system can not only tell your logistics folks what to put in which van, but what order to place them in, so that it’s easy to remove. And to also calculate the best packing order so that fragile goods are least likely to get damaged (e.g. putting heavier goods on top of fragile goods is not wise).
With such a system, you basically can have each van driver (just for example) follow the generated instructions to load up the van at your warehouse, and off they go.
If on-time, fast and correct deliveries is part of the reason why pet owners love buying from you, this forms a core part of your business differentiation, and one that a custom-built solution will absolutely enhance and improve.
Building your fortress
The real benefit that a custom software development house or computer engineering agency can bring to you, is elevating your core business differentiating factors — the things that make you stand out, the things that defines your business and brand.
By investing your dollars into building systems that enhance your competitive advantage, you are literally taking that competitive advantage further, and making it even more defensible, and separating you even further ahead from your competitors.
A “secret sauce”, whether that is a technique, a process, or a playbook, is your castle. A technologically-enhanced “secret sauce” is the fortress around your castle.