Orders of magnitude matter. Things don't go up order of one every time. Organising people in a group requires disseminating information and its interpretation and, most importantly, its distribution. Remote working and asynchronous collaboration have become the norm, meaning that distributed teams have taken their silos of knowledge with them. The impact of this has compounded any organisations experiencing a skills gap with a skills distribution problem, increasing the importance of good documentation and transparent interaction processes. In this session, we'll go over the fundamentals of requirements engineering, looking at how orders of magnitude scale alongside the expansion of scope and additional requirements. Lastly, we'll discuss how you can apply elements of platform thinking to your everyday projects.
Orders & Magnitude
AI Generated Video Summary
The Talk discusses the relationship between complexity and collaboration in software development. It highlights that collaboration is not always the answer to solving problems and that communication is crucial in software development. The concept of collective intelligence is introduced, which describes a group's capability to perform well together across tasks. The study mentioned in the Talk shows that collective intelligence is transferable among tasks, and skilled players rely on nonverbal cues and understanding the software. Lack of understanding can lead to difficulties in team performance and deployment.
1. Introduction to Complexity and Collaboration
Hello, my name is Jessica and I'm a developer advocate with LaunchDarkly. We are a feature management platform that helps you control your software by decoupling the process of deployment from releasing. Today we're going to talk about how orders of magnitude scale with complexity. Collaboration is not always the answer to solving problems. Software development falls in between tasks that can be partitioned and those that cannot. Communication is a crucial aspect of software development, and adding more people to a task can actually make it later. Collective intelligence is a concept that describes a group's capability to perform well together across a variety of tasks. A study based on League of Legends showed that virtual teams with paired abilities can outperform those with in-depth understanding of each other.
Hello, my name is Jessica and I'm a developer advocate with LaunchDarkly. We are a feature management platform that helps you control your software by decoupling the process of deployment from releasing.
Today we're going to talk about how orders of magnitude scale with complexity. So when something goes wrong, what's your first instinct? Do you ask for help? You'd be forgiven for thinking that collaboration is the answer to your problems here. Because between the two idioms of a problem shared being a problem halved and two heads being better than one. It's understandable that you think that bringing another person to the mix can improve your chances of getting to a solution faster. But this isn't always the case.
If you've played computer games, you might remember in Age of Empires 2, the best way to get a structure built quickly is to assign as many villagers to the task as possible. When it comes to digital infrastructure that exists outside of video games or video games themselves, we have to factor in a few key differences. Now in the mythical man month, a collection of essays on the craft of software development. We discussed the idea that the number of people and the amount of time required to get something done by aren't really interchangeable as commodities. This is only true when a task can be partitioned amongst many workers with no communication amongst them. But when a task cannot be partitioned either due to its structure or its complexity, the application of more effort has no impact on the actual schedule.
Now software development falls kind of in between these two categories. It can be partitioned, but communication is required between each subtask. And in these situations, the best possible outcome doesn't come close to an even trade-off between people and hours. Now there are a few schools of thought around how the cognitive load around communication is at least distributed. But it's quite accepted that intercommunication, talking to each other, is where the majority of the work lies. Now, if each part of the task you're working on needs to be separately coordinated, the that section of work, it increases at a near exponential level. Now, three people will require three times as much interaction as two people doing the exact same piece of work. Things only get compounded when you throw together group meetings. This projected timeline really shows Brooks or an option that adding people power to late software only stands to make it later.
Now, to tackle this, let's talk about the concept of collective intelligence. Collective intelligence is described by researchers as a group's capability to be able to perform well across a wide variety of tasks, and that's doing so together. Despite the evidence and utility of collective intelligence as an index of group-level competence, collective intelligence as a subject matter is fairly new as a concept. But one study that sought to kind of uncover where the magic happens with collective intelligence was based on League of Legends. They used the massive online battle arena game as a method of testing whether or not virtual teams paired based on their abilities could outperform those that had an in-depth understanding of one another. And what has League got to do with work? Well, virtual teams are very common these days. You know, massive online battle arena games, they're characterized by their intensity, their need for fast decision making, and their competitiveness, which sounds pretty familiar to a lot of business operations. I think I'd recognize a few of those traits for sure.
2. Collective Intelligence and Understanding Software
The study found that collective intelligence is largely transferable among tasks. Verbal communication does not equate to high collective intelligence. Skilled players tend to spend less time communicating and rely on nonverbal cues. Understanding the software and using metrics that everyone understands are crucial for team performance and deployment. Lack of understanding can lead to distrust in tests and difficulties in restoring services.
So what did the study find? They found that when investigating the measure of collective intelligence, researchers found that the group's ability to be able to form well at a task was largely transferable, meaning if they could do one thing well, they could probably do quite a few things well. But they noticed that verbal communication doesn't equate to a high level of collective intelligence. In fact, researchers found that people spoke less and used fewer words when communicating with each other when they did achieve that sense of collective intelligence and therefore high performance.
One of the early observations of the studies was that the more skilled players tended to spend less time communicating by preference. You know, they're good at the game and that's where they want to spend their time and they minimize context switching and always just invert like involuntarily engage in nonverbal cues. Our taste at communication mentioned a lot in this study is the unexpressed recognition of the position of others. And most importantly, it leads to actions for common activity.
In the context of a company, this is evidence for advocating for observability measures, opting for automation but most importantly, using metrics that everyone genuinely understands. If we don't understand the software that we're testing, we're likely to restrict the number of times that we deploy. And as anyone who's read Accelerate or follows a state of DevOps report knows that optimizing for team performance can be achieved by tracking these four key metrics. If the software that we're working with doesn't neatly fit into our heads, these metrics will have a near finite value. We won't be able to push past that middle layer and get into that elite teams layer that a lot of the state of DevOps reports talk about. If we don't understand what we're building, we're likely to distrust our tests. Why did that thing pass? That's a very understandable and common question we find ourselves asking ourselves when we're stuck in a code editor. Our confidence deploy will plummet if we don't know what we're doing. If you don't understand the services that we're building or that we're working with, we won't be able to quickly restore them and they do fall down. So in essence, if you minimize a scope, you might get to maximize the impact of what you're working on.