Successful remote software development in China: Tips and suggestions
Software development is hard. Requirements, designs or priorities change mid-way, people come and go, test matrices balloon in size, technologies quickly change or become obsolete, etc. It’s no wonder that many software projects fail or “finish” far short of initial expectations.
Remote software development is an order of magnitude harder: formidable obstacles like language, timezone and cultural differences are thrown into the mix. That said, remote software development has attractive benefits such as: lower labor costs, greater availability of good engineers and the potential to do development 24 hours per day.
Planning to do remote software development in China? A couple things to keep in mind that can increase your project’s probability of success:
Have bilingual and proactive individuals in your team
Some people on the remote team (at a minimum, the project managers) need to be highly bilingual – able to fluently converse and write in English and Chinese. These people must be able to pick up on the linguistic and cultural nuances of both languages – if not, it is excruciatingly difficult to build rapport and an effective partnership with the remote team. You want proactive individuals who take pride in their work and persistently drive issues to resolution; it’s all too easy for issues to fall through the cracks (intentionally, or not) when working remotely.
Be especially S.M.A.R.T.
Most of us have heard it’s important to set SMART goals: Specific, Measurable, Achievable, Realistic and Time-framed. A no-brainer isn’t it? How many people/teams practice SMART in reality? Not many. Perhaps local development teams can survive without SMART discipline. However when working with remote teams it becomes a necessity - goals, issues, work items, tasks, etc can only be communicated precisely and effectively by being SMART. For example which of these two statements do you think is more useful?
- Please finish the shopping cart module soon.
- Please finish the shopping cart module (including coding, manual testing, passing all automated test cases and performance profiling) by 6pm this Thursday.
Communicate, communicate, communicate
Communication is the lifeblood of a project – starved of communication, a project rapidly withers and dies. Differences in language, timezone and culture conspire to make communication with your remote team as tedious, slow and awkward as possible. You need to come up with a formal communication plan and strategy. For example consider enforcing communication processes and practices such as: regular 1-1s with key team members, regular demos of the latest build of the software, reporting (machine generated? and/or more subjective but agile written reports by your project manager?), all-hands meetings, requiring written summaries with SMART action items after every conference call, etc.
Keep the project/component as isolated as possible
Ideally, the local and remote development teams should work on completely independent components of the software project. Every overlapping area between the local and remote components is a potential source of friction and misunderstanding. Managing overlapping areas properly require non-trivial effort and time. In reality there will inevitably be overlapping areas of development – you must proactively design and implement a plan to manage them: perhaps the shared interface needs to be fully defined before coding starts? or the local team can finish their component first, then the remote team can plug in their piece later?
1 comment January 27th, 2008




