Crystal

The Crystal family of methodologies is a group of Agile software development methods developed by Alistair Cockburn in the mid-1990s. Crystal is actually a family of methodologies because it recognizes that each project may require a slightly different approach, depending on a variety of factors such as team size, system criticality, and project priorities. The word "Crystal" comes from the idea that each methodology should be lightweight, clear, and easily tailored - like a crystal.

 

The Crystal family is identified by color to indicate the type of development. The colors include clear, yellow, orange, and red, indicating factors such as team size, system criticality, and project priorities. Color represents the weight or size of the project; the darker the color, the larger the project. Crystal orange denotes a project with around 40 developers, whereas crystal clear is more suitable for smaller projects with fewer developers. Additionally, crystal orange is more appropriate when a high degree of rigor is necessary, whereas clear is more flexible and lightweight. The color indicator of the method identifies the characteristics of the project and team and counters the one-size-fits-all ideals of other software development approaches. 

The Crystal Method family provides projects with a framework for development size and criticality. Crystal is one of the more adaptable methodologies), recognizing that each project may require individual policies and processes to meet the uniqueness of the project. The principles of Crystal are passive knowledge transfer, continuous delivery, frequent releases, and automated testing. The crystal family of methods arose from the need for a customizable approach to accommodate differences in projects.

Each Crystal methodology is represented by a color that signifies the weight or heaviness of the methodology. For instance, Crystal Clear is intended for small teams working on non-critical projects, while Crystal Orange would be used for more critical projects with larger teams.

Despite the variations between different Crystal methodologies, they all share some common characteristics:

  1. People and Interactions over Processes and Tools: Crystal places a heavy emphasis on team collaboration, skill, communication, and cohesion.

  2. Frequent Delivery of Working Software: Crystal methodologies encourage regular, incremental delivery of high-quality, working software.

  3. Close, Regular Cooperation Between Users and Developers: Crystal emphasizes active user involvement and the reduction of intermediaries between developers and users.

  4. Adaptive and Reflective Improvement: Crystal teams regularly reflect on how they're working and adjust their processes and practices accordingly. This reflection is usually performed in a reflection workshop at the end of each increment.

  5. Simplicity and Efficiency: Crystal promotes a focus on simplicity and efficiency, with a focus on doing only what is necessary to move the project forward.

  6. Work-Life Balance and Wellbeing: Unlike some other Agile methodologies, Crystal places a strong emphasis on work-life balance and maintaining a sustainable pace of work.

It's important to note that the Crystal family of methodologies encourages teams to create their own unique process and set of practices, adapted to their specific context and needs. It provides a flexible framework rather than a rigid, prescriptive method.