Chapter 1: Looking through the Agile Architect's Lens
"Less is more."
– Ludwig Mies van der Rohe (Architected Barcelona Pavilion, Expo 1929)
Agile software development is an effective practice that helps organizations continuously deliver the maximum possible business value with organizational agility. The 14th Annual State of Agile Report 2020 shows that an astounding 95% of the 1,121 respondents adopted Agile software development practices. The sharp increase in Agile adoption indicates why organizations cannot shy away from embracing Agile software development practices in their business. Most of these organizations adopt Agile software delivery practices for accelerating software delivery by successfully managing the changing priorities of the business. Architecting systems using Agile values, principles, and practices are incredibly crucial to improve productivity and deliver quality products.
This book introduces the Agile Architect's Lens—a comprehensive representation of the knowledge of key segments and leading practices for Agile architects to successfully operate in a Lean-Agile organization. The Agile Architect's Lens has twelve focal points, as shown in the diagram. Each focal point that can you see in the following figure captures tried and tested approaches, patterns, and guidelines for architects to design continually evolving solutions:
Figure 1.1 – The Architect's Lens
The Agile Architect's Lens act as a single pane of glass, guiding light, and topic navigator for readers to easily explore this book.
Agile architecture is a set of practices, principles, and guidelines for developing architecture as an intrinsic element of Agile software development. Using Agile architecture concepts, Agile teams can confidently drive sustainable, fit-for-purpose solutions to meet customer needs. We thus begin by focusing on the Agile Architecture focal point of the Agile Architect's Lens.
Agile architects need special skills to operate efficiently in Agile organizations. The collaborative nature of Agile software development needs a new set of metaphors to understand expectations from Agile architects. A well-architected solution enables organizations to deliver value with the shortest sustainable lead time, which significantly enhances business operations. Our next logical focus will therefore be on the Agile Architect focal point, followed by covering two specific architect roles crucial to Agile development projects – the Enterprise Architect and Solution Architect focal points of the Agile Architect's Lens.
Agile architects are responsible for bridging strategies and providing a shared vision to all stakeholders in the continuous delivery flow. Agile architects have to acquire technical knowledge in specific areas to address commonly occurring challenges efficiently. Hence, the knowledge kitty has to have the right blend of process excellence and technical excellence. We will therefore shift our attention next to covering the Value Delivery, Patterns and Techniques, DevOps and Automation, Built-in Quality, Evolutionary Collaboration, and Safety Nets focal points of the Agile Architect's Lens.
In addition to the knowledge kitty, Agile architects need to undergo a radical transformation in behavior and mindset to achieve operational excellence. Servant leadership is one of the foremost characteristics that Agile architects need to have, but it is just a starting position. In our journey ahead, we expand on the Culture and Leadership Traits focal point of the Agile Architect's Lens.
Business agility is one of the key motivations for many organizations to opt for digital transformation. The lean practices of Agile software delivery can boost organizational agility. However, this needs considerable effort to organize systems and people around values to be nimble enough to respond quickly to changes in business strategies. Architecting organizations around values is an essential aspect of organizational agility. We cover this in our final focal point of the Agile Architect's Lens, Architecting Organizational Agility.
In summary, digital transformation is a continuous activity for many organizations. Agile software delivery is the foundation on which the organizational agility essential to support successful transformations can be built. Architecture, and especially architects, play an extremely critical role not just in Agile software delivery but also in architecting organizations for agility. While technical excellence is paramount for architects, working beyond traditional boundaries with an intrinsically motivated team of multi-disciplinary individuals requires a significant shift in mentality.
Let's start our exciting journey by exploring our first focal point, Agile Architecture, in our next chapter.
Chapter 2: Agile Architecture – The Foundation of Agile Delivery
"Simplicity is the ultimate sophistication."
– Leonardo da Vinci
In this era of innovative and disruptive digital transformation, Agile software development is no longer a marketing buzzword. Agile software development methodologies have enabled many organizations at scale (at the required size) to significantly accelerate their ambitious journey to accomplish and sustain organizational agility. Agile architecture and the new Agile ways of developing architecture and design are incredibly important in delivering an uninterrupted, continuous flow of values to meet the needs and wants of customers. However, architecture and architects need a radical reshaping to be relevant in the world of Agile software development.
This chapter takes you through the evolution of software development and analyzes the lessons learned, which help in reinforcing the vital need of architecture in Agile software development initiatives.
In this chapter, we're going to cover the following main topics:
- The journey leading to Agile software development
- Agile development and traditional architecture – an oxymoron?
- Agile and architecture – the battle between speed and sustainability
- Comparing different scaling Agile frameworks
- Measuring Agile architecture
- Lessons learned from Snow in the Desert
This chapter focuses on the Agile Architecture focal point of the Agile Architect Lens, as shown in the following diagram:
Figure 2.1 – The Agile Architect Lens – focal point
Technical requirements
Additional materials such as posters and Agile architecture assessment parameters referenced in this chapter are available to download from https://github.com/PacktPublishing/Becoming-an-Agile-Software-Architect/tree/master/Chapter2.
The journey leading to Agile software development
Interestingly, unlike many other natural evolutions, software development has gone through many forms, shapes, and, notably, cycles over the years. One of the significant parameters in software development evolution has been the risk of failure. The likelihood of risk dramatically reduced as a result of this evolution.
Software development is a young discipline, with only just under seven decades of legacy. Grady Booch, Chief Scientist at IBM, in his speech History of Software Engineering, at the Association for Computing Machinery, observed that the first mention of software was by John Turkey back in 1952.
The Agile method of software development has become increasingly popular in the last decade, but the traces of Agile development are deeply rooted in history. The paper Iterative and Incremental Development: A Brief History published by IEEE highlighted the existence of Agile development even before that. The article stated that, back in the 1960s, NASA's Project Mercury ran with an iterative approach of very short, half-day cycles and used test-driven development practices. The more interesting observations came from the Software Engineering report at a conference sponsored by the NATO science committee held back in 1968. Kinslow, a computer systems consultant, articulated very well in this paper that the software design process is an iterative one. Ross, another attendee of the conference from MIT, also highlighted the deadly symptom of traditional software development as first specifying what you are going to do and then doing it. Both Kinslow and Ross were pointing toward what is today called the Agile software development approach.
Most of the software development during the 1960s followed the waterfall approach, and the earlier statements came from frustration at the failures and challenges of waterfall-style software development. Sequentially staged software development was first proposed by Dr. Winston W. Royce back in the 1970s, which appeared in an IEEE publication, Managing Development of Large Software Systems. Later, the term "waterfall" was introduced by Bell and Thayer in the second International Conference on Software Engineering referring to Royce's approach. Royce, in his paper, explained a...