In one of the previous posts, I have tried to disprove most popular myths about cooperating with software houses. Today I will try to point out a several aspects that I think you should pay attention to when choosing a software agency.
Let’s be honest, money is important and if you want it or not, at some point you will need to talk about costs. No one likes to overpay and every business owner strives to find a solution that meets expectations and it’s in the budget. That’s what it’s all about. My point is that finance issues should not become the only or the most important criterion when choosing a software development company. Imagine a situation in which you have two such companies – one with proven experience in solutions and technologies you are interested in, positive customer feedback and communicative team. On the other hand – company you do not know much about and can’t verify their reliability, but with services cheaper by 15%. Can you afford such savings?
If you have already chosen a tech stack for your project and you’re sure that you want to use it, just find a software development team experienced in such technologies. Simple as that. But if you don’t, it will be good to find a software company specializing in at least few up-to-date libraries/frameworks, that will be able to advise the best solution and prove it with examples from its implementation. Do not assume in advance that they will simply advise you only those technologies in which they feel strong. Get to know all the arguments, ask questions, ask for examples. You want a mobile app for both iOS and Android made in Cordova (because you heard that it allows to create cross-platform apps) but software house you’re talking to recommends using Xamarin to develop this project? The choice is yours, but it’s worth to consider all the arguments and think about choosing tech stack one more time.
It is worth to pay attention to the range of services provides by software development company, even if your needs at the moment are not very extensive. Now you need only a backend solution, but who knows, maybe in next few months you will need also a frontend layer, Ui/UX design or mobile app? Of course you could find another team to do it, it is a common practice, but in many cases proven team who already knows the essence of your business is the best solution.
Portfolio / References
The best way to verify the experience and reliability. Case studies on company’s website or profile on Clutch.co are a great source of information and you should check them first. Remember, however that software development is a specific business and in most cases software houses are not allowed to present their full portfolio in public, due to NDA agreements, but you could always ask for more information about projects or clients’ references. Also, do not reject software agencies just because they do not have similar projects in their portfolios. I know that in some cases this is a necessary requirement, but in the vast majority cases, experience in selected technologies is much more relevant.
Who owns the code?
One of the most important issues that you should establish before starting cooperation with software agency is to determine further property and use rights. The most commonly used solutions are:
- the company assigns all ownership for the software to you
- the company retains all ownership of the code they write for you and grants a license to you so you could use it
- the company assigns all ownership of the code to you, but you agree to grant a license to the developer to use and modify the code (or it’s parts) in future projects
- the company retains all ownership of the code, but grants a non-restrictive license to you to use and modify it as needed
Of course, these are not the only solutions. You can easily find your own way to solve it, depending on project size, specification, used technologies etc. In most cases there is no problem to reach agreement on this matter. You should only take care of it early enough.
Despite all the financial and technical aspects mentioned above, it is important to pay attention to the people with whom you will potentially cooperate. Openness, communicativeness and flexible approach definietly faciliate mutual cooperation. Saying this, I do not mean people who just want to make you feel good and admit that you are right everytime. I mean people, who will be involved in your project, able to advise you the best solution, able to tell you that you’re wrong (when you really are) and open to new ideas.
You could easily add at least a few points to the list above but the goal was not to create a long essay or show that choosing a software house is extremely difficult. It is not, if you follow the advices above.