Simple Design

Simple Design

Kent Beck created four rules of Simple Design. These are sometimes referred to as The Four Commandments or the XP Simplicity Rules. The rules, in priority order, are that code should: Pass all tests Express the author’s ideas Avoid duplication … Continued
Collective Code Ownership

Collective Code Ownership

Collective code ownership breaks down fiefdoms within an application’s codebase. Nobody “owns” a particular part of the code. Everyone on the team is responsible for all of the code.  This enables pair programming and refactoring by the whole team. It … Continued
Small Releases

Small Releases

Frequent, small releases help ensure constant communication and tight feedback loops.
Continuous Integration

Continuous Integration

Continuous Integration is an XP practice that ensures problems with the full system are detected as soon after they are introduced as possible. It refers to automatically building and testing the full system (integrating the system with all of its … Continued
Naming Things

Naming Things

It is hard to overestimate the importance of choosing good names for source code elements in software development.  Much has been written on this topic, and it is often a source of great debate.  “What makes a name good, or … Continued
Whole Team

Whole Team

An XP Practice, Whole Team refers to the idea that the team involved in building an application or delivering a project is the whole team. If the project needs UI design, or testing, or data modeling, the individuals with those … Continued
Dependency Injection

Dependency Injection

Dependency Injection is a technique that facilitates loosely coupled object-oriented software systems.  It is closely related to the Dependency Inversion Principle.  In simple systems, references to collaborating objects are made directly within classes that need to refer to them.  This … Continued
Test Driven Development

Test Driven Development

Test Driven Development, or TDD, also known as Test Driven Design, is a process for writing code using tests to define and then confirm the software’s behavior. It is characterized by a set of steps known as “Red – Green – … Continued