Agility implies responding to change appropriately. Every response is a decision. Sometimes we choose among several competing options, sometimes not. Some decisions demand immediate action, others require us to step back and think and weigh our options. There are many decision models that can support how we respond. Often, our decisions are part of a series of interrelated decisions that influence each other. From this perspective, the agility of an organization can be viewed as an outcome of decisions made over time.
Rebecca Wirfs-Brock and I held a workshop session at XP2020 on this topic. In this workshop session, we discuss how to apply three specific decision styles and models that are useful in different circumstances.
Some of the models we use in this workshop come from the field of Naturalistic Decision Making (NDM), which has the goal of studying how people actually make decisions in a variety of real-world settings. Settings in which NDM is appropriate are characterized by time pressure, high stakes, experienced decision makers, inadequate information, ill-defined goals, poorly defined procedures, context, dynamic conditions, and team coordination. In this session we explore NDM in the context of organization agility.
The slides are available to download here.
Learning outcomes from the workshop include:
- Learning about Decision Models and how they apply to Agile Software Development and Organization Agility.
- Understanding of how to apply and combine different decision models in different contexts. Specifically, we explore analytical decision making, naturalistic decision making, and recognition-primed decision models.
- Understand the role of heuristics and experiments in making decisions and taking action.
- Understand the role of expertise and how it influences decision and action in organizations.
- Understand the circumstances under which decisions are best taken by individuals, and those where decisions are best taken in groups.
- Understand how decisions influence each other and compound over time.
- Approaches for when and how to record decisions.
Rebecca Wirfs-Brock and I developed a workshop on decision making in software architecture. This is an extract from a paper from the IEEE International Conference on Software Architecture (ICSA 2019) that describes the workshop. The final version is in the ICSA proceedings. A preprint of the full paper is available here.
First, we shape our architecture. Then, our architecture shapes us. As architects we bring part of ourselves to the systems we work with. We evolve with our architectures. In this tutorial we consider the metaphor of “terroir” to understand architectures and their sense of place. Terroir comes from the French word used to describe the set of all environmental factors that affect the observable characteristics of an organism, e.g., the unique set of contextual characteristics of place that influence food crops, coffee, tea, or wine. So too in systems, architectures are uniquely shaped by the culture and context of a place. Factors include people, organization, culture, technology, and tenets shared among the architects and makers. Understanding an architecture is a first step towards evaluating it. The set of concepts and practical tools covered in this tutorial are well suited to being used in conducting architecture analyses and reviews and integrate with any other processes an organization might be using.
Structure and Outline
- Part 1: Making sense of system architectures. The tutorial begins by introducing some concepts that help people to make sense of a system architecture. The outcome includes insight not just into the architecture itself, but also the wider context, including culture, decision-making processes, attitudes, constraints, and assumptions that contribute to the architecture. We will demonstrate how to see and interpret patterns to understand architecture context and understand the decision-making landscape of which architects are part.
- Part 2: Decision models for architects. Having established a sense of place for the architecture, we will move into discussing decision models. Different kinds of decision are necessary to evolve our architectures. Sometimes we need to make high-stakes decisions under conditions of uncertainty, with insufficient information, and too little time. Other times we need to balance deep thought, collaboration, and trade-offs among different architecture qualities.
- Part 3: Taking action to evolve our architectures in conditions of uncertainty. Once we have a sense of place, and we have decided how we will make decisions, we will move into action. In this tutorial we focus on making decisions and acting in conditions of volatility, uncertainty, complexity, and ambiguity. We explore the roles of heuristics and experimentation for making decisions under such conditions, and how this influences the evolution and evolve-ability of our architectures.
- Part 4: Practical considerations for the dimension of time in architecture decisions. In this section we will look at the temporal dimensions of architecture decisions. We will look at the time factors that affect our architectures. These include when decisions are made, the cadence of decision making, the impact of decisions over time, and challenges around ensuring follow-through and consistency of decisions over time.
- Part 5: Summary and closing activities. Summary of concepts, decision models and tools; Q&A. In this section we spend time to ensure participants have at least one or two practical things they are ready to try when they get back to the office.