There is a vast of software development companies to choose from, when you come to the point where you want to develop something of your own.
But there are some points, you can go through eventually to see, if what you have chosen to work with is the best option in your case.
Here we go:
1. Language barrier – good English is hard to find on some parts of the world
Most likely, all companies will try to assure you their software development team are flawless in English, that can prove to be far from reality if you start to look beyond the team leads or senior developers.
The best way of checking what you are dealing with is to ask the company to arrange phone or Skype call with some members of the team you are going to work with.
Lost in translation is not what you want, as it can lead to misunderstandings, while misunderstandings lead to wrong implementations, extra expenses and prolonged deadlines.
2. Cultural fit
This could be the biggest pain when hiring an off-shore company. Big cultural differences can lead to communication issues.
Similar mindset means you don’t have to focus you thoughts on how to speak with the other person “correctly”. You can focus on things that are important to you and have a straight language.
3. Time-zone differences
It’s no secret that most likely the software company will be setting the tone on their working hours, and if there’s a 10 hour gap between their clock and yours, I guess it is not hard to imagine what that means. The further away you are from each other, the less common working hours you have, the less time you can communicate with each other.
This might not be an issue, if you carefully plan your collaboration and on-line meeting hours. However, if you go the “agile” way when the requirements of the application sometime appear “on-the-go” then it is a lot better for both parties if you can reach each other without a hassle to pass the knowledge/information as soon as possible.
4. Poor Communication
Communication is usually the weakest point of any developer and it can turn to be nightmare when it comes to a team of several developers.
This is why you should consider investing in a highly skilled project manager or a team-lead who actually will perform the communication central role inside the team. Without this guy, you simply might end up with a bunch of developers (maybe very good developers) each of which will do everything on his own. This may even lead to situation when each of developers have developed some modules inside one and the same system which in the end do not work together or have totally different set of standards.
Never assume that the tasks you define are clear for everyone. Very often, the developers will not be very interested in understanding the core of your issue and may simply implement “something” that “somehow” solves it, not really thinking about the whole picture together. This is also one of the key points when the project manager/team-lead/software architect becomes handy in understaning the business processes and explaining them in a technical way to the developers, which is a lot more convenient way of communication for them.
5. Not meeting the deadline
Understanding and overstating the delivery capabilities is a big pain of each and every custom software development company.
First of all, it is always hard to estimate what it might take to develop custom software, well, because it is custom. If you bake one and the same or very similar types of cakes every day, then you can predict that the next cake you are going to bake, will most probably take the same amount of time. But if you have to bake different cake each time and you haven’t baked that kind of cake before, you can only use your intuition (intuition is a “sense” that gets developed over time as you gain more experience and gather more knowledge in some area) and some techniques of software development estimates to predict the effort.
Second, if the software development company feels they are not going to meet the planned deadlines, it is not always possible to add some extra worker to the team. Software development is not the case when 9 women can deliver a baby in one month.
Third, very often when you as the customer start to push very hard on your imagined deadlines, the responsible person on the software company side may “crash” under the pressure you create and finally say what he really doesn’t mean: “yes, ok we can deliver it in your desired timeline”. But is that what you really want to hear?
No matter what you say or hear from the software company, add an extra few days in tems of expectations from a deadline.
6. Employee motivation
Motivation of the development team might sometimes have huge impact on development life-cycle and quality of the end-product.
Even if the developers are not your employees, it is wise to ask the team-lead about the work environment and satisfaction. If the satisfaction is low, ask why and what can be done to avoid that. This doesn’t always mean that you will need to deal with it somehow directly. This will just raise this question in the company itself – why the employees are unhappy and what they can do to change it. Sometimes, software people focus on their main tasks too much and forget about other things. Your questions will simply poke and wake them up.
7. Switching resources – developers multitasking between the projects
When outsourcing software development, you may very often find out that the resources dedicated to your project are switching very often. Why? Very simple. If the work-load you require is not stable, the software company must dynamically allocate the resources to your and other projects which could be similar in terms of work-load. Otherwise, the developers will be sitting “on a bench” and that is a very high cost for the software development company to pay.
Developers multi-tasking between several projects can be very inefficient. First, because they need to “re-tune” their brains every time they switch the project, second, they might be running an outdated environment since the last time they worked on your project, and they need to update everything in order to make it work again.
One approach to this is to ask for a dedicated team. Sure, this will seem more expensive in the beginning but it can save you a lot of money.
So, understand this correctly – the keyword of the magic strength behind a dedicated team is simple: “Focus”.
Even switching between different tasks within the same project is very distracting and inefficient, therefore you always want to make sure the developers are well organized and not interrupted too often. This is also why you also want to have the communication between you and the team to happen one-to-one with the team-lead/project manager, not to each developer individually. Let the project manager absorb all your input and give the developers clean and specific information they need to accomplish the task.
Micromanagement is something everybody dislikes. If you do that yourself, it for sure will cost you a lot of time and money, as well as will have a negative impact on quality of the end-product. Micromanagement of developers within a team can only be done by people from the same world. Otherwise, you will be like a conductor without musical background conducting orchestra in an opera.
To avoid micromanagement, make sure you select the right people, especially the right team-leader.
Look beyond their ability and track of previous projects, search for leadership skills as well as technical and communication skills.
9. Technical skills and quality assurance
Matching the needs of your project with the capabilities of the outsourcing company is by default.
But, in order to find the best match, get into details. Create a clear, very specific and detail oriented project requirement list – Documentation – and you’ll save a lot of time with this skill set – capabilities matching. When speaking Agile, make sure they clearly explain how they do it and how they manage to be successful in agile development, emphasizing concrete results.
Ask them how they are going to assure the quality of the produced code. If they are not mentioning the quality assurance at all as a part of development process, skip the company.
10. Warranty and maintenance.
Make sure the software development company offers warranty for the software they produce and they offer maintenance of the product after the development phase.
If they offer to build a complete software for you (no major 3rd party things involved for which they cannot give any warranty) and do not offer a warranty then most likely they are aware that the code quality will be questionable and they don’t want to take any responsibility for that.
Of course, there can be cases and projects/situations when software company won’t give warranty for a reason, so each case should be considered individually.
In any case – ask for it!
So, that’s it! 10 points you should consider and remember about, when choosing the software development company.
Save it somewhere and use it. It can save you a lot of money and time!
P.S. =) And, of course, remember that “Kotique” always offers proffessional software development services.
Our expertise is dealing with the ambitious requirements of our customers and saving them from disaster projects developed by other software companies.