Part 4 – Large Scale Complex Development
Our journey in this part of the book proceeds to large-scale complex development. In the previous part of our journey, 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, the team tries it out and 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 of the book, we will continue the journey with TravelEssence and understand how Smith’s development team operates as part of a much larger organization. The objective here is to provide an understanding for 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 upon graduation work as part of large and complex endeavors. It is here not the objective to equip you with the competency needed to actually participate in large-scale development, but to let you have a glimpse of what it is like. We also want to highlight that Essence is scalable to large-scale development, so that what you have learnt so far, can carry you through many years into your profession. In addition, as large-scale complex development encompasses many challenges both collaboration and architectural, we have chosen to focus on the collaborative aspects. We leave the more advanced architectural aspects out of the scope for this book.
Large-scale complex development involves more people. The way teams are organized, how they collaborate with one another towards a common goal, and the way they support one another in achieving their mission differs from small-scale development. Large-scale complex development has not just one, 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 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.