Becoming an Agile Software Architect

Book description

A guide to successfully operating in a lean-agile organization for solutions architects and enterprise architects

Key Features

  • Develop the right combination of processes and technical excellence to address architectural challenges
  • Explore a range of architectural techniques to modernize legacy systems
  • Discover how to design and continuously improve well-architected sustainable software

Book Description

Many organizations have embraced Agile methodologies to transform their ability to rapidly respond to constantly changing customer demands. However, in this melee, many enterprises often neglect to invest in architects by presuming architecture is not an intrinsic element of Agile software development.

Since the role of an architect is not pre-defined in Agile, many organizations struggle to position architects, often resulting in friction with other roles or a failure to provide a clear learning path for architects to be productive.

This book guides architects and organizations through new Agile ways of incrementally developing the architecture for delivering an uninterrupted, continuous flow of values that meets customer needs. You'll explore various aspects of Agile architecture and how it differs from traditional architecture. The book later covers Agile architects' responsibilities and how architects can add significant value by positioning themselves appropriately in the Agile flow of work. Through examples, you'll also learn concepts such as architectural decision backlog,the last responsible moment, value delivery, architecting for change, DevOps, and evolutionary collaboration.

By the end of this Agile book, you'll be able to operate as an architect in Agile development initiatives and successfully architect reliable software systems.

What you will learn

  • Acquire clarity on the duties of architects in Agile development
  • Understand architectural styles such as domain-driven design and microservices
  • Identify the pitfalls of traditional architecture and learn how to develop solutions
  • Understand the principles of value and data-driven architecture
  • Discover DevOps and continuous delivery from an architect's perspective
  • Adopt Lean-Agile documentation and governance
  • Develop a set of personal and interpersonal qualities
  • Find out how to lead the transformation to achieve organization-wide agility

Who this book is for

This agile study guide is for architects currently working on agile development projects or aspiring to work on agile software delivery, irrespective of the methodology they are using. You will also find this book useful if you're a senior developer or a budding architect looking to understand an agile architect's role by embracing agile architecture strategies and a lean-agile mindset. To understand the concepts covered in this book easily, you need to have prior knowledge of basic agile development practices.

Table of contents

  1. Becoming an Agile Software Architect
  2. Contributors
  3. About the author
  4. About the reviewers
  5. Preface
    1. Who this book is for
    2. What this book covers
    3. To get the most out of this book
    4. Download the example code files
    5. Download the color images
    6. Conventions used
    7. Get in touch
    8. Reviews
  6. Section 1: Understanding Architecture in the Agile World
  7. Chapter 1: Looking through the Agile Architect's Lens
  8. Chapter 2: Agile Architecture – The Foundation of Agile Delivery
    1. Technical requirements
    2. The journey leading to Agile software development
      1. What is Agile software development?
      2. Is Lean different from Agile?
      3. Five benefits of Agile software development
    3. Agile development and traditional architecture – an oxymoron?
      1. Architecture as a continuum
      2. Traditional development methods frontload architecture efforts
    4. Agile architecture – architecting with Agile practices
      1. Balancing speed and sustainability
      2. Developing a little architecture upfront, but how much?
    5. Agile architecture principles
      1. Architecture needs a collective effort
      2. Architecture is continuous
      3. Architecture is Lean and efficient
      4. Test and learn architecture early and often
      5. Architecture enables agility
    6. Comparing different enterprise Agile frameworks
      1. Scaled Agile Framework (SAFe)
      2. Disciplined Agile (DA)
      3. Large-Scale Scrum (LeSS)
    7. Measuring Agile architecture maturity
    8. Lessons learned from Snow in the Desert
      1. Circumventing key challenges in adopting Agile architecture
      2. Agile architecture process flow and poster
    9. Summary
    10. Further reading
  9. Section 2: Transformation of Architect Roles in Agile
  10. Chapter 3: Agile Architect – The Linchpin of Success
    1. Technical requirements
    2. Understanding the challenging environment of architects
      1. A myriad of architect roles have impacted clarity
      2. Architects slow down delivery
    3. Self-organizing teams propel the no architect movement
      1. The birth of the accidental architect
    4. Architects are vital in Agile – the question is who plays that role?
      1. Organizing Agile architects – none, volunteered, designated, or dedicated
      2. Different roles played by Agile architects
      3. Essential skills for Agile architects to be relevant
    5. Explaining the Agile architect's behavior and duties with metaphors
      1. The changing behavior of the Agile architect
      2. The challenging duties of the Agile architect
    6. How different frameworks handle architect roles
      1. Scaled Agile Framework
      2. Disciplined Agile
      3. Large-Scale Scrum
    7. Learnings from Snow in the Desert
    8. Summary
    9. Further reading
  11. Chapter 4: Agile Enterprise Architect – Connecting Strategy to Code
    1. Technical requirements
    2. The need for change in lean-Agile EA
      1. EA frameworks focus on describing enterprises
      2. The city planning metaphor is no longer valid
      3. EA operates without purpose
      4. Digging into the current state is an evil
      5. EA disconnected from its intended purpose
      6. Showing value first is a trap
      7. Enterprise architects are non-technical
    3. Understanding the principles and duties
      1. The principles for Agile enterprise architects to succeed
      2. The duties of Agile enterprise architects
    4. The EA repository – the gold dust problem
    5. Measuring enterprise architects
    6. The enterprise architect role in Agile frameworks
      1. The enterprise architect role in Scaled Agile Framework
      2. The enterprise architect role in Disciplined Agile
      3. The enterprise architect role in Large-Scale Scrum
    7. Enterprise architects at Snow in the Desert
      1. The profile of an enterprise architect
      2. Understanding the portfolio flow
    8. Summary
    9. Further reading
  12. Chapter 5: Agile Solution Architect – Designing Continuously Evolving Systems
    1. Technical requirements
    2. Solution architects – the busy bees of agile teams
      1. A solution architect's mindset – the periscope in action
      2. The overlapping roles of enterprise and solution architects
    3. Maximizing value and eliminating flow barriers
      1. Starting with business value
      2. Focusing on sustainable quality
      3. Reducing reject cycles
      4. Minimizing lead time
      5. Reducing rework
    4. The duties of solution architects
      1. Developing an intentional architecture
      2. Preparing for emergent design
      3. Enabling continuous evolution
    5. Measuring the success of solution architects
    6. Summary
    7. Further reading
  13. Section 3: Essential Knowledge to Become a Successful Agile Architect
  14. Chapter 6: Delivering Value with New Ways of Working
    1. Technical requirements
    2. Understanding business value
      1. Showing the value of architecture is difficult
    3. Linking architecture activities to business backlogs
    4. Determining the business value of architecture
    5. Allocating capacity for prioritization
    6. Making the work transparent
    7. Looking ahead of development
    8. Working with a pragmatic mindset
      1. Understanding the last responsible moment
      2. Using eventual integrity
      3. Using a risk- and cost-driven approach
      4. Ensuring anti-viscosity
    9. Keeping options open
      1. Using a hypothesis-based solution
      2. Using real options theory
      3. Using set-based concurrent engineering
    10. Delivering early value with MVA
    11. Managing tech debt
    12. Summary
    13. Further reading
  15. Chapter 7: Technical Agility with Patterns and Techniques
    1. Amplifying agility with technical excellence
      1. Adopting software craftsmanship
      2. Enhancing quality with technical agility
    2. Building technical agility with patterns and techniques
    3. Architecting for change
      1. Driving technical agility with simplicity
      2. Evolving with isolation by design
      3. Legacy modernization architecture
    4. Developing good code with engineering excellence
      1. Applying coding principles, techniques, and patterns
      2. Good coding practices
      3. Continuous refactoring
      4. Twelve-factor principles
    5. Understanding enterprise integration
    6. Developing for testability
      1. Test-driven development
    7. Treating infrastructure like software with the cloud
    8. Monitoring everything with full stack telemetry
      1. Outcome-based monitoring with progressive enhancement
      2. Moving to product-centric monitoring
      3. Building observable systems
    9. Summary
    10. Further reading
  16. Chapter 8: DevOps and Continuous Delivery to Accelerate Flow
    1. Embracing DevOps culture
      1. Enhancing security with DevSecOps
      2. Crossing over with site reliability engineering
    2. Enabling flow with continuous delivery
      1. Benefiting from CD
      2. Architecting for continuous delivery
      3. Measuring the effectiveness of continuous delivery
      4. Implementing continuous delivery for legacy applications
    3. Adopting continuous integration
      1. Improving development and source code management
      2. Automating quality assurance
    4. Automatically deploying to production
      1. Launching in dark mode for early feedback
      2. Using feature flags to release features selectively
    5. Releasing on demand
      1. Progressively releasing with canary releases
      2. Collecting early feedback with A/B testing
      3. Architecting for release on demand
    6. Securing systems by design
    7. Summary
    8. Further reading
  17. Chapter 9: Architecting for Quality with Quality Attributes
    1. Understanding software quality
      1. Improving quality needs systems thinking
      2. Incrementally applying quality with a build-to-adapt strategy
      3. Building in quality to eliminate waste
    2. Adopting a quality attribute model
    3. Documenting quality attributes
      1. Using the scaled Agile approach for specifying quality attributes
      2. Using a quality attribute scenario
    4. Using the quality life cycle in Agile software development
    5. Discovering and refining quality attributes
      1. Aligning stakeholders to quality attributes
      2. Conducting a quality attribute workshop
      3. Refining QASes and playback
    6. Modeling and simulation
    7. Applying architecture trade-offs
      1. Using the architecture trade-off analysis method
      2. Using the solution architecture review method
    8. Developing quality attributes
    9. Assessing system quality
      1. Integrating quality checks in development
      2. Using fitness functions
      3. Evaluating using the Well-Architected Framework
    10. Summary
    11. Further reading
  18. Chapter 10: Lean Documentation through Collaboration
    1. Persisting knowledge with documentation
      1. Understanding the reasons for documentation
      2. Why the traditional way of documenting is no good
    2. Using Lean-Agile ways of documentation
      1. Evolutionary collaboration over documentation
      2. Just barely enough documentation when required
      3. How much documentation is sufficient?
      4. Adhering to the principles of documentation
    3. Documenting software architecture
      1. Different proposals for documenting architecture
      2. Documentation ecosystem at Snow in the Desert
    4. Applying Model-Based Software Engineering
    5. Summary
    6. Further reading
  19. Chapter 11: Architect as an Enabler in Lean-Agile Governance
    1. Understanding architecture governance
      1. Challenges with traditional governance
    2. Bringing agility with Lean-Agile governance
      1. Embracing Lean-Agile governance
      2. Principles of Lean-Agile governance
      3. Benefits of Lean governance
    3. Balancing autonomy with agility
      1. Determining the level of decentralization of decisions
      2. Implementing Goldilocks governance – a case study
    4. Documenting architecture decisions
    5. Ensuring psychological safety
    6. Measuring the quality of architecture decisions
    7. Summary
    8. Further reading
  20. Section 4: Personality Traits and Organizational Influence
  21. Chapter 12: Architecting Organizational Agility
    1. Correlating business agility with IT agility
      1. Understanding business and IT flow of value
    2. Improving the flow of value in IT
    3. Organizing people around value
      1. Examining the need for architecting the organization and teams
      2. Identifying flow and organizing teams with flow decomposition
      3. Assigning systems to flows
      4. Giving autonomy to flow teams
      5. Comparing capability-centric versus flow-centric teams
      6. Validating the organization of teams
    4. Structuring teams within flow teams
    5. Implementing communities of practice
    6. Stepping into next-generation IT
    7. Summary
    8. Further reading
  22. Chapter 13: Culture and Leadership Traits
    1. Understanding the need for change 
    2. Examining culture in high-performing organizations 
      1. Understanding the behavior of high-performing teams 
    3. Choosing the right leadership
    4. Personality traits of an architect
      1. Selflessness for relentless support
      2. Respect, equality, and humility
      3. Mindfulness for managing wellbeing
      4. Curious to acquire new knowledge
      5. Growth mindset for positive thinking
      6. Intrinsic motivation for commitment
      7. Creativity to explore new opportunities
      8. Self-esteem to protect personal value
      9. Empathy for emotional connection
      10. Executive presence for gaining attention
    5. Interpersonal traits of Agile architects
      1. Collaborating for collective ownership
      2. Resolving conflict for superior quality outcome
      3. Communicating well using storytelling
      4. Nurturing and growing talent for a competent workforce
      5. Motivating for a better outcome
      6. Leading by example and demonstrating servant leadership
      7. Feedback for continuous improvement
      8. Psychological safety for trust and transparency
      9. Leading the change by creating multipliers
      10. Caring for building a sense of belonging
    6. Summary
    7. Further reading
    8. Why subscribe?
  23. Other Books You May Enjoy
    1. Packt is searching for authors like you
    2. Leave a review - let other readers know what you think

Product information

  • Title: Becoming an Agile Software Architect
  • Author(s): Rajesh R V
  • Release date: March 2021
  • Publisher(s): Packt Publishing
  • ISBN: 9781800563841