You're an entrepreneur with a dream idea that will revolutionize how people live. You work with others to research the market, and in doing so, you get followers and backers, maybe even some financial help. This is what will make you successful and you are ready to make it real. You start researching software development companies to find the one that will make make your dream a reality. There are a lot of development companies out there. Some have been around for decades, while others are starting up. Some have hundreds of people on staff and others have a few. How do you choose, and why not just choose the cheapest?
Why not just choose the cheapest?
There are many factors that go into this choice. Selecting a software company is like selecting any other service right? When you are starting a company, you need to find a lawyer, accountant and other service providers who are skilled in the service you need to get the company started. However, there is a difference between these services and choosing a software development company. While the lawyer and accountant need to know business and tax law in your region, the software company needs to know and learn the market you are going to win. They will experiment and learn with you as your product features succeed and pivot. Switching a software company after a couple years is much more costly than switching a lawyer or an accountant. Even a skilled software company with knowledge in your market would have to re-learn all the small details and understand why software decisions were made.
So what do I look for in a Software Company?
When choosing a software company, you are better off thinking of them as a partner, than as a service. Communication is an important aspect you need with a partner in any relationship, business or personal. Be sure that you will have a communication path to the development partner that you are comfortable with. Get an idea in your head what is important to you. Do you like to communicate via text/email, or do you prefer in person phone calls. Try to learn from the potential partner how communication will be with them.
Communication is a necessity, but you also need super hero coders and a design that is irresistible to your potential clients. So how do you know whether you will get this or not? This is where you need to do a little homework. Clients and testimonials are key. Don't hesitate to ask if you can contact someone from one of their clients. The software company will say many things that they are capable of doing and you can test these claims with their clients. You can also gain insight about the software that the company has experience creating. Has the software company made just marketing websites, or do they have sites with login, social profiles, video playback, and whatever else your application will need to do?
Cost isn't everything but be sure to have a decent understanding of what you are paying for. Read "Software Intelligence for the Entrepreneur: Project Size" to learn about why your software cost could range from $15,000 to $1,000,000. You might be shell shocked as to the cost for writing software. It isn't cheap, but beware of those that are cheap. You may pay for it in poor quality and support.
The initial cost of bringing a product to market is just part of it. Most of the time you don't get it right the first time and have to pivot your software to get your first clients. The software needs to be able to handle this and you need to be prepared to pay for it. Make sure you understand how this works from a cost perspective as well as a process perspective discussed next.
You might not care about the process the software company uses to develop your baby, but it is worth getting an understanding. Does the software company perform UX (user experience) research or are they fully depending on you to tell them how your users will experience the software. What is their process for testing the software? (more on this next). Find out how you are involved in the process. Will they involve you with a demonstration before deploying a new feature? Will they expect a book describing your software before the project starts, or will they work a bit more agile with lean iterations on features? There is a lot you can learn by questioning the software companies process.
You do want a quality product right? Well, what does quality mean to you? When it comes to writing software, a proper process will result in great quality. But just like anything in life, great quality is expensive. So find out how the development company handles quality control. When the code that they are writing for you is complete, what measurements are in place to make sure it works, is usable, and didn't break anything that was already in place. These tests respectively are called feature tests, user experience testing, and regression testing.
- Feature testing is done against the specific feature being added. Depending on the software companies process, the feature is defined using descriptive text, wire frames, and maybe a story line describing the end users experience using the new feature. Feature testing will make sure that the software feature meets these needs.
- User experience testing is typically was mentioned above in the previous bullet point, but specific user experience testing can be performed at a more granular level. This testing would be to place a user in front of the software with no instructions other than the task to perform. This testing catches anything that the user gets caught up on, or confused about. If your goal is to make an easy, fluid experience for your users, this testing is important.
- Regression testing insures that the new feature didn't break any previous functionality. As software gets more complex, new features have a chance of stepping on previous features functionality. Regression testing is a good practice but a better practice is for the software company to write tests as they write code so this regression testing can be done often and fast.
Automated Testing is where the software company writes tests in code that run automatically. Say you make a calculator application. A test would be to make sure that adding 1 plus 1 would return 2. If we added a feature down the road that modifies how addition is done, and this 1 plus 1 test fails by returning 3 instead of 2, you quickly learn that this new feature broke existing functionality. Writing automated tests like this and running them every time a new feature is added saves you a lot of money and time. Manually testing every function in the software, every time you release a feature, could take weeks and succumb to human error. A company that doesn't take advantage of automated testing is going to leave the code messy and buggy so beware.
The time will come when you will need the software company to react quickly. One of your clients can experience a bug even if the software company has in place and all the checks and balances in place. There's a saying in the software industry "a bug is a missed automated test". This means that there are no bugs, just features that didn't get tested enough. When this happens (and it will), how will they react? Check the contract for a service agreement to see if they cover they're own bugs or will they charge you.
Where do you start?
There is a lot to think about when selecting a software company, and it can be a difficult decision. Cost isn't everything and should be the last thing you consider, however it is definitely something to consider. Just like going with any other service provider, keep notes on what you liked and didn't like about each company you meet with. You need it to be a long term relationship and a company that takes your dream seriously. Try and find a company that has experience in the market you are in. This reduces their learning curve, and means they most likely have clients like you already. And feel free to ask to contact their clients. You already met with the software company while they were trying to get your business, make sure they stay that nice throughout the project from their existing clients.