Orders & Magnitude

Rate this content
Bookmark

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.

This talk has been presented at Node Congress 2022, check out the latest edition of this JavaScript Conference.

FAQ

LaunchDarkly is a feature management platform that helps control software development by decoupling the process of deployment from releasing, allowing developers to manage features without impacting the whole system.

The mythical man month refers to the idea that the number of people and the amount of time required to complete a software project are not interchangeable commodities. It highlights the challenges in software development where tasks require significant communication and coordination.

In software development, complexity increases the need for communication, which can exponentially increase the time required for coordination among team members. This often makes the project take longer than expected when additional people are added to a late project.

Collective intelligence refers to a group's ability to perform well across a variety of tasks. It suggests that teams that work well together in one area are likely to excel in others, and effective teams often communicate concisely and use nonverbal cues efficiently.

Improving observability and opting for automation in software development helps teams better understand and manage the systems they work with, reduces the need for repetitive manual tasks, and enhances overall team performance.

Optimizing team performance in software development involves tracking key metrics such as deployment frequency, lead time for changes, change failure rate, and mean time to recovery. These metrics help teams assess and improve their efficiency and reliability.

Jessica Cregg
Jessica Cregg
7 min
18 Feb, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
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.
Available in Español: Órdenes y Magnitud

1. Introduction to Complexity and Collaboration

Short description:

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

Short description:

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.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Impact: Growing as an Engineer
React Summit 2022React Summit 2022
27 min
Impact: Growing as an Engineer
Top Content
This Talk explores the concepts of impact and growth in software engineering. It emphasizes the importance of finding ways to make the impossible possible and the role of mastery in expanding one's sphere of impact. The Talk also highlights the significance of understanding business problems and fostering a culture of collaboration and innovation. Effective communication, accountability, and decision-making are essential skills for engineers, and setting goals and finding sponsors can help drive career growth. Feedback, goal setting, and stepping outside of comfort zones are crucial for personal development and growth. Taking responsibility for one's own growth and finding opportunities for impact are key themes discussed in the Talk.
On Becoming a Tech Lead
TechLead Conference 2023TechLead Conference 2023
25 min
On Becoming a Tech Lead
Top Content
The role of a Tech Lead involves shaping the roadmap, helping the team be more effective, and working on important projects. Lessons learned include encouraging idea sharing, avoiding taking on all the work, and focusing on delegation. Tech Leads focus on the outcome, involve the team in decision-making, and make plans based on how different pieces will interact. The role of a Tech Lead is to focus on engineering and guide the team in figuring out how the whole system should fit together. Architecting can become problematic when it loses touch with the coding part, resulting in implementation issues.
A Framework for Managing Technical Debt
TechLead Conference 2023TechLead Conference 2023
35 min
A Framework for Managing Technical Debt
Top Content
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
It's a Jungle Out There: What's Really Going on Inside Your Node_Modules Folder
Node Congress 2022Node Congress 2022
26 min
It's a Jungle Out There: What's Really Going on Inside Your Node_Modules Folder
Top Content
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.
Principles for Scaling Frontend Application Development
React Summit 2023React Summit 2023
26 min
Principles for Scaling Frontend Application Development
Top Content
Watch video: Principles for Scaling Frontend Application Development
This Talk discusses scaling front-end applications through principles such as tearing down barriers, sharing code in a monorepo, and making it easy to delete code. It also emphasizes incremental migration, embracing lack of knowledge, and eliminating systematic complexity. The Talk highlights the use of automation in code migration and the importance of removing barriers to enable smoother code migration.
Fighting Technical Debt With Continuous Refactoring
React Day Berlin 2022React Day Berlin 2022
29 min
Fighting Technical Debt With Continuous Refactoring
Top Content
Watch video: Fighting Technical Debt With Continuous Refactoring
This Talk discusses the importance of refactoring in software development and engineering. It introduces a framework called the three pillars of refactoring: practices, inventory, and process. The Talk emphasizes the need for clear practices, understanding of technical debt, and a well-defined process for successful refactoring. It also highlights the importance of visibility, reward, and resilience in the refactoring process. The Talk concludes by discussing the role of ownership, management, and prioritization in managing technical debt and refactoring efforts.

Workshops on related topic

Node.js Masterclass
Node Congress 2023Node Congress 2023
109 min
Node.js Masterclass
Top Content
Workshop
Matteo Collina
Matteo Collina
Have you ever struggled with designing and structuring your Node.js applications? Building applications that are well organised, testable and extendable is not always easy. It can often turn out to be a lot more complicated than you expect it to be. In this live event Matteo will show you how he builds Node.js applications from scratch. You’ll learn how he approaches application design, and the philosophies that he applies to create modular, maintainable and effective applications.

Level: intermediate
Build and Deploy a Backend With Fastify & Platformatic
JSNation 2023JSNation 2023
104 min
Build and Deploy a Backend With Fastify & Platformatic
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic allows you to rapidly develop GraphQL and REST APIs with minimal effort. The best part is that it also allows you to unleash the full potential of Node.js and Fastify whenever you need to. You can fully customise a Platformatic application by writing your own additional features and plugins. In the workshop, we’ll cover both our Open Source modules and our Cloud offering:- Platformatic OSS (open-source software) — Tools and libraries for rapidly building robust applications with Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (currently in beta) — Our hosting platform that includes features such as preview apps, built-in metrics and integration with your Git flow (https://platformatic.dev/). 
In this workshop you'll learn how to develop APIs with Fastify and deploy them to the Platformatic Cloud.
Building a Hyper Fast Web Server with Deno
JSNation Live 2021JSNation Live 2021
156 min
Building a Hyper Fast Web Server with Deno
WorkshopFree
Matt Landers
Will Johnston
2 authors
Deno 1.9 introduced a new web server API that takes advantage of Hyper, a fast and correct HTTP implementation for Rust. Using this API instead of the std/http implementation increases performance and provides support for HTTP2. In this workshop, learn how to create a web server utilizing Hyper under the hood and boost the performance for your web apps.
0 to Auth in an Hour Using NodeJS SDK
Node Congress 2023Node Congress 2023
63 min
0 to Auth in an Hour Using NodeJS SDK
WorkshopFree
Asaf Shen
Asaf Shen
Passwordless authentication may seem complex, but it is simple to add it to any app using the right tool.
We will enhance a full-stack JS application (Node.JS backend + React frontend) to authenticate users with OAuth (social login) and One Time Passwords (email), including:- User authentication - Managing user interactions, returning session / refresh JWTs- Session management and validation - Storing the session for subsequent client requests, validating / refreshing sessions
At the end of the workshop, we will also touch on another approach to code authentication using frontend Descope Flows (drag-and-drop workflows), while keeping only session validation in the backend. With this, we will also show how easy it is to enable biometrics and other passwordless authentication methods.
Table of contents- A quick intro to core authentication concepts- Coding- Why passwordless matters
Prerequisites- IDE for your choice- Node 18 or higher
GraphQL - From Zero to Hero in 3 hours
React Summit 2022React Summit 2022
164 min
GraphQL - From Zero to Hero in 3 hours
Workshop
Pawel Sawicki
Pawel Sawicki
How to build a fullstack GraphQL application (Postgres + NestJs + React) in the shortest time possible.
All beginnings are hard. Even harder than choosing the technology is often developing a suitable architecture. Especially when it comes to GraphQL.
In this workshop, you will get a variety of best practices that you would normally have to work through over a number of projects - all in just three hours.
If you've always wanted to participate in a hackathon to get something up and running in the shortest amount of time - then take an active part in this workshop, and participate in the thought processes of the trainer.
Mastering Node.js Test Runner
TestJS Summit 2023TestJS Summit 2023
78 min
Mastering Node.js Test Runner
Workshop
Marco Ippolito
Marco Ippolito
Node.js test runner is modern, fast, and doesn't require additional libraries, but understanding and using it well can be tricky. You will learn how to use Node.js test runner to its full potential. We'll show you how it compares to other tools, how to set it up, and how to run your tests effectively. During the workshop, we'll do exercises to help you get comfortable with filtering, using native assertions, running tests in parallel, using CLI, and more. We'll also talk about working with TypeScript, making custom reports, and code coverage.