The Situation Context Framework (SCF) defines how to select and tailor a situation-dependent strategy for software development. The SCF is used to provide context for organizing your people, process, and tools for a software-based solution delivery team. Figure 1 below depicts how several selection factors drive the choice and tailoring of your team organization (people), delivery process, and tooling configuration. Initial selection is just the first step, you will also need to tailor these choices to reflect the situation that you face – hence the scaling factors. The focus of this page is on the scaling factors, not the selection factors.
Scaling Your Team Strategy
Figure 2 summarizes the seven scaling factors, indicating the range of each factor. Towards the center is the simple extreme for each scaling factor and towards the outside the challenging extreme. When you rate a team on each of the scaling factors the area of the resulting graph is an indication of the level of risk faced by the team – the bigger the area the greater the risk.
Let’s examine each scaling factor one at a time:
- Team size. Teams can range in size from two people to twenty to two hundred or more. Larger teams are typically formed to address more complex problems, and as a result large teams take on the challenges of greater domain complexity and/or greater technical complexity as described below. Team size tends to directly affect how you organize the team and how you coordinate within the team. For example, a large agile team of 600 will be organized into subteams and a leadership team will be required for coordination, something we capture in DA's Program life cycle. A team of 50 will also be organized into subteams, although coordination will likely be simpler and possibly handled by a daily coordination meeting of representatives from each subteam (a techniques referred to as a Scrum of Scrums). It is fairly straightforward to coordinate the activities of a team of 10 people.
- Geographic distribution. Agile teams may be co-located, with the team members and key stakeholders in the same room, they may be on the same floor in a single building, on multiple floors, some may work in different buildings, some may work from home, and some may even work in different countries. A popular misconception is that agile teams need to be co-located, a misconception that I have shown via several surveys over the years to be false. Granted, it’s a very good idea to get people working as closely as possible, but it doesn’t happen as often as we’d like. Similar to large teams, coordination of team members throughout the project become more difficult and as a result more sophisticated coordination is required. A greater investment in initial modeling and planning, but not much more, is required during Inception to mitigate the communication risks associated with distribution. To increase chance of project success you will need to fly people around at key points in the project, something many organizations are loathe to do because it’s easy to measure travel costs but difficult to quantify the benefit of face-to-face collaboration. Please read Geographically Distributed Agile Teams for a more detailed discussion.
- Organizational distribution. This refers to the concept of involving people from several organizations on the project. The easiest situation to be in is to have all of your team members from the same group/division within a single organization, often the situation of a startup company or new product team within an enterprise. It’s a little harder when people from several groups are involved. Hiring contractors adds to the complexity. Outsourcing a portion of the work to an external service provider is harder yet. Partnering with several vendors even harder. Outsourcing to one or more service providers with a very different culture than your own harder yet. Organizationally distributed projects tend to take on the challenges associated with large teams and geographically distributed teams. When outsourcing is involved they take on the risks associated with procurement and then the governance of the outsourced effort.
- Skill availability. Your team needs the right people with the right skills to fulfill the outcomes that you've taken on. At the ideal end of the spectrum you have skilled people "sitting on the bench" waiting to get going, at the other end it may take many months and potentially lots of money to build the team that you need. The availability of skilled people, or at least people with the ability to quickly gain the skills that they need, is a driver of organization distribution. When your immediate organization doesn't have easy access to the required skills you may need to start partnering with other groups or even external organizations to gain them.
- Compliance. There are two forms of compliance. Generally the simpler form of compliance is self-imposed, perhaps your organization chooses to be CMMI or ITIL compliant. The second, and potentially harder, form of compliance is regulatory. A team may need to conform to financial regulations, privacy regulations, or even existential/life-critical regulations. Although every regulation has different requirements, from a process point of view they typically require extra documentation (but keep it light), reviews (keep them streamlined), and sometimes a documented process.
- Domain complexity. The complexity of the domain, or the problem space, being tackled by a team can vary widely. An informational website site, such as this one, is fairly straightforward. An e-commerce site is more difficult. An air traffic control system even more difficult. The greater the domain complexity that you face the more you want to invest in up-front modeling and planning. Not much more, mind you, but still more. Similarly as domain complexity rises it motivates greater sophistication in your agile testing strategy. As domain complexity increases it puts a greater burden on your Product Owner, requiring more sophisticated agile modeling skills and potentially the support of agile business analysts.
- Solution complexity. Disciplined agile teams will face varying levels of solution complexity. On the simple end of the spectrum you’ll have the development of a brand-new, stand-alone solutions built with new technologies. Things get more difficult if you need to take advantage of existing assets, including software, data sources, or business services. Things get more difficult if you need to support several technology platforms. Things are more difficult yet if you need to refactor existing infrastructure (including legacy data sources). As with domain complexity, the greater the solution complexity the greater the need for a bit more up-front modeling and more sophisticated testing throughout the lifecycle. Greater technical complexity puts a burden on your Architecture Owner, requiring great agile architecture and agile design skills of them.
Previous Version
The Situation Context Framework (SCF) evolved from something we called the Software Development Context Framework (SDCF), summarized in Figure 3. We evolved the SDCF into the SCF so as to make it clear that the concepts are applicable to all types of teams, not just software development teams. The changes were:
- Renamed Technical Complexity to Solution Complexity
- Added Skill Availability as a scaling factor.
- Reworked the naming of several options for the scaling factors to make the spectrum of choices clearer.
Implications for Disciplined Agile Certification Exams
We are in the process of updating the Disciplined Agile® (DA™) materials, in particular courseware and books, to reflect SCF rather than SDCF. The current DA certification exams test for SDCF knowledge. When we have updated the DA materials to reflect SCF we will also update the exam. We do not have an exact date for when this will occur and will announce it when we do.