When choosing a software development company to provide a new system, part of a system or extension to an existing system, there are a large number of things to consider. The obvious ones are Price, Timescale, Portfolio, Experience, etc. etc.
Here are 3 small questions that are quick to ask and can be quite influential in your decision making and potentially protect you in the future:
1) Who will own the intellectual property?
It used to be the case that software companies would retain the intellectual property of software they developed even though it was paid for by another company. This was because by default, the intellectual property sits with the developer unless explicitly transferred in writing, and it still often is like that if not mentioned.
Nowadays, if you simply ask the question, most developers will transfer the intellectual property of the software you have developed to your company on payment of the final invoice.
If a company does not offer this, then you may want to consider another supplier as this can be costly in the future and even affect acquisitions if the software in question is intrinsic to the running of the business.
2) Can you bring the future development of the software in-house?
The purpose of this question is to ensure that you are not tied to the software developer for ever more unless you replace the entire application. This protects you from the event of falling out with the software developer also the event that the software developer goes bust and can no longer work on the application.
You should check that the technologies used are commonly available and can be used by any other developer.
Check that there are no third party add-ons of which the source code is not available or anything that requires a paid for license to use.
And finally, check that when the software project is finished, that you can have a copy of the code and the database structure.
3) What kind of warranty do I get?
A lot of software development companies will impose a limited timeframe for you to finding a bug with the system. This may be 30 days or 6 months. It doesn’t really matter because a bug by definition falls under the “failure to meet the spec” category, therefore, it should be fixed whenever it is discovered.
Obviously a bug is not things that go wrong due to future changes outside the control of the development company. They have to be things that never worked in the intended deployment environment.
Basically, a lifetime warranty will prevent you from nasty bills for things that you have actually already paid for.
I hope these are of some help to someone and maybe food for thought for the industry as a whole.