In the previous post, I defined Extreme Remote as "having team members so far away that regular overlapping work periods are very difficult to maintain". And, I referred to countries such as Pakistan and India as sources of technical talent. So, isn't that just what we typically refer to as "off-shore development"?
I consciously avoid using the term 'off-shore' because, to most people, it implies a way of working and a set of problems that is exactly what we are trying to avoid. 'Off-shore' typically implies a waterfall process and an 'over-the-wall' mentality. With Extreme Remote, we want to apply genuinely agile principles and creatively solve/mitigate the challenges posed by distance, time-zones, and culture.
Here are some key differences between off-shore development and Extreme Remote teams:
|Big Up Front Design||Iterative design|
|Requirement misunderstandings revealed at time of delivery||Requirements expressed as automated tests; continuous integration allows early evaluation and course correction|
|Lack of code ownership||In-house team members intimately familiar with code at all times|
|Code quality issues revealed at time of delivery||Daily code reviews and regular group code reviews preserve code quality continuously|
|Separate teams||Integrated team|