📄️ Baby Steps
A software development discipline wherein practitioners make the smallest possible incremental change that moves toward a goal while keeping the system in a verifiable, working state. It is a foundational practice for maintaining control and managing complexity during development.
📄️ Bus Factor
The Bus Factor is a metric that quantifies the risk associated with knowledge concentration in a project. It is defined as the minimum number of team members who, if they were to suddenly become unavailable, would cause the project to stall or fail due to a loss of critical and unshared knowledge. A low bus factor signifies a high-risk dependency on a small number of individuals, whereas a high bus factor indicates greater knowledge distribution and team resilience.
📄️ Coding Dojo
Definition
📄️ Coding Styleguide
A Coding Styleguide is a formal documentation that specifies a comprehensive set of rules and conventions for writing and organizing source code within a project or organization. It dictates standards for formatting, naming conventions, architectural patterns, and language-specific best practices to ensure consistency, readability, and maintainability across a codebase.
📄️ Creative Commons Attribution-ShareAlike 3.0 Unported
The Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) is a public copyright license that allows for the free distribution and modification of a creative work. Under this legal framework, anyone may use, share, and adapt the work, even for commercial purposes, provided they give appropriate Attribution (BY) to the original creator and distribute any derivative works under the same or a compatible ShareAlike (SA) license.
📄️ Driver/Navigator
Definition
📄️ Dynamic Duo Programming
Dynamic Duo Programming is the original term, coined by the software engineering pioneer Larry Constantine in the 1990s, for the practice now widely known as Pair Programming. It describes a collaborative development method where two programmers work together at a single workstation, emphasizing the synergistic relationship and complementary skills between the partners to produce higher-quality software.
📄️ Extraversion/Introversion
Extraversion and Introversion are two fundamental personality traits that describe a person's disposition toward social interaction and environmental stimulation. Extraversion is characterized by a preference for seeking stimulation from the external world, such as social gatherings and collaborative activities. Introversion is characterized by a tendency to draw energy from internal sources, preferring solitude or smaller, more intimate social settings. These traits are not absolute but exist on a spectrum, influencing how individuals work, communicate, and function within professional environments.
📄️ Fizz Buzz
FizzBuzz is a common programming exercise designed to improve fundamental coding competency. The task is to write a program that iterates through a sequence of numbers, typically from 1 to 100, and for each number, prints a specific output based on its divisibility. The rules are: for multiples of three, print "Fizz"; for multiples of five, print "Buzz"; for numbers that are multiples of both three and five, print "FizzBuzz"; otherwise, print the number itself.
📄️ Hinge Pairing
Hinge Pairing is a collaborative software development technique designed to systematically distribute knowledge across a team. The method involves one developer, the hinge developer, who remains on a specific task or codebase for an extended period, while other team members rotate as their partner. This structure uses the hinge as a point of continuity, allowing fresh perspectives to be introduced frequently without losing project context.
📄️ Kata
A Kata is a small, repetitive programming exercise designed to hone a developer's skills through deliberate practice. Originating from the concept in Japanese martial arts, a programming kata involves solving a well-defined problem multiple times to build muscle memory, internalize design patterns, and achieve fluency in a specific technique or programming language. The focus is on the process of solving the problem, not just the final solution.
📄️ Knowledge Silo
A Knowledge Silo is an organizational anti-pattern where critical information, expertise, or specialized skills related to a system or process are confined to a single individual or a small, isolated group. This hoarding of knowledge, whether intentional or accidental, prevents its dissemination across the wider organization, creating dependencies and impeding collaboration.
📄️ Synergies of Pair Programming
Pair Programming is a software development discipline in which two programmers collaborate at a single workstation. One developer, the driver, writes the code, while the other, the navigator, observes, provides real-time review, and focuses on the strategic direction of the work. The roles of driver and navigator are switched frequently. This technique is designed to improve code quality, facilitate knowledge transfer, and foster a shared understanding of the codebase through continuous, real-time collaboration.
📄️ Synergies of Pair Programming
Definition
📄️ Law of Two Feet
The Law of Two Feet is a core principle used in self-organizing events, such as unconferences, that empowers participants to take full responsibility for their own learning and engagement. The rule states that if a participant finds themselves in a session where they are neither learning nor contributing, they have the right and the responsibility to use their two feet and move to another session or activity where they can be more productive.
📄️ Pairing Stair
A Pairing Stair is a visual management tool used by software development teams to track pair programming assignments over time. It typically consists of a physical or digital board that displays a stair-step pattern, with developers' names moving down the steps as they rotate partners. The primary purpose of this artifact is to make pairing history transparent, ensure balanced rotations, and facilitate the deliberate distribution of knowledge across the team.
📄️ Pairing Workspaces
Pairing Workspaces are physical environments specifically designed and equipped to support effective pair programming. These dedicated areas feature ergonomic setups, specialized equipment, and sufficient space to facilitate seamless, comfortable, and productive collaboration between two developers at a single workstation.
📄️ Ping Pong Pairing
Ping Pong Pairing is a prescribed pair programming technique that synchronizes the practice of Test-Driven Development (TDD) with the switching of roles between two developers. The workflow follows a distinct rhythm: one developer writes a failing test (the "ping"), and the other developer writes the production code to make that test pass (the "pong"). This cycle repeats, with roles reversing at each step, ensuring continuous, balanced collaboration.
📄️ Promiscuous Pairing
Promiscuous Pairing is a disciplined approach to pair programming where team members deliberately and frequently switch partners. The primary goal is to maximize knowledge distribution, accelerate learning, and increase exposure to diverse skills and perspectives by ensuring no two developers are paired together for an extended period.
📄️ Regular Commits
Regular Commits is a software development discipline where practitioners commit code changes to a version control system at a high frequency. This practice focuses on capturing small, incremental, and logically consistent units of work. The primary objective is to create a detailed and traceable history of a project's evolution, which serves to minimize the risk of data loss, improve team collaboration, and streamline the debugging process.
📄️ 7 Habits of Effective Pair Programmers
The 7 Habits of Effective Pair Programmers is a framework of interpersonal behaviors and professional disciplines considered essential for successful and sustainable pair programming. These habits look beyond technical ability, focusing instead on the communication, trust, and mutual respect required to create a collaborative environment where two developers can perform as a single, cohesive unit. Adherence to these principles directly impacts code quality, knowledge sharing, and team health.
📄️ Shu-Ha-Ri
Shu-Ha-Ri is a model that describes the three stages of progression in mastering a skill or discipline. Originating from Japanese martial arts, the framework outlines a learning journey that begins with rigid adherence to established rules (Shu), moves to understanding and innovating upon those rules (Ha), and culminates in transcending the rules to embody the practice and create a personal style (Ri).
📄️ Silent Pairing
Silent Pairing is a deliberate practice exercise in which two developers collaborate on a task without speaking. The constraint of silence forces participants to rely entirely on non-verbal communication, attentive observation, and the clarity of the code itself to convey intent and direction. It is a pedagogical tool designed to improve communication skills and mutual understanding, not a standard day-to-day working method.
📄️ Strong-Style Pairing
Strong-Style Pairing is a structured pair programming discipline governed by a single, definitive rule: "For an idea to go from your head into the computer, it MUST go through someone else's hands." In this model, the navigator (the person with the idea) verbalizes their thoughts, while the driver translates those instructions into code. This style is explicitly designed to maximize knowledge transfer and is highly effective in mentoring scenarios.
📄️ Switch Times
Switch Times are the predetermined intervals or logical breakpoints at which the driver and navigator roles are exchanged during a pair programming session. The practice of regular and disciplined switching is a core component of effective pairing, designed to ensure balanced participation, maintain high energy levels, and facilitate a shared understanding of the work.
📄️ Synergies of Pair Programming
The Synergies of Pair Programming are the emergent, collaborative effects that arise when two developers work together effectively. These phenomena, such as enhanced problem-solving, accelerated learning, and increased courage, allow the pair to achieve outcomes that are greater than the sum of their individual capabilities. They represent the transformation of two programmers into a single, cohesive problem-solving unit.
📄️ Test-First Pairing
A practice where one partner writes a test that intentionally fails, and the other writes code to pass it. This is a form of Test-Driven Development (TDD), encouraging rigorous, quality-focused development.
📄️ Training from the Back of the Room
Training from the Back of the Room is a learner-centered instructional design and facilitation methodology where the instructor shifts from being a lecturer to a facilitator. This approach emphasizes participant engagement through structured activities, collaboration, and peer-to-peer teaching, prioritizing practical application and experiential learning over passive information consumption. The core goal is to improve knowledge retention and build practical skills by aligning the training experience with principles of cognitive neuroscience.
📄️ YAGNI (You Aren't Gonna Need It)
A principle in agile software development that encourages avoiding unnecessary features. YAGNI helps teams focus on essential tasks to improve productivity.