Crystal Clear - Human Powered Methodology For Small Teams
Crystal Clear focuses on people rather than processes. It is not at all prescribed and stresses flexibility. Teams using RVP, XP, or other methodologies can “borrow” useful techniques from Crystal Clear and vice versa.
Crystal Clear is a book of what worked best for teams on successful projects. It describes the things that make the most difference to the success or failure of a project.
Seven Properties of Crystal Clear
Crystal Clear describes the seven properties that make up the framework, but only the first three are required. The other four are helpful and the better Crystal Clear teams use them. The properties apply to projects of all sizes except for “osmotic communication”, but in general Crystal Clear works best for small, co located teams. Being co located is important.
The seven Crystal Clear properties needed to successfully run an Agile project are:
- Frequent delivery of useable code.
- Reflective improvement. Crystal Clear is not prescriptive and leaves many things up to the team to reflect on and finalize after discussion. Experimentation is a key element in Crystal Clear.
- Osmotic communication. This occurs when all developers on a team are in a room at a table. A discussion takes place, and members either participate or tune-out; but everyone hears or overhears what is said, and it stays in the back of their minds. This works best for small teams of eight to ten people, and you need physical proximity among team members for the osmosis communication to really work. Hazards of osmotic communication are too much noise and too many questions directed to the most expert developer. Removing the expert to a private office for protection backfires. The expert needs to be in the center of the group. The expert does need to be protected, however, so he or she can get something done. To accomplish this, a certain period of time should be set-up each day where the expert is totally alone and not available.
- Personal safety. Team members must be able to speak up when something is bothering them without fear of reprisal. When able to speak freely a team can discover and fix its weaknesses. When there is no evidence of being betrayed people tend to give out information more freely, which in turn shortens the project length. A sense of personal safety is a critical property to attain on a team. To gain trust there must be exposure. Three things software developers must be open about in relation to the project are being able to reveal their ignorance, errors made, and any incapacity they have in meeting the requirements of an assignment. Members on a team must be amiable. People who are being “polite” by not being willing to show disagreement are not acting in the best interest of the team.
- Focus. Executives and leaders must set priorities and make it clear what developers should be spending their time on. Then the developers must be given time, without interruptions, to work on those priorities. Working on one project at a time is ideal; two maximum. Teams should set up two hours of each working day (say 10am to 12 noon) where no interruptions are allowed including meetings, phone calls, and demos.
- Easy access to expert users. Getting prompt response from users, and especially to questions, is key. A developer working with a user, or a user working on the development team are both very helpful but not possible that often. When problems occur because users do not want frequent releases, one solution is to find a single user willing to try out your new software on a trial basis. Not only with Crystal Clear, but with any Agile framework, getting back user feedback is critical.
- Technical environment with automated tests, configuration management, and frequent integration. Many development teams will integrate the system multiple times per day, or at a minimum, once daily. Teams that do “continuous integration-with-test” will be able to detect integration level errors within minutes.
Development teams do best in an environment that is safe, from a personal and emotional point of view, and is free from personal attacks. A key Crystal Clear concept is to have constructive but not vindictive criticism. Ron Jeffries closely characterized Crystal Clear as:
Bring a few developers together in peace, love, and harmony; shipping code every other month, and good software will emerge