Each project has its own challenges and each customer brings his or her own challenges. Some customers have well defined requirements for their software projects, and come with firm requirements and others are just trying to describe what to develop on the phone. Despite these individual differences in the customer's level of preparedness, each customer needs a quality product at the minimal cost, and should get one.
I keep on telling our software engineers we cannot afford to not give our best to every project that we undertake - well defined requirements or flexible requirements. A software is only as good as the people who develop it. Software development is far more than just coding. Is language chosen right for the job? Are algorithms are chosen correctly? Do the engineers know how to write a test plan and test a software? All these things make a big difference in the final result.
Other day, a customer came with a code that a local contractor has developed for them for a mobile phone application. Despite spending three months, Software wasn't functional. It wasn't properly written to meet the mobile carrier's requirements how an application should behave. Finally, the customer gave up on the gentleman and came to us to salvage whatever we can. The whole process delayed customer's product introduction by six months since salvaging a badly written software, often, is lot harder than just doing the fresh development. The point that I am trying to make it choosing inexperienced individual software developer can appear to save the money, but may cost a lot more than if you had begun with a good solid team. So, here are my simple bullets for choosing software services vendors for outsourced software development.
- Know the background of management team. Do these people have the software development background and necessary educational background to develop software. In India these days, everyone from a construction company owner to a former restaurant owner has started a software company. You should definitely avoid these companies whose owners have no direct software background. Why would you trust a company whose management is not quilified in the area? So, read carefully the background of the management team. Have they worked on applications similar to yours. Don't trust the posted bio (which is often fake) - instead demand to speak with the management team member.
- Can developers speak English and are available in your time to talk to you is very important. A lot of things can be done by emails, but there are times only a phone conversation is needed to clarify. How would you communicate if other side cannot speak fluent English.
- Project management - who manages the projects in the company and if things fail, who you can deal with to get the situation corrected. It is so important as standard for project management in the US and other western countries are very different than in developing countries. For instance in India, unless timeliness is enforced from the US, it is hard to get anyone to commit to a given time. So, insist on US based project managers.
- If you are signing a contract with a foreign entity with no US operation, you have no legal recourse to any thing. Legal systems in most developing countries, including India, are broken. In India, it takes 20 years to get a simple case to go through legal process, if you are lucky. So, insist on US based staff, and the company entity, and US legal jurisdiction.
- Many people like to see sample jobs and ask for customer references. But these are like job references. Do you think any one will give you name of a customer who is not going to give them a favourable response? Therefore, I suggest speak directly with the management team member of the company, ask good exploring questions, and you will learn a lot more about a company's operation than just by references alone.
- Insist on a clear development methodology and project plan. Don't leave things vague as in software - unless agreed well defined in advance - a feature means to different things to two people. So, be clear and insist on regular updates. Most importantly, insist on well written requirements and design documents. This alone will ensure that you know what is being developed and how this is being developed.
I hope this helps if you are looking to outsource any software development. And, if you would like to talk to us - you can visit us at http://www.rapidsoftsystems.com/. Sorry for rather shameless advertising, but we promise to give you no obligation help whether you use us or not for your next software project.