Thursday, January 30, 2014

Key challenges of a distributed software development

Our business at Cogniance is all about software development with distributed teams and our clients oftentimes ask us how we overcome related challenges. Before we discuss answers though, it is important to clearly understand what exactly these challenges are.

My take on the subject is that major challenges of a distributed development fall into
communication/time-zone/culture/process/infrastructure paradigm.

More in detail:

1. Communication issues
In fact, communication may be regarded as the most important and the root challenge of distributed development teams - all the rest of issues ultimately influence communication and hence collaboration quality.
Even people in different rooms typically communicate less effectively, communication between teams in different office locations gets even more challenging.

2. Time-zone differences
Time-zone differences further worsen the communication issue by narrowing down or completely eliminating time window for direct communication.

3. Cultural differences and language barriers
The world is really getting flat and people, especially in IT industry, more and more embrace some unified behavioral and cultural standards.
Still cultural differences remain a serious obstacle to building effective distributed team - as people communicate, lead, work differently in different cultures. Same story with the communication language - while English is universally accepted, level of it's adoption varies broadly and is oftentimes much less than a fluent level.

4. Process misalignments

Different development processes which are practiced by teams in different locations or conflicting interpretations of the same process create further interference with the quality of delivery.

5. Project infrastructure mess
Different version-control, knowledge-management and other project systems create the need to build work-around interfaces between these multiple systems and also add to the problems with effectiveness of distributed teams.

Friday, January 10, 2014

Distributed agile software development - continuously unleashed :)

This blog grows out of the discussion panel on distributed software development which Travis Bochenek, my colleague from Cogniance, and me led at Y2013 MassTLC conference in Boston.

The panel turned out to be really successful with lots of people joining and exchanging ideas. Given that all of the professional activities I'm involved with deal with software development through distributed agile teams the idea to share our experience and thoughts, ideas and questions via a dedicated blog seems to be really interesting.
So here it goes: distributed agile software development - continuously unleashed :).