The Role of Patterns and Anti-Patterns in Standards and Best Practices

 E-mail
Written by Cynthia Hauer   
Monday, 21 June 2004 16:00


For some time, “patterns” have begun to emerge as programming rationale, practices, and methods. Patterns are described and defined as recipes or approaches to resolution of common programming challenges – they are comprised of lessons learned and proven methods that are working in at least one project, and sometimes more than one project. Patterns are about accumulating expertise through the experience of past successes. They are about learning from others’ experiences through focusing on the solutions to problems.


In reviewing what a “pattern” is, there is close correlation between “patterns” and “best practices” or “standards.” There have always been localized methods for solving challenges, and many of those methods became, over time, consistent, repeatable practices (patterns?) that have been captured in standards. As a user and developer of standards, I have come to recognize that the term “patterns” is a synonym for “best practices” that are frequently encapsulated in standards.

The anti-thesis to “patterns” is “anti-patterns.” Anti-patterns appear to be traps into which developers should not fall, through wrongheaded thinking, erroneous assumptions, or a flawed implementation methods or outcomes. That’s a synonym for “lessons learned” – but more importantly, it may also be the definition of “mistakes avoided through very creative thinking.”

Anti-patterns represent some very valuable and creative thinking - they define and anticipate bad outcomes and wrong directional signals in moving forward. In my world of Data Management, one very bad pattern that we are coping with is the notion of “data mining.” Data mining suggests action wherein very valuable information can be found through some silver bullet that substitutes for poor data management. The truth is that there’s no silver bullet for finding data unless good metadata exists to identify it and make it contextual for the search query. Now that I begin to think in terms of “patterns” and “anti-patterns,” I am beginning to see many other opportunities to define and quantify challenges in DM – and many good use cases for the development of “anti-patterns.” In this instance, what NOT to do is even more important than what to do, as it advances the thinking better and applies some wisdom and understanding to the objective being sought. It also focuses the practitioner on creating beneficial outcomes by defining the bad choices to make. So as I guide the Handbook 859 (for Data Management) development activity, I am finding a great deal of value in using the patterns/anti-patterns method to move forward with meaning.

Let’s assume, for the moment, that we want to evolve patterns to a state of maturity and value that they could be encapsulated into standards or standard processes that comprise best practices.

Standards represent commonly accepted and widespread practices that address goals and objectives for defined end states. In this particular case, the role of patterns in standards development, the issue is how these patterns should be elevated to standards to promote them into wider use. The second issue is whether or not patterns represent such new thinking that they can earn their way into standards by virtue of the value they add to the processes.

If we examine the rationale for moving patterns to standards, there are obvious benefits gained to the communities in which we participate. The most obvious benefit is that they are extended to others – thus creating understanding, efficiencies and economies of scale, and repeatable and acknowledged successful approaches. Institutionalization of practices and approaches leads to gains for the whole community and its associated communities – clarifying methods and objectives in ways that bring our disciplines recognized value.

The standards development process is typically undertaken in two distinctly different environments. One is to develop a “standard” that represents a very small view – like that undertaken in the pursuit of being all things to all people. Those standards efforts, while laudable philosophically, are generally destined to fail due to the weight and mass of their content, the difficulty of the process in developing them, and/or the length of time it takes to develop them while the outcome is overcome by events.

The other approach is to develop standards through consensus thinking, and to focus on the “core” of the standard’s content; e.g., what is common ground for all. This approach does not try to be all things to all people – the process involves compromises by all participants, during which unique facets or aspects of one-dimensional needs are identified and recognized, and “core” needs get the focus and the attention. It is in this development approach that there is the most interesting and valuable use of patterns and anti-patterns.

Standards typically turn out to be a compendium of best approaches and suggested proven methods that the developers have used, and that have proven value; e.g. “best practices”. While the content of the standard may represent, in fact, best practices, the standard does not substitute for nor override existing best practices inside organizations. Instead, they are guidelines in the absence of best practices.

To effectively migrate patterns and anti-patterns into the standards development environment, we need to focus on patterns and anti-patterns associated with certain goals that they address – and then create annexes to the standard. That method allows us to get down to specific levels of detail, and to enable communities within the disciplines of CM and DM to create the necessary fidelity of detail to achieve their goals. An annex approach works well for a broad “general” or “core” standard – currently, in the GEIA-859 Industry Standard for Data Management, the Department of Defense membership of the group has created their own annex as a bridge or guide to government practitioners who are making the transition to industry methods, but who will always have some government accountabilities and statutes that do not apply to industry.

As a practitioner of CM and DM, my objectives are to understand, support, and promote the practices that are used by software engineers and others. Standards are great ways to create understanding, foster communication, and achieve real gains in the process. I hope that patterns can be captured and incorporated into standards, as best practices to be followed in the pursuit of excellence. Standards provide rapid institutionalization and large exposure to new methods – and the environment that they flourish in is characterized by people with energy, experience, and an appreciation for innovative methods. You may contribute more than you gain in the short term, but you may gain much more than you could possibly contribute in the long haul – both to your profession, and to the practitioner community-at-large.

Standards efforts are truly a double-edged sword: the process requires patience, humility, negotiation, and compromise to achieve a good outcome. The investment is worthwhile. The learning that takes place is tremendous, the relationships forged are remarkable and long-lasting. Gains that come out of the efforts far outweigh the trouble. I challenge the patterns and anti-patterns community to contribute to the development of standards – it will mean putting yourself, your experience, your patterns, and anti-patterns on the line – and it will mean making some painful decisions. But the moments of victory that you’ll experience as you validate your work, see that others have similar challenges, and get to the essence of the issues will be so rewarding to you and to our profession.

______________________________________________________________________________

Cynthia C. Hauer the Chief Executive Officer of Millennium Data Management, in Huntsville, Alabama. She has 21 years of experience in Information Technology which includes extensive involvement in CM, DM, data base design, user interface, data storage, CALS and all facets of system design and implementation. Ms Hauer holds a Bachelor of Science in Computer Science and is certified as CMIIC and CCDM, certifications in both ICM/CMII and NDIA, respectively.

You can reach Ms. Hauer by email at
HauerCC@aol.com

Trackback(0)

Comments (0)add comment


Write comment

You must be logged in to post a comment. Please register if you do not have an account yet.

busy
Last Updated on Thursday, 22 June 2006 02:23