I have years of experience of working as a software developer in outsourcing company and about 6 years of experience of managing an outsourcing company.
We(Simply Technologies) completed 40+ projects during those 6+ years. In this post I’ve tried to put together all the essential and mostly easy to do things that I’ve learned from our best clients during that period.
Do your homework
Requirements gathering and mockup creation can be very time consuming when working with remote team, on the other hand those do not require any technical knowledge. Try to create at least initial version of functional requirements document and design mockups in-house. It is clear that those documents cannot be final and will be constantly updated during development process. Putting together all your ideas will help you to rethink the idea and future product and will give a very good base to the outsourcing company for understanding your idea/product and will save a lot of time and money on communication and possible misunderstandings.
Travel to your team
Nowadays there are number of tools that help remote or distributed teams to communicate and cooperate. Those are good and almost replace in-person communication. But even video calls can’t replace sharing a lunch and having informal brainstorming. People want to know the story behind particular idea, product or feature, they work as a team effectively when they have a common goal. Even if it is difficult to visit the team regularly try to do that when starting the project or planning an important milestone.
Know what you plan to delegate
Software development is a very important part of product development but it is not the only thing. Product development also includes UI/UX design, defining functional requirements, technical requirements, project management, product management, quality assurance, production and test infrastructure creation, support and number of other technical and non technical things. Some on those tasks could be handled(partially or fully) by software developers. It is very important to know and clearly communicate what duties should be delegated to the outsourcing company/team.
It is not easy to put realistic milestones, especially when you create the software from the scratch, but having a bad plan is better than having no plan. Milestones will help you to plan your time and budget, predict possible delays and budget inadequacies as early as possible. On the other hand your team will have clearly defined goals and deliverables. Make sure that the software is usable after each milestone, even if you don’t plan to go to market yet.
It is very easy to forget about this kind of informal things when your team is far from you and you are not managing it directly. Celebrate successful launches, successful sprints, milestones or anything else. Send small presents, organize and pay for dinners, this will require only 1-2% extra cost, but the impact on the team motivation and commitment will be obvious.
Spend time on selecting right company
I’m sure you would expect this to be the first topic in this post and you are right, company selection is the key. The reason I’ve put it here is, I’m planning to create a separate post about selecting the best software development vendor.