Part 4 – Large-Scale Complex Development

Our journey in this part of the book proceeds to large-scale complex development. In previous parts of this book, we looked at how a team can improve the way they work through the help of explicit practices, such as Scrum, User Stories, Use Cases, etc. Adopting these practices is relatively easy; the team learns the practice, tries it out, and then adapts it to work better for them. The adoption of these practices normally does not change how the team is organized (e.g., team size, team member
roles, team communication mechanisms).

In this part, we will continue the journey with TravelEssence and understand how Smith’s development team operated as part of a much larger organization. The objective here is to convey what it means to work with large-scale development and how that is different from working with small-scale development. We wrote this part of the book because many of you will work as part of large and complex endeavors. It is not the objective here to equip you with the competency needed to actually participate in large-scale development, but rather to let you have a glimpse of what it is like.We also want to highlight the fact that Essence is scalable to large-scale development, and that therefore what you have learned so far can carry you many years into your profession. You will find in your work that largescale complex development encompasses many challenges, both collaboratively and architecturally; we have chosen to focus here, though, only on the collaborative aspects. The more advanced architectural aspects are out of the scope of this book.

Large-scale complex development involves more people. The way teams are organized,
how they collaborate with one another toward a common goal, and the
way they support one another in achieving their mission all differ from small-scale
development. Large-scale complex development involves not just one team, but many teams working in parallel and collaborating with each other. Although they will all use the kernel, each team may have different practices for their way of working, as well as following their organization’s practices to support the collaboration between teams. In large-scale development, there is not just one group of stakeholders, but multiple groups of stakeholders, and there may be not just one software system but multiple software systems.