Coordination Strategies: Beyond Scrum | Part 3

In the previous post, we discuss different strategies that are imperative in successful implementation of Scrum process model in GSD context. In this post, we take this discussion further by introducing few strategies that are originated from other disciplines than software development; however, they can have positive impact on LFDS.

Queuing Theory: Increase Parallelism by Eliminating Queues

Queuing Theory [1] provides an insight on the release cycle in the large-scale product development. In today’s competitive market, in order to survive, it has become essential to minimize the release cycle of the new features. Hence, careful consideration of Work-in-Progress (WIP) queues with long-batch of task should be taken into account in large-scale Scrum, as they increase the average cycle times and eventually, reduce value delivery. C. Larman and B. Vodde propose the following approaches to manage WIP queues in large-scale Scrum context [1] :

  1. Eliminate the queues by changing the system – removing the bottlenecks and the other factors that create the queues.

  2. Introducing the feature teams  that implement customer features from end-to-end and reducing the dependencies, can vanish these queues, as the feature teams begin a highly parallel development cycles.

  3. Reduce variability e.g. ambiguity in user stories [2], estimated vs. actual effort variance and so on. Variability is considered as one of the three sources of waste in lean thinking [3].

Incorporate Lean Thinking in LFDS

Lean thinking is a proven system that works for the large-scale development. Toyota and other companies show such evidences. The main two principles of lean are following:

  1. Continuous improvement or kaizen,
  2. Respect for people [3].

The lean principle always strives for self and organizational improvement and promotes an atmosphere of continuous learning and embracing changes, which is complementary to the Scrum principle as well. Reducing waste from every phase of the development cycle is one of the primary motto of lean principle. Hence, adopting and embracing these principles in the software development sub-culture of the organization is bound to have a positive impact on the efficiency of LFDS.

References

[1] C. Larman and B. Vodde, Scaling Lean & Agile Development: Thinking and Organizational Tools for Large-Scale Scrum: Addison-Wesley Professional, 2008.

[2] M. Cohn, Succeeding with Agile: Software Development Using Scrum: Addison-Wesley Professional, 2009.

[3] P. Middleton, “Lean Software Development: Two Case Studies,” Software Quality Control, vol. 9, pp. 241-252, 2001.

Revisions

[R-1: 11-03-2013] Updated formatting to make this post more consistent with current CSS.

Coordination Strategies: On Successful Implementation of Global Software Development using Large-scale Fully Distributed Scrum | Part 1

Software engineering is evolving every day to address the ever increasing growth of system’s complexity and size along with the application domains and level of interactions with the other systems. In current era of globalization, with the intention of the increase in productivity and resource utilization, large-scale global software development (GSD) is a reality. However, it is known that the successful implementation of large-scale GSD using traditional distributed development process is quite difficult. The consistently increasing popularity of agile software development approaches is the result of their ideology for reducing complexity and focusing strongly on coordination, collaboration and communication. It makes the adaptation of agile methodology, such as- Scrum an obvious choice in the GSD context.

However, inherently, Scrum is only meant for local small teams and employing it to the large-scale GSD is a paradigm shift for this agile process. Therefore, this fact necessitate a pragmatic derivation of coordination strategies or best practices to successfully implement Scrum framework in the large-scale GSD context. In this post, we start we defining several concepts relevant for this topic. Afterwards, we provide the rational behind these strategies in successful implementation of GSD powered by LFDS.

Coordination

Coordination is a consciously organized relation between activities and forces[1], work tasks are divided over actors and the act of making different agents (i.e. people or things) work together[2]. It is widely acknowledged that Coordination in a large scale software development project is a persistently difficult problem to solve and in brief, following are the major identified factors in GSD interfering with the coordination of the software development[3].

  • Geographical distributed development sites,
  • Differences in time zones,  
  • Cross-cultural differences,  
  • Differences in the ICT infrastructure,  
  • Differences in the development standards.

Among different coordination mechanism in practice in GSD, most notable ones are listed as follows:

  1. Efficient communication framework supporting face-to-face, synchronous and asynchronous communication,
  2. Direct supervision,
  3. Standardization,
  4. Mechanism to minimize the coordination overhead such as, use of software architecture[2].
 In addition, we define integration is the manual process that combines the separate components as a working system. Composition, on the other hand, is the automated process of combining separate component as a working system.

Rational behind employing Coordination Strategies

One of the main concern of using the LFDS in a large-scale GSD stems from its very basic foundation of DASD which requires efficient communication framework and team work to achieve success. As a matter of fact, LFDS requires additional strategies in place to address the contextual differences caused by GSD. Following table illustrates the key differences between traditional Scrum and the Distributed Development model based on the realized impediments of GSD.

Realized Impediments Traditional Scrum Model(co-located) Traditional Distributed Development Model(global)
Communication Lower communication and coordination costs.

-Informal/Face-to-face

-Synchronous

-Many-to-Many

High coordination and communication costs.

-Formal

-Often asynchronous

-Tunneled

Coordination – Self-organization.

– Adaptive.

– Standardization.

– Plan-oriented.

Control – Lightweight.

– Cross-functional.

-Command and control.

-Clear separation of the roles.

Integration Higher productivity. Low productivity.
Interaction – Easier.

– Close proximity.

-Same time-zone, culture and work practices.

Difficult due to the contextual difference. It additionally influences the communication and coordination costs.
Conclusion Broad interface between the intra- and inter- team make the development cost relatively inexpensive. Tunnel­­­­­­­ed interface. Contextual differences increase the cost of the development.

Table 1. Difference between traditional Scrum and traditional Distributed Development model

Following are the additional observed problems in LFDS that are not inherent to traditional Scrum.

  • Loss of team-ness,
  • Loss of team ownership or us-them Problem,
  • Loss of communication richness.

To conclude, it is clear that in order to successfully implement LFDS, it requires additional adaptation of traditional Scrum model to address the paradigm shift of it in the GSD context and to bridge the gap between traditional Scrum and LFDS, i.e. Scrum with distribution. In the next posts 1 & 2, we elaborate on different essential coordination strategies that are, indeed imperative for successful implementation of LFDS.

Continue reading Coordination Strategies: On Successful Implementation of Global Software Development using Large-scale Fully Distributed Scrum | Part 1

Distributed Agile Software Development

Motivation behind using Distributed Agile Software Development (DASD) in the context of the GSD is its realized advantages such as, hyper-productivity and significant performance improvement illustrated in the recent literatures [2-6]. The basic principle of DASD of reducing the complexity of software development and focusing on the system’s complexity, complements to the motivation of using it in the GSD. As stated in the Agile Manifesto– “Individuals and interaction over processes and tools”[1], it significantly rely on empowering the team, self-organization, collaboration and coordination through efficient communication. Hence, self-organization of the different agents involved in the GSD is an inevitable outcome from the effective installation of DASD in this context. Therefore, these attributes of DASD surely contributes in the successful implementation of the GSD.

Continue reading Distributed Agile Software Development

Importance of Global Software Development

Global Software Development (GSD) is increasingly becoming the norm of software development, which is facilitated by state-of-art information and communication technology (ICT), with the primary goal of rationalizing this development. Hence, it is also a tremendously growing field of research over last decades. Herbsleb and Moitra [1] have identified following imperatives that are the driving force of this field.

  • Capitalization of the talent pool and resource usage whenever needed,
  • Business advantages of the new markets, 
  • Quick formation of virtual teams to capitalize market needs, 
  • Improvement of time-to-market by utilizing “around-the-clock” development, 
  • Flexibility to capitalize on merger and acquisition opportunities globally.

Additionally, implementation GSD is difficult [1, 2, 3, 4] because of its different inherent problems. Herbsleb and Moitra outline the major dimension of problems in GSD as follows[1].

  • Strategic issues: determination of project that are disjoint architecturally, as much as possible. 
  • Cultural issues: realizing and acknowledging different cultural differences. 
  • Inadequate communication and knowledge management. 
  • Project and process management issues: synchronizing between project and product management deadlines. 
  • Technical and infrastructural issues.

Continue reading Importance of Global Software Development