Third World, not third rate
Charm Flickr (creative common license)
On face value, software development is the great equalizer because all you need is a computer, which is widespread and the Internet, which is accessible. But if you peek more closely in the industry, the challenges operating in a third world country is quite significant compared to first world - just as it applies to any other industries.
Nota bene that third world is off course encompass a large part of the world. I write this based on my experience in working in or dealing with operations in Egypt, Morocco, India, Azerbaijan and Indonesia. My first world experience are in Australia, Singapore, Czech Republic, Italy and USA.
English as Lingua FrancaEnglish is more or less the Lingua Franca of programming. Most information about software are available first, if not only, in English. Although English comprehension is much easier to achieve, mastering the ability to write clearly in the language takes a lot of effort and time. This reduces the amount materials and critical thinking from third world programmers accessible to wider audiences because simply we do not write as much in English. I suspect that this also have a big impact on reduced open source contributions from the third world.
Immature local marketLocal business software market in a third world is completely different that first world. We operate in an environment on which business systems are either new or do not exists. There are a much higher learning curve for the customers for their first system development compared to organizations that have relied and benefited from software for a while. Critically, things that software will optimize in the first world (thanks due to higher labor costs), might not make sense in the third world.
Different life rhythmThis especially applies to outsourcing projects. In Muslim countries like Egypt, the holy month of Ramadan completely change the rhythm of life. People fast during the day and more importantly, they spend more time with friends and families at night. All these factors do not bode well for productivities during the month. It is what it is and schedules should be adjusted to accommodate that. On the other hand, we keep on trucking during December.
Process adoptionPopular processes such as Agile or Lean are great ideas but again these ideas originated from first world countries with its own built in assumptions and conditions. Can it be applied successfully in the third world? I bet there are plenty of evidences that it can. Are there any other alternative processes that can be implemented instead that bring better results considering local conditions? Yes. We have been trying one in the past 18 months and the results have been encouraging (this is for another post).
Our major cities traffic are horrible and mostly pollutedWe are more of a social animal that the stereotype "geek" being portrayed which means that we like to work in offices - together with our mates and colleagues. The problem is that most of the time our traffic are horrible and our public transports are non existent. You don't know traffic jam until you get stuck in one in Jakarta or Cairo. The bottom line is that all these just make work a bit more difficult than working in locations where the air is clean, public transports are available and commute are short.
We have to fight our education systemOur tertiary education system aren't that great. Yes we would have one or two example of excellence, but there are plenty more where our education system fails our students. This means that we have to invest more in training our incoming developers that we would have otherwise in first world.
Our operating environment is harsherA third world country means there are big deficiencies in our government, private sectors and overall operating environment - in short we just have to deal with more bullshit and everything is a work in progress. All these saps more energy that could be otherwise spent on more productive things.
Different quality perceptionOne of the more frustrating aspect in operating in the third world is the difference perception of quality. What is acceptable in local market will not pass muster in international market and vice versa. There is also diverse cultural gap in terms of design and look and feel. What is considered as good design can varies and usually local designers are struggling to come up with designs that are acceptable to their foreign customers.
Anyway these are just several factors I would like to highlight in the reality of software development in the third world. When you see great software from the third world, try to appreciate on how much challenges that those teams and companies have to overcome to achieve that outside the technical and engineering work itself.