Everyone has heard of offshore development by now. For better or for worse many jobs have been moved offshore to places such as India or China. In America we can either be upset by off-shoring or we can take advantage of it.
Rightshore development is offshore development done right. I will not recommend any specific offshore development companies; however, I will provide some tips as to what to look for and how to turn offshore into rightshore with respect to software development.
Find a company who practices Scrum- Why is this important? The foundation of Scrum insists that the development team is self-managing. Since your offshore team will be in a different country and likely a different continent you need a team that does not need handholding. You need to feel confident handing over a set of requirements or tasks to your rightshore team that they will complete them successfully and accurately without requiring too much of your own time.
See the Scrum Alliance for more information on Scrum.
Low Turnover-Select a company who has a low turnover rate of software developers. You want to have a core group of developers which learn to understand your business and your company culture and if you are having new developers rolled in and out of your rightshore team you will have to continually battle the learning curve. A rightshore development team should be an extension of your own core team within your company.
Version Control- Version control is critical when transforming an offshore team into a rightshore one. It is imperative that you always have the latest copy of source code your rightshore team is working on. You need to review their code and make sure it adheres to your standards and policies. It does not matter if you have a single source code repository or if you manage 2 different repositories as long as your processes ensure collaboration between both teams. It can work very well if there is a single source code repository from which both teams checkout their code to work on. An alternative is to allow the Scrum, self-managing, rightshore team to have their own version control from which they do their own QA and when they send updates you can check them into your own source control and perform your own QA.
Microsoft Team Foundation Server- It is essential that you have a single location to store your backlog of to-do tasks. I recommend Microsoft Team Foundation Serverand the Agile project template. Here you will record your to-do tasks, referred to as sprint backlog items and product backlog items. You will assign tasks to the appropriate team and even team member if desired. You will track ETAs, bugs, and progress. Microsoft TFS provides a central location to store discrete tasks from which developers can work effectively. You can also have a list of assigned tasks sent to each developer each day. Go here for more information.
Communication Skills- It is imperative that the company you chose assigns a project manager who can communicate in English and has a lead developer who can effectively communicate in English. It is not necessary for all team members of your rightshore team to speak or even understand English. It is critical; however, that the lead developer can effectively communicate, both orally and in written format, to ensure that your business needs and the design goals are being fulfilled. You should have frequent (daily) phone calls to discuss open issues and allow for a dialogue to resolve questions and concerns. You will need to make sure information is repeated to ensure both parties understand each other accurately. Some offshore companies charge more for developers who can speak English and you must be willing to make the investment. Poor communication between teams will kill any project.
Consistency- For an offshore team to become a rightshore team they must provide consistent and reliable code. It is important to maintain the same members as is feasible so that you can rely on consistency. You have to be able to pass on projected completion dates of tasks to your client based on the ETAs the rightshore team provides you. You need to have confidence that their estimates are accurate so you can accurately estimate to your client or know how much to buffer your estimate.
Identical Environments- You do not want to spend time hunting down bugs after your rightshore team has provided working code only to find out that a difference in your environment is the root cause of the bug. You need your environment and the environment the rightshore team is developing in to be identical, at least as much as is possible. The best way to do this is by using virtual machines. You create a development environment on virtual machines in which you will work and then you send your VMs to the rightshore team. This way, both teams are working off of essentially the same systems. If possible, the rightshore team should remote into the same environment which your team uses but often due to geographical distances and locations that may not work well.
Some have tried to go with the cheapest outsourcing companies and doing so will not result in a solid, useful, and successful project. As the saying goes you have to spend money to make money. If you follow my suggestions you will find there are companies who can deliver on each of these points and still at a price point which allows you to realize desired profits.