What is the “Crystal methodology”?
Introduced by Alistair Cockburn, Crystal Methods, which is a collection of Agile software development approaches, focuses primarily on people and the interaction among them while they work on a software development project. There is also a focus on business-criticality and business-priority of the system under development. Unlike traditional development methods, Crystal doesn’t fix the tools and techniques of development, but keeps people and processes at the core of the development process. However, it is not only the people or the processes that are important, rather the interaction between the two that is most important.
In Cockburn’s words, “Crystal is a family of human-powered, adaptive, ultra light, ‘stretch-to-fit’ software development methodologies.” (Alistair Cockburn; http://alistair.cockburn.us/Crystal+methodologies.)
So, what does “human-powered, adaptive, ultra light, ‘stretch-to-fit’” mean?
- Crystal is “human-powered”—This means that people are the most important aspect of Crystal, and all the processes and tools are relative to them. Crystal believes that software development is essentially a human activity, so people involved in this activity are vital while the processes should be modelled to meet the requirements of the team, not the other way around. Crystal emphasizes that development teams are self-sufficient and self-organizing, so they are capable of streamlining the processes as the development process progresses and become more organized and competent.
- Crystal is “adaptive”—First of all, it should be remembered that Crystal is not a set of prescribed tools and techniques for software development; rather, it is an approach. So, the processes and tools are not fixed, but have to be adjusted to the requirements and characteristics of the project. In other words, Crystal is a “stretch-to-fit” methodology, because each project is unique and require methods that suit the business requirements and that satisfy the technical requirements of the project.
- Crystal is “ultra light”—Crystal is known as a “lightweight methodology.” This is because Crystal doesn’t advocate too much documentation, overhead management and reporting. Instead, it believes in keeping things light and focusing on developing business-valued and functional software. For this, teams following the Crystal approach work toward enhancing free and open communication among team members as well as establishing transparent flow of information between developers and stakeholders.
How does Crystal operate?
As stated above, Crystal is not a set of prescribed development tools and methods, but a family of various development approaches. At the beginning of the project, the processes and tools are not fixed but are decided by considering the business requirements and technical needs of the project. When deciding whether Crystal is the right methodology for a project, consider comfort, discretionary money, essential money and life along with the size of the team working on a particular project. Various methodologies in the Crystal family are known as the various “weights” of the Crystal approach and are represented by different colors of the spectrum.
Therefore, the Crystal family of methodologies consists of the following variants: Crystal Clear, Crystal Yellow, Crystal Orange, Crystal Orange Web, Crystal Red, Crystal Maroon, Crystal Diamond and Crystal Sapphire
To clarify, Crystal Clear is more appropriate for comparatively short-term projects being managed by a team of six developers working out of a single workspace, whereas Crystal Orange is suited for projects that require a team of 10 to 40 members and have a lifespan of 1-2 years. On the other hand, Crystal Sapphire or Crystal Diamond methods are used in large projects that involve potential risk to human life. Therefore, the weight of the Crystal methodology is determined by the project environment and the team size.
What are the main practices recommended by Crystal?
Crystal is precise about certain practices because these are crucial for the successful implementation of the Crystal approach onto any project. These practices include:
- An iterative and incremental development approach—The project is developed in iterations that are generally time boxed. The feature delivered at the end of an iteration is integrated into the overall system. User feedback taken at the end of an iteration is used to plan the next iteration; and, new and additional features are added in every subsequent iteration. All this results in refinement and completion of the overall software.
- Active user involvement—This is a must because Crystal is a people-centric approach and emphasizes transparency. So, users are not only actively involved but also regularly informed about the progress of the project.
- Delivering on commitments—The team endeavors to ensure frequent delivery of client-valued, potentially-shippable functionalities. It is to this end that Crystal follows an iterative and an incremental development approach.
What are the roles prescribed by Crystal?
The Crystal approach defines a number of roles: Project Sponsor, Senior Designer/Programmer, Designer/Programmers (Business Class Designers, Programmers, Software Documenters and Unit Testers) and Users. Also, there are a number of other roles such as Architect, Coordinator, Requirements Gatherer, Business Expert, Business Analyst/Designer, Project Manager, Design Mentor, Usage Expert, Lead Design Programmer, UI designer, Technical Facilitator and Technical Writer.