In a previous post I spoke of “scaling distributed development” in reference to the challenges in increasing the size of a team and the complexity of projects while working under limitations of the experience level of developers available in the remote location.
Continuing on this theme I have continued pondering what it takes to effectively do development with a remote office.
I use the term “distributed development” as opposed to “outsourcing” since the word outsourcing generally implies one company sending the work to a second company – not multiple teams of the same company in different geographic regions, but my thoughts more or less apply to both scenarios.
My thoughts are shaped greatly by my experience with a remote development team in Pakistan and myself based in the US. Therefore they may or may not be applicable to other regions such as India and China.
What I Feel is Necessary for Effective Remote Development
In order for remote development to be successful, I believe the following things are necessary:
- Senior leads “on the ground” with the team who have experience gained over years of development and most importantly in delivery of applications to customers and operating them in production.
- Frequent communication between the US and remote office with as much of it being in “real-time” as possible, not just “touching base” morning and night. Development is not a shift-work job like a factory. Continuity and comprehensive knowledge is critical.
- Human interaction through travel and face-to-face meetings. Nothing establishes team rapport like sharing a meal together. Rapport is what enables communication and difficult work to be done together in the long haul. Relations can be built remotely – but much more slowly, with much more effort and with far fewer people.
- The ratio of senior to junior must be healthy. Too few senior resources means the junior developers are not getting the mentoring and guidance they need, they make mistakes, code quality goes down, production issues arise, morale decreases. It’s my belief that a senior developer can handle no more than 5 junior developers if one expects proper mentoring, training and good code quality. This ratio may be able to change if there are solid ‘intermediate’ developers who can then have junior developers managed by them, but I have not seen this work very well. Intermediate generally means you’re not fresh (completely junior) but you still need guidance, direction and mentoring, and are therefore not ready to lead, mentor or manage others and therefore should not be setup to fail as such.
- The developers themselves must be consumers of technology products. If a developer writing an ecommerce application has never actually purchased a product online and had it shipped to their door, they have no common relationship to “how it should work” let alone “how it should feel”. Common sense is taken for granted – it is something learned through life experience.
Positives of Pakistan Remote Development
In 7 years of working with Pakistan developers, and likely seeing over 100 developers during that time, I have found the following to be true.
- Very intelligent.
- Very eager to work and grow.
- Amazing work ethic.
- English language skills (for being a non-english country) are quite good.
Of course, the extremely low cost is a final factor that can not be ignored and is the driving reason for having a team in Pakistan.
I have delivered some significant software and production systems with Pakistan development teams – myself being the only US based person. It can work and be very cost effective and rewarding.
Negatives of Pakistan Remote Development
There are definite drawbacks however to working remotely in Pakistan.
Time Zone
The time difference is 12 hours (from Mountain or Pacific US time depending on time of year) which makes real-time communication very difficult as it is limited to early morning or late night. It would be perfect for shift-work as you could do hand-offs every 12 hours – but development is not that type of work.
Cultural
Cultural difference means that “common sense” in each country is very different. Thought process is definitely different. Consumer experience with technology products is limited. This has an impact on understanding and requires much more detailed communication, requirements definitions and business reviews as nothing can be taken for granted. When it is, or something is “assumed”, the cost is wrong implementations and/or delayed timelines.
Perhaps another cultural difference and a side effect of the positive eagerness is not knowing what they don’t know. A desire to try something does not equate to knowing what or how to do it. Saying “yes” is great – except when that “yes” is not accompanied by a comprehension of what it entails. Commitments to deliverables can be rather misleading if in fact the person does not know what has been committed to or know how to deliver it, but wants to try it all the same – and therefore says yes.
Geopolitical
Let’s face it, Pakistan is not an ideal place in the world these days. It hasn’t been for years and likely won’t be for many more. My hopes and prayers are that the country will improve in its stability, infrastructure, economy, education and other matters, but today it is not a country many people desire to be in. This is a big part of why the cost is so low to hire people in the country. At the same time, it has a very significant impact on talent: people don’t stay.
Virtually anyone with a skill and the opportunity to leave will do so. It is evident to me in how many people I have seen emigrate away from Pakistan to Canada, US, Britain, Singapore and other countries over the years. It is more evident in the seemingly complete lack of “senior” talent in Pakistan.
It is virtually impossible to find and retain a “senior” level developer with 8+ years of experience, let alone 15+. Even 5+ is hard to find.
If the effort is made to train someone, after a few years as their skills and experience mature, the pull to leave the country increases and the company loses them.
I understand the pull. I work with 3 people in the US all who have immigrated from Pakistan. Incredibly smart, hard working people – very good at what they do. But they all left Pakistan instead of living their lives and careers there.
Impact on Cost and Productivity
Considering the extremely low cost of developers in Pakistan, doesn’t that outweigh the negatives?
Under certain conditions, it can work very well, but those conditions must be met or it falls apart, and in general I question the actual “low” costs.
Assuming communication and timezones are dealt with, and the cultural barriers addressed – one item can not be overcome through any amount of process, hard work or documentation. Geopolitical.
The geopolitical situation is beyond resolution for any one company or team, and it is a force that can not be ignored. To ignore it is to invite failure.
Long timelines, poor quality code, production issues and failed deliverables are all symptoms of one thing: a team that does not have the skills to deliver on what is being attempted.
What about mentoring, grooming and training? All of these are great – but if the people that are trained do not stick around longer than the training, then there is an incredible cost of training that is not recouped.
The senior developers spend their time training, not developing. Then the junior developers leave before they can become productive. The time of the senior developer is wasted as far as the company is concerned. The senior developer is seen to be “unproductive” because delivery is so slow – yet they have no control over the loss of the junior resources who were just getting good enough to work productively.
To make up for it, more junior developers are added – making the matter worse. A higher ratio of junior to senior means less mentoring and training for each developer. This means lower morale, lower skills, and poorer quality of delivery.
This catches up — bugs, production issues, delivery failures, long timelines. This then leads to morale problems and further turnover of resources, generally the ones with the most potential and skill.
Conclusion
Remote teams such as this can work very well if they are small and directly led by a senior developer lead.
Mentoring and grooming of developers in Pakistan (or other remote locations) can be done and can be successful. I’ve done it. It has worked well. It has only worked well though when the remote team has worked my hours and the team size was small — so that I had constant real-time communication. I did this for several years.
This however does not grow a business if those people don’t stick around. Nor does it scale.
Thus, I believe the actual cost of development for an outsourced development team with these traits is in fact much higher than the monthly salary of a developer in Karachi.
If a senior developer from the US is spending 75% of their time mentoring, training, grooming and managing junior developers – and those developers all leave within 2-3 years, what is the cost of that 75% of time compared to if it had been spent developing the products directly?
If a 4 month project takes 8 months because of junior talent, and 4 months of sales are lost because of this, are those 4 months of sales higher or lower than the cost of having a team of more senior talent?
To ignore these facts and not look at the actual costs is to set oneself up for failure.
No amount of documentation, process, hope or patriotism can overcome the geopolitical issues and lack of long-term talent.
So what is the solution?
The first thought is to have everything return to the US (or Europe, Canada etc, wherever the parent company resides) where developers expect to live their lives and have long careers, so talent can be groomed and retained.
Some business models just can’t afford this however. In that case, another location must be found where the following applies:
- cost of developers at least half of the US
- geopolitical situation where developers desire to stay, to live their full careers in their country
- good english communication skills
- intelligent and educated people
- preferably a culture exposed to technology driven consumerism
- preferably in a more similar timezone to the “parent company”, in this case, the US timezones
- safe and easy for North Americans and Europeans to travel to and stay for extended periods of time
I believe distributed development is here to stay, and creates significant value when done correctly. It is not an easy thing to do well though. Nor does ignoring the challenges of culture, distance, time and politics benefit the business.
I want to see a distributed team setup according to the thoughts I’ve described above and see it achieve the level of productivity and efficiency that is its potential.
Filed under: Management & Leadership