Oct 15, 2020
A custom software development, also known as “bespoke software development,” is a process of designing and implementing a software solution specific to a particular group of users or an individual organization. As opposite to ready-to-use software solutions, custom software addresses particular problems for a specific industry. Such a focus makes it easier for end-users to perform their tasks without customizing the software.
Right now, many ready-to-use software solutions can be used right away for the growth of your business. The range of such solutions is genuinely astonishing – from simple productivity applications to large-scale enterprise ERP and MRP systems.
The main benefit of commercially available tools is the ability to start using the solution almost immediately. Additionally, in the build-vs-buy comparison, the “buy” option is often more cost-efficient.
Before even considering the bespoke software development, it’s crucial to understand your goal. Ultimately, there can be only three reasons to create custom software:
Each of the above reasons requires a specific approach to analyze the actual feasibility. As a CEO of a custom software development company, I’m happy to admit that you don't need custom software in 80(eighty)% of cases. That’s why during initial discovery calls, we try to exhaust all possible options with our customers before agreeing they need a bespoke solution. That may sound crazy first, but we earn our money on helping others, not creating useless apps that won’t be used by anyone.
Sometimes it irritates potential clients, and we are OK to miss opportunities if agreeing to such work will be against our core values and beliefs.
Let’s dive deeper into each of two reasons to create custom software.
Often poor research results in a substantial loss of money. Before deciding there is no ready-to-use option, try to:
It’s not always clear what to ask because of the “unknown unknowns” type of situations. To convert “unknown unknowns” to at least “known unknowns,” you should use the most valuable and often underrated gifts human beings got from nature: an ability to communicate and learn new things. If the steps above didn’t provide you with some results, try hiring somebody to find possible solutions (not yet build, though!).
If your thorough research confirmed there is no ready-to-use solution, it’s OK to start thinking about custom software development after this point.
Let’s say you found a suitable product, but there is a reason (or several reasons) you think you can’t use it. Here is the list of possible causes:
The first two items(software/hardware incompatibility) may be a valid reason. I would check first whether it’s possible to somehow virtualize/containerize it(basically, put it into a separate “virtual” environment that would allow running the solution). If it doesn’t work, then it most likely time to consider tailor-made software.
End-of-life is a tricky situation. It affects the scalability of the business, and most likely, you won’t get any support. Unless it’s a life-or-death question, most likely, it’s another reason you would go with custom software.
Legal restrictions of the available software (like licensing restrictions, geographical restrictions, etc.) are valid reasons to develop a custom one.
A high price is a compelling reason for people to create their custom software. Unfortunately, price and total cost of ownership are often interchanged.
Let’s say you need a tool that costs $50K/year. You can also build such a tool by hiring a software development company, and they can deliver it in 12 months. Unless you plan to sell the same tool to others, there is no way you want to spend money on 12 months of custom software development instead of paying $50K/year.
Here is the situation you should go for the custom development: you evaluate a tool that costs $50K/year, and you need only a single tiny(REALLY tiny) feature from it.
This particular reason to create custom software is our main line of business. Besides the actual implementation, we also consult companies on proper architecture design, select an adequate technology stack, and integrate with other products and services.
You should remember that the software is a tool that should help people solve a particular problem/cluster of problems. Creating custom software is very similar to creating a new tool or equipment: you can’t earn much on producing yet another hammer, but you can get rich by creating a fully automated production line(as long as there are businesses that need your production lines).
Market research is something that should happen way before the actual software development. There are so many great software products that don’t have their users. Before going full steam ahead and investing a huge amount of money in software development, be sure to validate your business idea.
There are many good books on the topic, like “Lean Startup” and “The Mom Test.”
As I mentioned, sometimes, our discovery calls with startups may look like a pitch in front of investors. If we see disturbing signs of a not validated business idea (like not knowing the target audience, unwillingness to speak with potential customers, phrases like “we don’t have any competitors”), there is no way we agree to work on such a project. It’s not because we are arrogant, but simply because we respect our client’s time and money and always try to save both.
After more than ten years in software development, I have my list of things that I would never build from scratch unless there is a particular reason:
Creating your own software product is similar to building a house. When doing it for the first time, most likely, you have no idea how it happens.
As you don’t need to be a professional construction worker to build a great house with a construction company's help, you don’t need to be a software engineer to make a fantastic software product. But understanding processes in both cases increases the chances of a positive outcome by magnitudes.
Most successful software products are created by great entrepreneurs who sometimes happen to be sound software engineers and not vice versa.
First, you need to know about seven steps that describe what happens with almost any piece of software:
This list is very generic and too high-level, with some steps omitted/combined. A more detailed and precise description is described in the ISO/IEC/IEEE 12207:2017 standard. While in most of the cases, completely adhering to the ISO standard will be overkill(it’s very comprehensive but still doesn’t cover all the items), knowing the “ideal world scenario” may be beneficial.
If any of the steps 1-6 is missing, the results will be very disappointing. What’s even more important, the cost of error increases with each next step. Back to the construction analogy, a poor foundation is a costly mistake.
If your company has a strong IT department with needed expertise, then doing everything in-house is a natural choice. The complexity comes in a situation when there is no IT department with the required knowledge.
Hiring a top talent to create an in-house team may be a time-consuming process that will take months, if not years. Finding a bespoke software development company is also tricky since you need to be sure your vendor is a reliable partner. On the other hand, an external vendor will be responsible for increasing/decreasing the team's size, performing all the necessary training, and so on.
In other words, we are again in the “build vs. buy” situation. In my experience, it’s possible to build an incredibly successful B2B SaaS without an in-house team. It’s cost-effective and cost-efficient. External vendor doesn’t need office space, insurance, or years of training. The most important thing is to have a person with a product vision and understanding of your market on your side. You can’t outsource the strategy!
First, be prepared to invest some time in research. Learn about their previous and current clients, check case studies, and feedback from their customers.
During discovery calls, get familiar with their team and internal processes. Carefully analyze the quality of communication - it's a very important part of any cooperation. The presence of various certifications and strategic partnerships is another good sign of strong technical expertise.
A small pilot project with a vendor may also be a good idea before signing contracts with substantial commitments.