How to outsource your software development project, not your profit
Today, there are loads of different kinds of businesses. From doctor’s surgeries, to precision engineering and everything in between, like schools, travel agents, charities, and so on. In all these organizations, very often, the need arises for mobile app development, custom business application development, legacy software maintenance and so on. Hiring and keeping experienced software engineers or web developers on the payroll is not exactly cheap. And that is the reason why more and more people turn to software development houses to outsource their software development projects to. This article will give you a few pointers of how you can outsource your software development project and not your profit, as it does happen, so often.
Recruitment
I have been involved with recruiting experienced software engineers during my time as a software engineering manager, and let me tell you that it is not a cheap undertaking. Recruiting top talent is expensive, and you would not want to recruit anything less that only the top talent.
Payroll
The average salary of a good software engineer is way above the national average and so the payroll, does get high and stays high if you are keeping these people on staff. The only cost-effective way to employ and keep good software developers is to keep them relatively busy doing useful stuff, all the time. That is the only way to get the return on your investment.
Top Talent
Can you be sure that the person that you have just hired is very good at what they do? Can you be sure that the person you have agreed to pay that salary is using the best technologies and employing the best software development methodologies for the given type of project? These are questions that need a very good answer, otherwise you have just got yourself a liability.
Do What You Are Best At
By outsourcing your software engineering needs, you can concentrate on what you do best, and that is your core business. So many companies try to do many things at once, and end-up dropping the ball or creating something that is not very good and hence does not get widely adopted by their user-base. Waste of money, time and sleep.
So How Do You Do It Then?
Be Specific
The very first thing, you as the person looking to outsource your software development project to an external software house, need to do, is to be specific about what you require. You cannot let the developers guess what you need. If this happens, the “goal-post” will keep moving and time will move with it and inevitably, the cost will increase. You must have a very clear and concise requirements document that leaves very little room for assumptions. Not only will this save time and money but will ensure that the developers can come up with the best solution straight from the outset. If you get this step wrong, there is very little saving-grace left hereafter.
Questions
A good and experienced developer will ask many questions. They will leave no stone unturned. A good developer will make sure he or she has a very clear picture and correct interpretation of what the requirements are. If a developer asks very few questions then I would either assume (never assume anything when outsourcing software development projects) that the requirements specification is the best ever or that the developer is making assumptions and there is trouble down the road.
Experience
You must ask the developer to give you examples of recent projects. You must ask for permission to talk to some of those customers that the projects were for? Are those projects in use today? How many users are using them? Can you try them for yourself? You must dig deep in the experience put forward by the prospective developer. You must not go on words alone, ever. At least three, but preferably five solid years of commercial experience with developing similar type systems must be in place before considering outsourcing the project to that company. Your money is precious and you must choose wisely.
The Technology Stack
Another question I would ask is, what the technology stack is. In other words, what are the technologies that will be used for the project? What are the versions of them? If the developer says, “We use Adobe Flash”, then you need to run a mile from that developer. You do not want to outsource to a developer that has not kept up with the latest technologies and best practices. Take the list of technologies and versions of each from the developer and do some googling. If the developer says, “We use .NET 3.5”, then a quick googling session will tell you that the technology is at least 12 years old. Spending loads of money and then ending up with a dinosaur of a system, will not be a good outcome. Whenever you buy a second-hand car, you always look under the bonnet. I do! I am not a mechanic, but I have a look anyway. It is the same when you outsource. I know you are not technical, but still, spend 30 – 60 minutes googling about the technology stack. It might save you loads of head-ache.
Be Involved
Once the project starts, stay involved. Respond to queries from the developer as quickly as you can. Make sure there is a demo portal for you to see how the system is developing so that you can make observations and corrections. Do not let the developer go away and come back to you after a few months with the system ready-made. That is not acceptable. Have weekly or by-weekly sessions on the system and with the developer. Make sure any deviations are caught early. Document everything. All emails, any discussions must be summarized in written and agreed upon. You cannot allow a situation where one says, “I did not say that”, the other says “That is not what I meant to say” or “That is not what I understood”, and so on. In any dispute, you can only go by what is on paper, so make sure it is on paper, otherwise it never happened.