Crystal or also known as Crystal Methods are a family of methodologies (the Crystal family) developed by Alistair Cockburn from his study and interviews of teams in 1998.
The word Crystal comes from a gemstone, where in software terms, the faces (representing the techniques, tools, standards and roles) are a different view on the “underlying core” of principles and values.
It primarily focuses on people and their interactions when they work on a certain software development project rather than on processes and tools.
Plus, it also centers on business-criticality and business-priority of the system under development.
Crystal methods are said to be “lightweight methodologies”, promoting early, frequent delivery of working software, adaptability, high user involvement, and the removal of bureaucracy or distractions.
As based straight from Cockburn’s words, “Crystal is a family of human-powered, adaptive, ultra light, ‘stretch-to-fit’ software development methodologies.”
Crystal is a collection of Agile software development approaches introduced by Alistair Cockburn in 1998. The concept focuses on communication, with special emphasis on interaction, community, people and skills.
Cockburn believes that the people’s skills and talents, as well as the way they communicate has the biggest impact on the project outcome.
He adds that we should view the product development as a game which should stimulate everyone to interact, become creative and produce brilliant ideas. Instead of focusing on questions like “is our model accurate?” we should be looking for answers to the questions like “Is our product meeting the customer’s needs? Or “Do we have our goals aligned as a team?”
The Crystal Methods
One of the most lightweight, adaptable approaches to software development, Crystal methodology is based on two (2) fundamental assumptions:
- Teams can streamline their processes as their work and become a more optimized team.
- Projects are unique and dynamic and require specific methods.
Crystal method is actually comprised of a family of agile methodologies in different variants (colors), each of which has unique characteristics driven by several factors such as team size, system criticality, and project priorities. The following are just some of the practically used crystal methodologies in real projects:
- Crystal Clear – for teams consisting of 6 people.
- Crystal Yellow – for teams consisting of 10-20 people.
- Crystal Orange – for teams consisting of 20-40 people.
- Crystal Red – for teams of up to 80 people.
- Crystal Maroon – for teams of up to 200 people.
Defining the Crystal Method Characteristics
- Human-powered. This simply emphasizes that people are the most vital element of Crystal, and all the processes and tools are relative to them. It also means that people are capable of organizing themselves. As the processes develop, they can become more organized and competent.
- Adaptive. An approach and not a set of prescribed tools and techniques for software development, Crystal is a stretch to methodology. This means that processes and tools are not fixed, but rather adjusted in order to meet the requirements of the team and the project at hand.
- Ultra-light. Not advocating too much documentations, management, and reporting, Crystal is known as a “lightweight methodology.” It focuses on practicing open communication between team member and transparent workflow between the team and the client.
- The Crystal Method Practices: Certain practices are crucial for the successful implementation on any project. Involving preciseness, Crystal has a number of practices that include:
- An iterative and incremental development approach. For the overall refinement and completion of the software, the project is developed in iterations that are generally time boxed; 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.
- Active user involvement. With Crystal’s people-centered and transparent nature, users are not only actively involved but also regularly informed regarding the project’s progress.
- Delivering on commitments. The team strives to secure frequent delivery of client-valued, potentially-shippable functionalities.
7 Properties of Crystal Method
Between all methods in the Crystal family, given below are the seven (7) prevailing common properties:
- Frequent Delivery. Allows teams to frequently deliver working, tested code to real users. This way, they don’t need to realize that they have invested their energy and time into a product that nobody wants to buy.
- Reflective improvement. There are always techniques and methods where your team can improve a product, no matter how well or bad it has become.
- Close or osmotic communication. Enables teams to pick up useful information without even being directly involved in the discussion of the certain matter.
- Personal safety. In order to build a healthy working atmosphere and genuine team culture, team members should practice an open and honest communication whether presenting a new idea or possible problem, without fear.
- Focus. Each team member knows exactly what to work on, allowing them to focus their attention and avoiding switching tasks one after another.
- Easy access to expert users. Allows teams to maintain communication and get regular feedback from real users.
- Technical environment with automated tests, configuration management, and frequent integration. Very specific tools for software teams emphasizing continuous integration so that errors could be caught in just a matter of minutes.
The Crystal approach considers people as the most important, thus, processes should be modeled to meet the requirements of the team. It has an iterative and incremental development approach, an active user involvement, and delivers on commitments.Also, it is adaptive, without a set of prescribed tools and techniques and doesn’t requires too much documentation, management or reporting.
If you enjoy reading about software development methodologies, let’s take a look at other blog posts.
By Tuan Nguyen