Crystal method is a family of methods, developed by Alistair Cockburn. These methods mainly focused on people and their interaction and were established in 1990 when IM asked Alister to create a way of an object-oriented project.
- What is Crystal? We will discuss what makes Crystal method different from other Agile methods. Additionally, we will talk about how it got designed, the reasons behind it, in detail.
- The Crystal family: Alistair believed that one-size-doesn't-fit-all. In other words, it means that one method can't get applied for every project. He designed crystal in a way that it has various methods. The crystal family introduces us to multiple methods designed under Crystal methodology. In addition to the above, it also tells the reason why it includes numerous ways and how are they different from each other.
- Roles and responsibilities: It describes the multiple roles and their responsibilities based on their method.
- Characteristics and properties: We will try to understand the features and the properties with the help of examples.
- Crystal Process flow: Complete workflow of the Crystal method will get defined in this section. Additionally, the process involved gets covered.
- Advantages and disadvantages: In addition to the above, the advantages and disadvantages of Crystal method and how they affect the project gets explained in this section.
- Scrum and Crystal: Finally, the comparison of how Crystal is different from the Scrum.
What is Crystal Method? How is it different, and what is its focus?
When in 1991, IBM asked Alistair Cockburn to develop the methodology for Object-oriented-project; he knew it’s going to be challenging. After extensive research, he concluded that all successful teams shared the same pattern and techniques without using any specific Project methodology. Consequently, he used his findings and constructed a family of methodologies and named it Crystal.
Crystal methodology is one of the most lightweight and flexible approaches to develop software. Moreover, it is made up of several agile processes, including Clear, Crystal Yellow, Crystal Orange, and other uniquely characterized methods.
To conclude, the Crystal family focuses on the realization that each project has unique characteristics. Hence, the policies and practices must be custom-tailored to accommodate these features.
The Crystal method has several essentials, which are known as Crystal properties:
- Teamwork: First is teamwork which concentrates on giving team members tasks and additionally, encourages them to do tasks as a team and not as individuals.
- Communication: Second is Communication. It is the most critical aspect of any project. Proper communication through email or face-to-face is required between Customer and Developers. Additionally, it is vital within the teams as well.
- Simplicity: Third property focuses on the fact that Product Design, Requirement Document, and other documentation have to be understandable and straightforward. It will enable everyone to understand and work more efficiently.
- Reflection: Next property is all about achieving three primary aspects of Reflection, that is:
- Responding and reporting correctly: Firstly, everyone related to the project should respond as and when required. Additionally, they should provide all the updates on time to make it easy for others to understand the progress.
- Reasoning: Secondly, this means providing a valid reason for every action. Developers and testers should have the right logic for each of their efforts to not let their activity consider a waste.
- Reconstruction as and when needed: Finally, Tester and Developers should be well aware of all the stages they performed so that it is easy to reverse and reconstruct coding.
- Frequent adjustments: The team should be able to make the adjustments as per the situation and the required changes.
- Improve processes: Improvement is a continuous process. They can be improved basis customer feedback, internal feedback, from meeting output, after the root cause analysis of any bug.
In the same vein as other Agile methods, Crystal Methodology also promotes on time and frequent working software delivery. It inspires high user participation, adaptability, and exclusions of distractions and any waste.
The basis of the Crystal Method is on two critical assumptions:
- First, the team can make itself more efficient by streamlining their work and the project.
- Second, every project is different from others and requires some specific methods and strategies.
According to Alistair, every project is a game, and we need to make a strategy to win the game. He said we should include everyone, allow them to interact and welcome everyone's idea while planning for a project. According to him, we should not focus on what we made; we should focus on what the customer wants us to make?
Crystal methods focus on:-
- People involved
- Interaction between the teams
- Skills of people involved
- Their Talents
- Communication between all the teams
The Crystal family:
Upon observation, it appeared that the project properties like Criticality change with the number of people involved in the project.
Alistair observed that the small teams were able to build and deliver projects without much paperwork/status reports. Whereas the bigger teams, working on the big-scale projects, needed a lot of paperwork, continuous updates, and a lot of communication.
He found it depends on the project size of how complex the project is going to be. Therefore, he designed the Crystal method, which had different techniques for different project sizes.
He concluded that the suitability of the Crystal method depends on three dimensions:
- First, Team size
- Second, Criticality
- Third, the priority of the project
For example, a school divides its 5th class into various sections such as 5th A, 5th B, 5th C, on the basis on the following things-
- Their previous class scores
- Ability to understand
- Their strength
Dividing a class into sections helps teachers a lot. As the level of understanding is almost similar for all students, it allows teachers to define their teaching strategies accordingly.
Alistair used different colors to differentiate between different methods. Which, in turn, makes it easy to identify which way gets used when.
Methods of Crystal Family
Crystal Clear: Small team size of 1-6 people Supports fixed price, no negotiation contract People-oriented doesn’t focus on process and artifacts much Requires documentation The focus of project safety
- Small team size of 7-20
- Clear ownership of code areas. Code area ownership is defined so that if any changes required, then only the person who owns that code will be taking care of it.
- Feedback gets taken from the “Real Users”. Additionally, it eliminates further confusion which may occur due to indirect communication.
- Prefer accessible and direct communication. It reduces the need for too much documentation. Therefore, it becomes easy for the developer to understand his work.
- Mission statements are the goals which are defined and verified with the customer.
- Automated testing is used to resolve the bugs faster.
- Monthly improvement plans get set. Which includes making a to-do list and achieving it within the time.
- Team size of 21 to 40
- The project lasts from 1-2 years
- Split up teams as per their functional skills
- Just like the agile method, follow incremental development
- A release is required every 3-4 months
- Every release is called “Increment”.
- Designed for medium size project
Crystal Orange web
- Team size of 21 to 40
- Used in the Projects that have a continually evolving code base that is being used by the public
- It focuses on raising the minimal defect
Even though the Crystal Orange web & Crystal Orange are similar; Crystal Orange web does not deal with a single project but with a series of initiatives that require programming. The result of these initiatives is merged with the code base and gets used by the developers. However, the method remains the same. It is the reason why it is not shown in the diagram separately.
- The traditional software development method gets followed for the team size of 40-80. In addition to that, the teams are formed and divided as the work required.
- It is for the team size 80-200. It is for large-sized projects. Moreover, the methods defined are different & as per the need of the software.
Above are the primary members of the Crystal family. However, for large size projects, there are two more methods.
Crystal Diamond and Crystal Sapphire:
Both are the methods used for very critical and large scale projects. Their team and strategies get decided as per the criticality of the project. These projects are incredibly significant and involve the potential risk of human life.
As shown in the image above, Comfort (C), Discretionary Money (D), Essential Money (E), and Life of the project (L) are the vertical factors. The horizontal factor is Team Size.
Hence, according to Alistair, all these factors have to be considered to decide which method to follow.
For example, for a project of size 40, before committing the date of release, the developers will consider the following things:
- How many hours each resource is comfortable to work (C)
- The amount of money available(D) to use for that project
- How much money is required to complete the project(E)
- If any of these requirements don't meet, then the team size & Life of the Project (L) can be increased/decreased. And finally, the most feasible methodology gets chosen.
Alternatively, seeing the team size, developers can estimate the project completion (L) based on the Money provided (E), Money available (D) & Comfort of the resources(C).
Roles and Responsibilities:
The fundamental difference between Crystal Clear and other Crystal methods is that in Crystal Clear, there is only one team in a project. Whereas in the rest of the Crystal methods, there are multiple teams to follow through the project.
However, in all the Crystal methodologies, one job assignment may include numerous roles.
The Crystal methods have many positions like Executive Sponsor, Executive, Lead Designer, Programmer, The Ambassador User, and Tester. These are the leading roles.
There are some other sub-roles like Project Coordinator, Business Expert, Technical Writer, and Business tester.
Above roles are divided into two categories-
The Executive Sponsor:
The executive sponsor is the one who
- Allocates or decides the allocation of the money for the project
- Creates visibility for the project
- Help team with crucial business-level decisions
The Ambassador User:
The Ambassador User is the one
- Who would be testing the final product
- One who is aware of the complete operational procedure
- Who has the knowledge of the entire system in use
The Lead Designer:
is responsible for all technical work
- Should have a massive experience with software development
- Should be able to figure out when the project team is on-track
The Programmer is another significant person. A Programmer works along with the designer to make the software system. Additionally, a person who can do coding or programming can do design and vice versa.
The Virtual roles
is the Project Manager, responsible for
- Take notes at the Project Planning and Review Meetings
- Combine the information and present it to the Sponsors
- Keep the Project Sponsor informed about the status of the project and keeps the things visible.
The Business Expert:
Business expert is the person who
- Knows how the business runs
- Identifies the priorities and can differentiate between less prior tasks
- Understands the policies and makes sure everyone follows them
- Develop all the queries that a programmer may have about policies and system
The Technical Writer and the Tester:
It is not a permanent role and is rotating or temporary. A tester is responsible for testing the software after its de. A tester is responsible for
- Testing the software
- Reporting a bug (if any)
- Try to fix the bug at his end first (if possible)
Main characteristics of Crystal methodology are
- Man-powered: It means that the designing of the process happens in such a way that it gives importance to people involved in the process. In addition to that, it ensures that the process is easy to adapt and enables people to grow and become more organized.
- Adaptive: Crystal is a methodology that believes in searching and getting fit as per the requirements. In other words, it means that the fixing of processes, standards, and tools doesn't happen in this method. Additionally, they are adjusted to meet the need of the team and current running project. In other words, they are flexible.
- Ultra-light: Ultra-light means, no extensive documentation, no hard and fast rules or management, and no particular reporting. In other words, Crystal method keeps things light by keeping the workflow and communication transparent between team members involved and the client.
The eight Crystal Clear properties needed to run a project successfully are:
1. Frequent delivery:
The priority of any project is to deliver working software at the end of every release irrespective of the kind of project it is, its team size, budget, or profit. Therefore, this delivery has to be frequent.
To understand it better, let’s consider that going to school is a task. We divide this task into small iterations like
- Getting up on time
- Getting fresh
- Get the lunch box packed in time
- Catch the bus from the stop
- Reach school
To reach school in time, we need to ensure that each of the iterations gets delivered on time. Delivering each iteration in time will ensure release in time.
Frequent delivery of software has many benefits which include
- Regular iteration release. Which, in turn, means the working functionalities delivered regularly.
- One can find the problems and resolve them in real-time because it ensures that the iteration cycle is kept small (weekly to not more than four months).
- The Customer can see the real-time whether the project is moving as per his expectations or not.
2. Reflective Improvement:
Crystal Clear is a method and not a standard. It leaves many things up to the team to reproduce on and confirm after discussion. An incorrect decision can produce an adverse result. Therefore, it is crucial to discuss in what situation, what may work, and what may not.
During our college days, for the physics practical, we took multiple readings from the same apparatus, for the corresponding practical exam. However, every reading came out to be different. Do you remember what used to do in this situation? We discussed amongst ourselves and found the closest reading.
Likewise, in this method for any problem, we can have a discussion and reach the closest solution. It is called reflex and improve. It improves the process in many ways-
- One can find the answer to the problem by discussion.
- Developers also dedicate their time to improving the process.
- A weekly meeting or a workshop helps to find what processes are working and what needs to be modified.
3. Osmotic Communication:
Osmotic communication works well for small size teams. This communication happens when all team members are in a room at a table. A discussion takes place among all the members. They may or may not participate, but everyone perceives the idea of the discussion. Moreover, it stays in the back of their minds. For Osmotic communication to work, the requirement of physical proximity among team members is necessary.
It's the same as a classroom discussion. The teachers will be the subject expert (Expert developer in our case). They will be answering all the questions from students.
It has many benefits-
- Information flows quickly
- Reduction of Communication overhead
- Everyone gets to know what problems may occur and already get to know the solutions.
4. Personal Safety:
Personal Safety is the first step toward trust. Team members should speak up when something is bothering them, without having a fear of getting questioned or retaliation. This information can be anything like
- The design by someone else needs improvement
- The time estimates are unrealistic
- The teammate didn’t come in time or anything else
When able to speak without obstruction, a team will be able to determine and fix its flaws. When trust doesn't break, the team tends to talk freely. Which, in turn, will help in reducing defects and will help in finishing the project in time.
A sense of personal safety is a very challenging property to attain on a team. During the project, people get to know who is helpful and listen to them carefully and who is not. Eventually, they find with whom they are comfortable and feel safe to talk. With Personal Safety, they speak from their heart during the Reflective Improvement sessions.
For any project, there are three things software developers must be open about
- Should be able to reveal their ignorance
- Should be able to tell errors made
- Accept the incapacity they have in meeting the requirements of an assignment.
These three things are directly related to the project and will be impacting the delivery.
- It’s like telling your boss that you misestimated the cost or expenditure by more than 50%, or
- Disagreeing with your boss about the schedule in a team meeting
- Having a long debate with your teammate and still end it friendly
Personal safety enables
- Team members to speak freely
- Share their views and doubts without worrying about what others will think.
- Proper and effective communication
- Individuals to correct their mistakes
Leaders and executive-level people should set the priorities straight. They should decide what developers shall be working on and then allow them to work on those activities without any interruption. They should give them some dedicated time (at least 2 to 3 hours) every day. During this time, the developers should work only on that activity without any interruptions, demos, or meetings. Developers should be able to focus on their work for that particular period.
For example, during exams, dedicated 3 hours are assigned to write the answers for a specific set of questions. During those three hours, the student is focused on writing the answers for those questions and will not be interrupted until the time is over.
Advantages of being focused are
- Developers get a better understanding of the task
- Better the focus, sooner the work will be done
- Goal and definitions of the project become more clear
- No waste of time and resources.
6. Easy Access to an Expert User:
Keil and Carmel did research which says that:
“The successful projects had better and direct links to the real users as compared to unsuccessful ones”.
Developers need to have a direct link to the “real user”. Real user means the same set of people who will be using the product. They are the people who will be using the product, so they will be able to tell the developers better, how they want the product to be.
A kid only can tell if the book that claims to be easy to understand is easy to understand or not. Here kid will be the real user and the book is the product.
However, practically, it is tough to have direct access to real users. In case of frequent release, developers have to test a new feature every week. Which, in turn, becomes very difficult to find the real user to check it every week. One solution to it is to find a single user willing to try out your new software. This problem occurs with every method which has frequent delivery.
Apart from these, there are many positives that developers have when they have access to real users
- They can get Real-time feedback
- One can include Improvements as per expert (Real user).
- Developers work with the experts directly, so communication becomes easy.
- Approval process becomes easy and hence time also reduces
7. Technical environment:
The primary purpose of the technical environment is to do continuous integration and testing to identify errors, code breaks, bugs, etc.
Continuous integration happens regularly by using automated tests, configuration management, and frequent integration. So the problems are less likely to occur.
Testers can quickly check whether the code is working fine or not using automated testing. If there are any problems, code can be revised to make it work. Automated testing is faster than manual and gives the freedom to the tester to quickly finish work and go back home on time
Using Configuration management one can do the following things:
- Firstly, people can check their work.
- Secondly, they can make changes if required.
- Additionally, they can wrap up the configuration for release.
- Finally, they can roll it back to the previous stage if they find any problem.
8. Frequent Integration:
The more frequently teams integrate the system; the faster they will be able to detect the problem in that. Most of the technical team do it multiple times a day, and if not that daily.
Advantages of having a technical environment
- Enables developers and testers to identify the problems that arise from change.
- It easy to spot problems if all the above activities happen daily.
- Issues do not grow to the project level and are resolved in iteration only.
However, for Crystal Clear, it is not a mandatory property as that is a small size project. Below is the image for the features necessary for Crystal Clear.
Practices that are followed and applied during the software development process are the Policy standard. Both the Crystal Clear as well as Crystal Orange suggest the below-mentioned policy standards.
- Incremental delivery regularly
- Progress tracking by milestones based on software deliveries and significant decisions rather than written documents
- Direct user involvement
- Automated regression testing of functionality
- Two user viewings per release. Which, in turn, means at least two users will be checking the released function to avoid any mistakes.
- Workshops for product and methodology-tuning at the beginning and in the middle of each increment.
Most policy standards are the same for all methods of Crystal. However, the incremental delivery time may vary as per the strength and the headcount of the project.
For instance, the policy standard of Crystal Clear suggests incremental delivery within two to three months. Whereas for Crystal Orange, the incremental delivery can stretch up to four months.
The policy standards are mandatory to follow for any process. However, they are replaceable with a similar practice.
The standard process Cycle of Crystal method is similar to Scrum, as shown in the below figure:
This figure shows any project delivery starts with small episodes. The episodes (iterations) are designed. Planning and coding of the functionality happen so that its delivery can follow in the next iteration.
The same codebase can be used for the next iteration coding as well. That is called the Integration of that episode.
After that, each iteration is delivered either daily or weekly.
Once all the iterations finish, the integration of the project as a whole executes.
Finally, after Integration and testing, the project delivery takes place.
7 Cycles of Crystal method are as follows-
1. The Project cycle:
A project cycle has the following three parts:
- The Chartering activity: Firstly, the Chartering phase involves multiple activities. Developing an initial plan, creating and assigning Development teams, performing feasibility analysis. Some of the most important activities performed are
- Build the core team: The definition and creation of the complete team occur in the charting phase. The decision of an Executive sponsor, a designer, a developer, and a key user takes place. After major roles are selected, 2/3 more people will be added to the teams.
- Exploring: In this phase, the developer and design team will be exploring all the solutions and will choose the best-suited solution for development.
- Shaping Methodology: After the discussion of all possible solutions, the Developers will finalize the methodology that they will follow for development.
- Initial Project Planning: After the finalization of the method, developers will sit with the rest of the teams and do the initial phase planning. Additionally, they will start designing the project accordingly.
- Cyclic delivery: Secondly, the cyclic delivery has two phases, during which the
- Team updates and improves the release plan
- The development team implements a subsection of the requirements through one or more iterations.
- Integrated product delivery happens to actual users
- Lead developer reviews the project plan and adopted development methodology
- Wrap Up: Lastly, this phase has the final activities. Product deployment occurs in a real user's environment. After the implementation, post-deployment reviews and reflections take place in this phase.
2. The Delivery Cycle:
The Delivery Cycle is the unit of delivery and shows the progress till delivery. It shows the delivery of the final product. It may be a week to 3 months or more depending on the project size. In addition to the above, this cycle delivers two or more iterations.
3. The Iteration Cycle:
The unit of estimation, development, and testing. Additionally, it may also vary from one week to three months.
4. The Work Week/Day:
It is a unit that shows the entire work done for a week.
5. Integration Period:
It is a unit of design, development, integration, and system testing. This period starts from a few hours and may last up to three days.
6. The Workday:
A unit that shows all the work done daily.
7. The Episode:
Designing, developing, and checking a small section (iteration) of code. It can take from a few minutes to a few hours.
The above figure shows the performance of different activities under various cycles.
For instance, Project Cycle has Charting as one of the activities. First, to plan every Iteration, we will have a Daily Standup meeting. Second, the planning for Testing and Coding takes place. Finally, test planning before the release happens.
Similarly, the same process follows for each iteration.
Incremental development process flow:
All Crystal methodologies involve many of practices, like incremental development. In the description of Crystal Orange and Crystal Clear (Cockburn 1998), this incremental development had many activities. These activities were
- Revision and Review
- Parallelism and flux
And many more. Let’s get to know more about these activities.
Planning of the next increment happens in this stage. In this stage, developers make a plan for the next release as well. A schedule of activities completed from the first month to the end is chalked out. In addition to that, the development team, who would be working on it, will select the requirements that need implementation in that particular increment and are scheduled as per their ability to deliver.
Monitoring is all about ensuring that the progress is as per the plan. In other words, it refers to the deliverables of the team during the complete software development process concerning their growth and stability. The continuous progress at different stages is measurable under various milestones like:
- Start: When the project work starts, and the development team starts working on the planning.
- Review 1: Monitors the review of project planning and ensures coverage of all the points.
- Review 2: Monitoring that the analysis of coding and design happens
- Test: Once the coding finishes, the testing need arises. Which, in turn, requires monitoring that the testing executes appropriately.
- Deliver: After successful testing of the functionality, the customer gets the delivery. However, before that, the Lead has to monitor that the delivered functionality is as per the customer's expectations.
- Stability stages: It refers to the need to observe that the project is stable enough to review. If there are any fluctuations, developers have to take care of it.
- Monitoring: It is a continuous process until project delivery, and all the crystal methods require it.
3. Revision and Review:
Each increment and release has many iterations associated with it. And iteration includes the following activities:
- Construction: The developers do the design and coding here.
- Demonstration and testing: The testers execute this phase.
- Review of the objectives of the increment: The developer does the review, and they will check if they are working towards the commitment or not.
4. Parallelism and Flux:
Parallelism and flux mean the simultaneous execution of two works. In other words, it means, when the monitoring team confirms that all the deliverables are stable enough, the next task starts. Now, at this stage, most of the teams can work parallel on the works assigned to them.
5. Holistic Diversity Strategy:
Since Crystal Clear is the method that is very small in the team size, so it does not need a diversity strategy. The rest of the ways other than Crystal Clear follow Holistic Diversity Strategy.
It means dividing large teams into small groups as per their functionalities and expertise. The idea behind this is to include multiple specialties within a single team.
6. Methodology-tuning Technique:
This is one basic technique of streamlining the methods for various Crystal methods. This technique uses the data of project interviews, workshops, and feedbacks to find out or define a new technique or to fine-tune any existing method of the Crystal method. The idea behind it is to fix or improve the current development process.
The Crystal method believes that from every increment, the project can gain some knowledge. Which, in turn, upcoming projects and the next increments use. In addition to that, it also helps us find out which tool or technique is more suitable for which Crystal method.
7. User viewings:
Crystal methods suggest that for every release, the final product should be viewed by the users at least twice. This, in turn, decreases the chances of having checked or tested wrong. For a large-scale project, this number of user views can increase to three per increment.
8. Reflection Workshops:
Most of the small project Crystal methodologies like Crystal Clears and Crystal Orange does not define any specific techniques to use in their projects. They can adopt techniques from other popular methods like XP, Scrum, and others. Additionally, they can even replace their techniques with them.
Crystal methods have adopted the technique known as Reflection. Crystal methods hold Reflection Workshops before and after every increment. Moreover, the purpose of having these workshops is to promote constant learning from testing results, feedbacks, and experiences.
Unlike other methods, Crystal clear focuses on adjusting projects and methods as per people and budget. Which, in turn, makes this method different.
With different methods for different team sizes, Crystal provides a clear idea about what method to use and when. Therefore, its time and effort saving.
Advantages and Disadvantages of Crystal Method
- Firstly, the crystal method is flexible and can adjust to the project type, team size, and project requirements.
- Secondly, the priority delivery of the Critical and highly essential components of the project takes place.
- In addition to the above, this project can have as few as ten team members as well.
- Moreover, this method promotes effective team communication, and this helps the team members to learn from each other.
- It usually has a fixed-price contract, which helps in finalizing team size and plan as per budget.
- Firstly, the principles followed may vary as per team and project size which makes it difficult to understand
- Secondly, it needs constant communication, and this is the reason why it may not work well for the projects which have multiple working areas.
- Moreover, since planning and development are not dependent on the requirement, so it becomes difficult to move from one approach to another in the mid-project.
Difference between Crystal and Scrum
|Crystal is more permissive. Therefore, it accepts changes as per project and team size requirement||Scrum is more disciplined. Therefore, once the Sprint starts, it doesn’t allow any further changes to be taken up within the sprint scope.|
|Crystal delivers as per criticality||Scrum delivers as per the priority of the backlog items.|
|Due to flexibility, the requirement of proper documentation becomes vital.||Often criticized due to poor documentation|
|After finalizing the process and budget, nothing can change.||Because of the acceptance of ad hoc requests, clients demand more.|
|Crystal has got different methods for each project type, based on the number of people that are working in the team.||Scrum believes in, "on one method fits all". Irrespective of the team size, a single methodology applies here. The overall team breaks into scrum teams. Therefore, the number of scrum teams can increase, but the individual scrum team size remains the same.|