K
KaidoCraft
Back to home
Core Practices

Agile Technical Practices

The essential disciplines that let software teams deliver value continuously—without accumulating the technical debt that stalls most projects.

Technical Feedback Practices

TDD · Pair Programming

Create tight loops between intent and outcome.

Technical Design Practices

Refactoring · Simple Design

Keep the codebase healthy and malleable over time.

The Four Pillars

What they are and why they matter

Drawn from Extreme Programming and refined by decades of Software Craftsmanship, these four practices address both design quality and feedback speed.

Test-Driven Development

TDD

Write failing tests first, make them pass with the simplest code, then refactor. TDD has two major schools: the Classic (Chicago) school and the Outside-In (London) school.

Classic TDD Outside-In TDD Test Doubles Transformation Priority Premise

Pair Programming

Two developers collaborating on the same code. One drives while the other navigates. Shortens feedback loops, spreads knowledge, and produces higher-quality designs.

Driver–Navigator Ping-Pong / Popcorn Chess Clock Pomodoro Pair Rotation

Refactoring

Improve the internal structure of code without changing its observable behaviour. Keeps the design clean and prevents technical debt from accumulating.

IDE Productivity Code Smells Refactoring Legacy Code Design Patterns

Simple Design

Continuously pursue the simplest design that satisfies the requirements. Rigorous application of design principles prevents accidental complexity.

Object Calisthenics Four Elements of Simple Design SOLID Principles Coupling & Cohesion Connascence

Why these four?

Most Agile frameworks—Scrum, Kanban, even the Agile Manifesto itself—specify no technical practices. That gap is exactly why so many projects stagnate under the weight of accumulated technical debt.

Extreme Programming (XP) was the first methodology to name them explicitly. From that list, TDD, Pair Programming, Refactoring, and Simple Design form a self-reinforcing system: design stays clean enough to refactor safely, tests give confidence to change anything, and pairing spreads that discipline across the whole team.

Together they enable continuous experimentation—the ability to try a design change, get immediate feedback from tests and your pair, and evolve the solution without fear.

"Optimism is an occupational hazard of programming: feedback is the treatment."

— Kent Beck, Extreme Programming Explained

Recommended Reading

Agile Technical Practices Distilled

This page draws from Agile Technical Practices Distilled by Pedro Moreira Santos, Marco Consolaro, and Alessandro Di Gioia—a practitioner's guide that distils 20+ years of coaching and daily practice into a clear, progressive learning journey. It covers TDD (both schools), Pair Programming, Refactoring, Simple Design, BDD, DDD, and more.

From Red–Green–Refactor basics To Outside-In TDD & Object Calisthenics Katas in every chapter