Organizational patterns

Last updated

Organizational patterns are inspired in large part by the principles of the software pattern community, that in turn takes it cues from Christopher Alexander's work on patterns of the built world. [1] Organizational patterns also have roots in Kroeber's classic anthropological texts on the patterns that underlie culture and society. [2] They in turn have provided inspiration for the Agile software development movement, and for the creation of parts of Scrum and of Extreme Programming in particular.

Contents

History

An early explicit citation to patterns of social structure can be found in the anthropological literature.

Patterns are those arrangements or systems of internal relationship which give to any culture its coherence or plan, and keep it from being a mere accumulation of random bits. They are therefore of primary importance. [3]

Kroeber speaks of universal patterns that describe some overall scheme common to all human culture; of systemic patterns are broad but normative forms relating to beliefs, behaviors, signs, and economics; and total culture patterns that are local. Kroeber notes that systemic patterns can pass from culture to culture:

A second kind of pattern consists of a system or complex of cultural material that has proved its utility as a system and therefore tends to cohere and persist as a unit; it is modifiable only with difficulty as to its underlying plan. Any one such systemic pattern is limited primarily to one aspect of culture, such as subsistence, religion, or economics; but it is not limited areally, or to one particular culture; it can be diffused cross-culturally, from one people to another. . . . What distinguishes these systemic patterns of culture—or well-patterned systems, as they might also be called—is a specific interrelation of their component parts, a nexus that holds them together strongly, and tends to preserve the basic plan... As a result of the persistence of these systemic patterns, their significance becomes most evident on a historical view. [4]

The pattern aspect of Kroeber's view fits very well the systems-thinking pattern view of Christopher Alexander in the field of architecture. Alexander's books became an inspiration for the software world, and in particular for the object-oriented programming world, in about 1993. Organizational patterns in the sense they are recognized in the software community today first made an appearance at the original Hillside Group workshop that would lead to the pattern community and its PLoP conferences. [5]

The Hillside Group sent out a call for pattern papers and, in 1994, held the first pattern conference at Allerton Park in central Illinois in the United States. The second conference, also at Allerton, would follow a year later. These first two PLoP conferences witnessed a handful of organizational patterns:

A flurry of associated publications and follow-up articles followed quickly thereafter, including an extemporization of the organizational patterns approach in the Bell Labs Technical Journal, [11] an invited piece in ASE, [12] a CACM article by Alistair Cockburn [13] and, shortly thereafter, a pattern-laden book by Alistair, [14] as well as chapters by Benualdi [15] and Janoff [16] in the Patterns Handbook. It was also about this time that Michael A. Beedle et al. published patterns that described explicit extensions to existing organizational patterns, for application in projects using a then five-year-old software development framework called Scrum. [17] A few more articles, such as the one by Brash et al. [18] also started to appear.

Little more happened on the organizational patterns front until the publication of the book by Berczuk et al. on configuration management patterns; [19] this was a break-off effort from the effort originally centered at Bell Labs.

In the meantime, Jim Coplien and Neil Harrison had been collecting organizational patterns and combining them into a collection of four pattern languages. Most of these patterns were based on the original research from Bell Laboratories, which studied over 120 organizations over the period of a decade. These empirical studies were based on subject role-play in software development organizations, reminiscent of the sociodramas of Moreno's original social network approach. [20] However, the pattern language also had substantial input from other sources and in particular the works by Cockburn, Berczuk, and Cunningham. This collection was published as Organizational Patterns of Agile Software Development in 2004. [21]

One of the most recent organizational pattern articles comes from an early pattern contributor and advocate, the object design pioneer Grady Booch. [22]

Principles of discovery and use

Like other patterns, organizational patterns aren't created or invented: they are discovered (or "mined") from empirical observation. The early work on organizational patterns at Bell Laboratories focused on extracting patterns from social network analysis. That research used empirical role-playing techniques to gather information about the structure of relationships in the subject organization. These structures were analyzed for recurring patterns across organization and their contribution to achieving organizational goals. The recurring successful structures were written up in pattern form to describe their tradeoffs and detailed design decisions (forces), the context in which they apply, along with a generic description of the solution.

Patterns provide an incremental path to organizational improvement. The pattern style of building something (in this case, an organization) is:

  1. Find the weakest part of your organization
  2. Find a pattern that is likely to strengthen it
  3. Apply the pattern
  4. Measure the improvement or degradation
  5. If the pattern improved things, go to step 1 and find the next improvement; otherwise, undo the pattern and try an alternative.

As with Alexander-style patterns of software architecture, organizational patterns can be organized into pattern languages: collections of patterns that build on each other.

A pattern language can suggest the patterns to be applied for a known set of working patterns that are present.

Organizational patterns, agile, and other work

The history of Agile software development and of organizational patterns have been entwined since the beginning. Kent Beck was the shepherd (interactive pattern reviewer) of the Coplien paper for the 1995 PLoP, and he mentions the influence of this work on extreme programming in a 2003 publication. [23] The idea of daily Scrum meetings in fact came from a draft of an article for Dr. Dobb's Journal [24] that described the organizational patterns research on the Borland QPW project. [25] Beedle's early work with Sutherland brought the pattern perspective more solidly into the history of Scrum. More recently, the Scrum community has taken up newfound interest in organizational patterns [26] and there is joint research going forward between the two communities. In this vein, the first ScrumPLoP conference took place in Sweden in May, 2010, sanctioned by both the Scrum Alliance and the Hillside Group.

Related Research Articles

<span class="mw-page-title-main">Martin Fowler (software engineer)</span> American software developer, author and international public speaker on software development

Martin Fowler is a British software developer, author and international public speaker on software development, specialising in object-oriented analysis and design, UML, patterns, and agile software development methodologies, including extreme programming.

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

In software and systems engineering, the phrase use case is a polyseme with two senses:

  1. A usage scenario for a piece of software; often used in the plural to suggest situations where a piece of software may be useful.
  2. A potential scenario in which a system receives an external request and responds to it.

In software development, agile practices include requirements discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/end user(s), adaptive planning, evolutionary development, early delivery, continual improvement, and flexible responses to changes in requirements, capacity, and understanding of the problems to be solved. Popularized in the 2001 Manifesto for Agile Software Development, these values and principles were derived from and underpin a broad range of software development frameworks, including Scrum and Kanban.

James O. Coplien, also known as Cope, is a writer, lecturer, and researcher in the field of computer science. He held the 2003–4 Vloeberghs Leerstoel at Vrije Universiteit Brussel and has been a visiting professor at University of Manchester.

In agile principles, timeboxing allocates a maximum unit of time to an activity, called a timebox, within which planned activity takes place. It is used by agile principles-based project management approaches and for personal time management.

In computing, a scenario is a narrative of foreseeable interactions of user roles and the technical system, which usually includes computer hardware and software.

<span class="mw-page-title-main">Ken Schwaber</span> American computer scientist

Ken Schwaber is a software developer, product manager and industry consultant. He worked with Jeff Sutherland to formulate the initial versions of the Scrum framework and to present Scrum as a formal process at OOPSLA'95. Schwaber and Sutherland are two of the 17 initial signatories of the Agile Manifesto. They are co-authors of the Scrum Guide. Schwaber runs Scrum.org, which provides Scrum resources, training, assessments, and certifications for Scrum Masters, Scrum Developers, Scrum Product Owners, and organizations using Scrum.

In software development and product management, a user story is an informal, natural language description of features of a software system. They are written from the perspective of an end user or user of a system, and may be recorded on index cards, Post-it notes, or digitally in project management software. Depending on the project, user stories may be written by different stakeholders like client, user, manager, or development team.

<span class="mw-page-title-main">Scrum (software development)</span> Software development framework

Scrum is a framework for project management commonly used in software development, although it has been used in other fields including research, sales, marketing and advanced technologies. It is designed for teams of ten or fewer members who break their work into goals that can be completed within time-boxed iterations, called sprints. Each sprint is no longer than one month and most commonly lasts two weeks. The scrum team assesses progress in time-boxed daily meetings of 15 minutes or fewer, called daily scrums. At the end of the sprint, the team holds two further meetings: one sprint review intended to demonstrate the work done for stakeholders and solicit feedback, and one sprint retrospective intended to enable the team to reflect and improve.

<span class="mw-page-title-main">Alistair Cockburn</span> American computer programmer

Alistair Cockburn is an American computer scientist, known as one of the initiators of the agile movement in software development. He cosigned the Manifesto for Agile Software Development.

The Cockburn Scale, also known as the Project Classification Scale, is a method of describing how much formal process a software project requires. The scale was described in Alistair Cockburn's book Agile Software Development. According to the author, the scale can be applied to other types of project, not only those that employ Agile methodologies.

The bus factor is a measurement of the risk resulting from information and capabilities not being shared among team members, derived from the phrase "in case they get hit by a bus". It is also known as the bus problem, truck factor, or bus/truck number.

<span class="mw-page-title-main">The Hillside Group</span>

The Hillside Group is an educational nonprofit organization founded in August 1993 to help software developers analyze and document common development and design problems as software design patterns. The Hillside Group supports the patterns community through sponsorship of the Pattern Languages of Programs conferences.

Linda Rising is an American author, lecturer, independent consultant. Rising is credited as having played a major role in having "moved the pattern approach from design into corporate change." She also contributed to the book 97 Things Every Software Architect Should Know, edited by Kevlin Henney and published by O´Reilly in 2009 (ISBN 059652269X).

Specification by example (SBE) is a collaborative approach to defining requirements and business-oriented functional tests for software products based on capturing and illustrating requirements using realistic examples instead of abstract statements. It is applied in the context of agile software development methods, in particular behavior-driven development. This approach is particularly successful for managing requirements and functional tests on large-scale projects of significant domain and organisational complexity.

<span class="mw-page-title-main">Extreme programming</span> Software development methodology

Extreme programming (XP) is a software development methodology intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent releases in short development cycles, intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.

<span class="mw-page-title-main">Robert C. Martin</span> American software consultant

Robert Cecil Martin, colloquially called "Uncle Bob", is an American software engineer, instructor, and author. He is most recognized for promoting many software design principles and for being an author and signatory of the influential Agile Manifesto.

The scaled agile framework (SAFe) is a set of organization and workflow patterns intended to guide enterprises in scaling lean and agile practices. Along with large-scale Scrum (LeSS) and disciplined agile delivery (DAD), SAFe is one of a growing number of frameworks that seek to address the problems encountered when scaling beyond a single team.

<span class="mw-page-title-main">Mike Beedle</span> American software engineer

Mike (Miguel) Beedle was an American theoretical physicist turned software engineer who was a co-author of the Agile Manifesto.

References

  1. Alexander, Christopher. A Pattern Language. Oxford University Press, ©1979.
  2. Kroeber, Alfred L. Anthropology: Culture, Patterns, and Process. New York: Harcourt, Brace and World, 1948.
  3. Kroeber, Alfred L. Anthropology: Culture, Patterns, and Process. New York: Harcourt, Brace and World, 1948, p. 119
  4. Kroeber, Alfred L. Anthropology: Culture, Patterns, and Process. New York: Harcourt, Brace and World, 1948, pp. 120 - 121.
  5. Coplien, James. The Culture of Patterns. In Branislav Lazarevic, ed., Computer Science and Information Systems Journal 1, 2, Belgrade, Serbia and Montenegro, November 15, 2004, pp. 1-26.
  6. Whitenack, Bruce. RAPPeL: a requirements-analysis-process pattern language for object-oriented development. In James Coplien and Doug Schmidt, eds., Pattern Languages of Program Design. Addison-Wesley, 1995, pp. 259 - 291.
  7. Kerth, Norm. Caterpillar's Fate: a pattern language for the transformation from analysis to design. In James Coplien and Doug Schmidt, eds., Pattern Languages of Program Design. Addison-Wesley, 1995, pp. 293 - 320.
  8. Coplien, James. Organizational Patterns. In James Coplien and Doug Schmidt, eds., Pattern Languages of Program Design. Addison-Wesley, 1995, pp. 183 - 237.
  9. Cunningham, Ward. Episodes: a pattern language of competitive development. In Vlissides et al., eds., Pattern Languages of Program Design - 2. Addison-Wesley, 1996, pp. 371 - 388.
  10. Harrison, Neil. Organizational Patterns for Teams. In Vlissides et al., eds., Pattern Languages of Program Design - 2. Addison-Wesley, 1996, pp. 345 - 352.
  11. Harrison, Neil B. and James O. Coplien. Patterns of productive software organizations. Bell Labs Technical Journal, 1(1):138-145, Summer (September) 1996.
  12. Cain, Brendan G., James O. Coplien, and Neil B. Harrison. Social Patterns in Productive Software Organizations. In John T. McGregor, editor, Annals of Software Engineering, 259-286. Baltzer Science Publishers, Amsterdam, December 1996.
  13. Cockburn, Alistair. The interaction of social issues and software architecture. CACM 39(10), October 1996.
  14. Cockburn, Alistair. Surviving Object-Oriented Projects. Addison-Wesley, 1997.
  15. Genualdi, Patricia. Improving software development with process and organizational patterns. In Linda Rising, ed. The Patterns Handbook. Cambridge University Press, 1998, pp. 121 - 129.
  16. Janoff, Norm. Organizational patterns at AG communication systems. In Linda Rising, ed. The Patterns Handbook. Cambridge University Press, 1998, pp. 131 - 138.
  17. Michael A. Beedle, Martine Devos, Yonat Sharon, Ken Schwaber, and Jeff Sutherland. SCRUM: An extension pattern language for hyperproductive software development. Washington University Technical Report TR #WUCS-98-25, 1998.
  18. Brash, Danny, et al. Evaluating organizational patterns for supporting business knowledge management. Proceedings of the 2000 information resources management association international conference on Challenges of information technology management in the 21st century. IGI Publishing, May 2000.
  19. Berczuk, Steve, Brad Appleton and Kyle Brown. Software Configuration Management Patterns: Effective Teamwork, Practical Integration. Addison-Wesley, 2003.
  20. Moreno, J. L. Who shall survive?: foundations of sociometry, group psychotherapy and sociodrama. Washington, D.C.: Nervous and Mental Disease Publishing Co., 1934.
  21. Coplien, James and Neil Harrison. Patterns of Agile Software Development. Addison-Wesley, ©2004.
  22. Booch, Grady. Architectural Organizational Patterns. IEEE Software 25(3), May 2008, pp. 18 - 19.
  23. Fraser, Steven, Kent Beck, Bill Caputo, Tim Mackinnon, James Newkirk and Charlie Pool. "Test Driven Development (TDD)." In M. Marchesi and G. Succi, eds., XP 2003, LNCS 2675, pp. 459 — 462, 2003. © Springer-Verlag, Berlin and Heidelberg, 2003.
  24. Coplien, James O., and Jon Erickson. Examining the Software Development Process. Dr. Dobb's Journal of Software Tools, 19(11):88-95, October 1994.
  25. Sutherland, Jeff. Origins of Scrum. Web page , accessed 22 September 2008. July 5, 2007.
  26. Sutherland, Jeff. Scrum and Organizational Patterns. Web page , accessed 14 June 2013. May 20, 2013.