Agile Software Development for Distributed Teams
On the one hand there are meanwhile not many projects left that are made at home without outsourcing, off- or nearshoring. On the other hand more and more projects discover the success factor of agile development which requests - among other things - an emphasis on face-to-face communication.
In this course attendees will learn about the key success factors for distributed (and maybe even large-scale) software development. The focus will be on how to apply agile processes in a distributed setting and how to establish and preserve a common development culture. Participants will learn how to adapt both simple agile practices like a Daily Scrum (also known as: daily stand-up meeting) and more complex practices like a retrospective to a distributed environment.
Attendees will understand that also distributed (and large) teams can benefit from a value system and from principles that are beneficial for small teams. In fact the two trends - distribution in terms of globalization and agility - can even complement each other.
Overcoming Cultural Differences by Focusing on Similarities
One of the challenges global teams are facing, is overcoming cultural differences. Yet, these differences have their origin not only in geography and language, but also in strategies, politics, values and history. A company, no less than the broader society, shapes a culture that influences its employees behavior. A distributed team needs to leverage this and jointly develop a project culture and keep the project history alive for emphasizing the common culture. This session points out techniques that have helped to create a common culture in different global projects I have been working on.
Applying Agile Development Practices in Distributed Teams
For a distributed team it is even more important to pay 'Continuous attention to technical excellence and good design' as the Agile Manifesto requests. Yet, how to implement the typical agile development practices like pair programming or collective code ownership in a distributed setting? Moreover are there any differences or things to watch out for when applying "easier" practices like unit testing or refactoring? In this session I want to focus on the impact and application of agile development practices in distributed teams and how such a team can ensure its technical excellence.
Agile Software Development in a Large and Distributed Environment
Agile development isn't any longer considered to work for small and collocated teams only. Also large teams, projects and organizations are asked to focus on delivering value. So the question arises, how to adhere to the agile principles when applying them in the large. In this session we will use the agile principles as a guideline for scaling. This is basically by understanding agile as a value system, a mindset, a culture - and not as a tool. So be prepared to being asked to think for yourself and to balance forces based on your own needs and requirements instead of finding a recipe that assumes that one size will or can fit all (organizations, projects, products, or teams). Thus, this session is not about providing or defining a framework for the enterprise or the organization, scaling scrum or using other existing methodologies at different organizational levels. It is about examining the agile principles according to their effects and application when scaling up and / or when working in a distributed environment. For example, we will discuss what a principle such as "self-organizing teams" means when it is applied to a team of more than 100 developers or to the enterprise level or to a distributed setting.
The session is based on the necessity of large-scale and distributed Agile to give and get frequent feedback in order to deliver the highest business value to the customer at all times besides learning and getting better continuously. In fact the two trends - distribution in terms of globalization and Agile - can even complement each other.
Agile Teams: Self-Organizing, Collocated, and Distributed
Agile development requires teams to self-organize. However, this doesn't happen by chance. Teams have to be set up in a way that allows them to self-organize. And moreover, if you work on a large project with more than one team the team structure should still enable self-organization. The same is true for global development. In this session we will cover the essentials for building productive self-organizing teams for small and collocated and as well for large and
- Understand what characterizes self-organization and the evolution of an agile team
- Understand what kind of communication and collaboration ensure a team's agility
- Learn how teams can be agile in large and distributed environments
- Understand how both - developing business functionality and ensuring conceptual integrity of the architecture can be supported