Custom software development has been given a bad reputation. It is often labelled as “reinventing the wheel”; and in many cases I would wholeheartedly agree.
I’d like to make a distinction though. Software / web apps / mobile apps can be categorised into internal (serving the business) and external (serving the customer).
I would argue that when choosing apps of an internal nature, off the shelf should always be considered first. A couple of questions that can guide the decision making process:
- Can I use the app as-is, without any tweaks at all?
- If tweaks are required, do those require a developer to do them? (Warning lights should go off here)
- Am I happy to fit my existing business processes into the app, in other words, change my workflows where necessary, in order to fit into the workflows as the app defines them?
- Will this app be SaaS (Software as a service, i.e not hosted in my own environment?)
If the answers here are Yes, No, Yes and Yes, then the off the shelf app is a good idea.
At Lima Bean, we use many such apps, serving our internal needs. Here are a few:
When asking the above questions for each of these, the answers are: Yes, No, Yes, Yes.
We have however done a number of custom apps for our clients that are of an internal nature, where the answers to the first three questions were No, Yes and No. An example would be two apps built for the DA prior to the 2019 elections. There was no off the shelf software suitable for what the DA had in mind.
Let’s be honest though, in the majority of cases when dealing with internal apps, serving the business, off the shelf usually makes sense. Where that leaves ERPs will be tackled in a future blog post, but suffice to say that our advice would be to leave the ERPs with the dinosaurs and use a best of breed approach.
External, customer facing apps are a different beast altogether. What makes those apps different? Primarily:
- The user interface cannot be cookie cutter, it has to reflect and be unique to the brand
- The workflow is often very specific to the business
Some examples:
- When you login to the 10x or Allan Gray platform, are they using something that was bought off the shelf where they have uploaded their colours and logo?
- When you shop on Inspire, purchasing on credit, did we use an off the shelf plugin to enable this?
- When you have Just SA advisors guiding you on your post retirement future, are they doing so with an off the shelf product?
- Did Common Objective use an off the shelf product to facilitate a global network of fashionistas connecting?
The answer to all of these questions is No. These systems have been custom developed. This would have entailed
- Understanding the user
- Mapping user journeys
- Creating wireframes
- Developing a clickable prototype
- Bringing the wireframes to life with design
- Architecting the solution
- Developing the system
- Testing
- Deploying
And this is the realm of custom development. When dealing with client facing apps, where specific user journeys need to be mapped and unique wireframes & designs created, custom development is your only option.
I will qualify this by saying that if your requirements are fairly basic and you’re really just looking for a brochure website, then by all means, use a pseudo off the shelf product [insert your favourite CMS here].
If however, your requirements are even moderately complex and you try and fit them into the aforementioned pseudo off the shelf product, you will quite likely end up in pain, especially when traffic is thrown at the site.
So what do we do? Simply, if requirements are complex and user journeys, wireframes and designs have been uniquely designed and developed (like our creative team is wont to do), then we build a proper damn system, using best practice software development principles.
That’s right. We throw the CMS into the trash where it belongs. Too often in the past we’ve gone the pseudo off the shelf / CMS route (because this is what one is told to do), only to be left with an increasing amount of technical debt as the years pass. Slow sites, bugs, unhappy clients.
Where we’ve applied enterprise software development principles and treated the website/application/app as a first-class software system, we’ve ended up with clean code, fast load times, fewer bugs and happy clients.
Well that escalated quickly…
At the end of the day, I care about two things. Happy clients and a happy team.
Building rubbish software makes no one happy. Using a CMS that make you serialize everything into wp_options makes developers unhappy and, when the site finally crawls to a standstill, clients unhappy as well. Having to deal with the abomination that is Magento’s data model makes developers resign and clients sad because you can’t deliver things which they consider to be simple. Having to query on “field_id_3” makes developers depressed and clients angry since said query is slow due to a missing index. I’ll stop here. I’m starting to rave like a lunatic.
Is custom development dead? In the world of unique consumer facing websites and apps, it’s more alive than it has ever been. Long live custom development!