Author Marko Krstic

How to choose a software development company?

Utilizing a software solution to solve some specific tedious tasks is very common nowadays. Many kinds of ready-to-use software on the market can help us achieve our goals.

It's not always the case that we can find already ready software to solve our problems. It's not rare that sometimes we need a custom software solution because our business process is specific enough, and there are no similar solutions on the market.

If it happens, we need to find a specialized software development company to build a custom software solution for us. If we are coming from the non-tech world, it would not be an easy task. Since custom software development might be costly, choosing the right company is essential.

Let's see some red flags and what we should consider selecting a good development company.

Communication

Good communication is probably the most critical part of our interaction with a development company. If there are any problems in the communication, it's already a big red flag, and we might not consider that company as our partner.

The first thing we should pay attention to is a person's competency. Our interlocutor should have enough competence to explain a software development process clearly.

An interlocutor can be a PO, Developer, CTO, CEO, or anybody from a software company. Regardless of the role, they need to be an expert in their field.

The company's representative should be able to explain the whole software development process to us and give us clear statements regarding the various expectations like feasibility, testing, costs, duration, etc.

Since we come from the business world and don't have a technical background, we must understand the rules before deciding to pick the right company. If they cannot explain it to us the way we can understand, it's a big red flag.

Even though we are not technical enough, we can easily spot if our interlocutor is a competent person. Many companies make mistakes by setting a not-qualified PO as a representative to talk with the clients. Usually, it leads to big failure and huge costs.

Ignoring our business

A prerequisite for a quality software solution is fully understanding the client's business. People from the development company should pay close attention to our business and learn the necessary processes to create software.

Without putting effort into analyzing our business, it leads to unwanted software that doesn't do what we expect. Even though this is a crucial part of the software development process, many companies disregard this step. We should not consider development companies that are not interested in our business because the final outcome will be disappointing.

It would be similar if we wanted to build a house for our clients and didn't consider their wishes and needs. Ultimately we will build a house for sure, but probably not what our clients expected and maybe un-useful for them. That way, we all spent a lot of time and money and got unhappy clients with a house they didn't want/need.

The same would happen to our software as well. If a development company doesn't learn about our business to recognize our pain points and why we need a custom software solution, it might be very uncomfortable for us in the end.

They must not ignore our business and needs; if we feel they are not interested enough in our business, we should consider another company.

Knowing the rules from the beginning

Before doing anything new, we must familiarize ourselves with all rules and processes. Knowing the game rules before getting into the match is always a good and intelligent move.

Good software development companies are willing to educate us about their processes and explain everything about building custom software. That's important because of different aspects.

First, we know what to expect. We don't want to put ourselves in an uncomfortable situation when we get our bills, when the project takes too long or if we get the wrong solution. We need to know all these things from the beginning of the process. Some of them are not easy to precisely determine, but at least we should get them in some range.

Second, when we know what to expect and have everything written down, it's easy to validate if they obeyed the rules and delivered to us what they promised. Unfortunately, many companies don't.

We should be asking as many questions as possible regarding the software development process and what we can expect. Good companies will explain all rules and strategies before the game. And this is essential to us. But the best companies will explain all these without asking them because they know that's the most suitable and safest way to deliver the best possible solution and a make trust and good relationship.

Bad companies wouldn't even bother to explain it. Also, they may not explain it because of other limitations, such as a lack of experience or incompetent people. Whatever the case is, it's always good to avoid them.

Not being involved in a development process

If we don't have a technical background, it's normal that we don't know what to expect from a software development company and its processes. Sounds very logical that a software development process belongs to a development team, and we are not part of it. And that's wrong. We should be part of a development process.

What do we mean by being involved in a development process?

That doesn't mean we should have a tech background and start developing a solution with other developers. Instead, we should ensure that the development happens incrementally and check each feature as soon as it is complete.

They should provide a test or staging environment where we can follow the project status, use it and test the already implemented functionalities. In other words, we should keep track of implemented features, try them out, and give suggestions if something needs to change.

Being involved in a development process has many advantages:

  1. It reduces the risk of delivering a solution we don't need. If they say at the beginning of the process that they will inform us when all is done and ready, they might deliver the wrong solution. Especially if it's a complex project and if it takes several months to implement. Being involved in a development process, we can see if our app is being developed in a good way. If not, we can suggest changes to put it on the right track.
  2. When the project is complete, getting familiarized with all features and how our software works is a challenge. That's especially true for complex projects. If we check our project after each implemented feature, we will efficiently learn how it works without dedicating considerable time at the end of the project to understanding it.
  3. Also, testing and validating the application behaviors step by step after each feature is a huge time saver compared to doing it all at once when the project is done.
  4. We know the project status at each moment. We know what's already developed and what's left. Therefore, based on that information, we can make our plans and adjust our timesheets.

Being involved in a development process is specific to complex projects that take three weeks or more. For the smaller and simpler projects that take a few days, it's not that significant.

Therefore, if a software development company is unwilling to involve us in the process, it's a red flag, and we should probably consider other options.

There is more about a software development process.

Don't go for the cheapest solutions

It's not without reason that there is a saying you get what you pay for. We should be aware of it, mainly because building custom software costs a lot of money.

If we decide to go with a cheaper solution below the market value, we might get unuseful and buggy software that doesn't suit our needs. It will be a complete waste of our time and money. Moreover, we need to find the right company to fix that mess for us, which is always more expensive than doing it right from the beginning.

One of the reasons why building software solutions is costly is because good software engineers are expensive and rare on the market. They usually have a lot of experience and excellent knowledge of software engineering.

Companies with lower rates usually cannot afford the best engineers. In that case, juniors and people who are not qualified will likely work on our project. That leads to buggy software that doesn't meet quality expectations.

Quality assurance is one of the essential parts of software engineering, and developers are responsible for writing automated tests to ensure that software does what it's supposed to and is bug-free. But to meet cheap software development expectations, developers must cut corners and skip some essential habits in writing software, like automated tests. Why we need this is presented in the article what is quality assurance in software engineering

Inexperienced developers will very likely build software using not adequate architecture and create big problems in terms of refactoring and cleaning up the code-base. Why this is important is described in the article: what is code refactoring

Usually, cheaper solutions lead to poor software and big disappointments.


See all articles