Organizational Patterns: A catalyst for change in an Agile environment
| In the software engineering field, especially with regard to object oriented design and programming, there has been a drive within the past decade and a half to identify recurring patterns in OO design and code that will enable more re-usability and “abstractions”, which are very general descriptions or templates for how to solve a problem that can be used in multiple situations.
These patterns are not finished designs or software components that can be plugged into or generated into actual code, but rather they are guidelines and best practices that display how the relationships between classes or objects interconnect and interact without actually specifying how to do so in some programming language. This is left for the implementer to decide on. This was famously published in “Design Patterns: Elements of Reusable Object-Oriented Software” (1994) which outlined 23 classic design patterns and is still referred to and read to this day.
This same principle has been applied to organizational design and specifically, how Agile software development projects can be seen and understood within the notion of recurring patterns that describe the “recurring structures of relationship, usually in a professional organization, that help the organization achieve its goals” [http://en.wikipedia.org/wiki/Organizational_patterns]. Utilization of these patterns can be an important inducer and catalyst for change management in an Agile environment.
A book by James O. Coplien and Neil B. Harrison, titled “Organizational Patterns of Agile Software Development” is one of the only reference books that attempts to apply organizational patterns within the context of Agile software development projects to identify more effective and re-usable solutions that can be used by a project manager in any solution that is worth a definite read.
The book is written with an academic style and is based on rigorous research results that comes from a well-executed research projects by the authors and others. Part I, consisting of chapters 1-3, give an overview of patterns, explain how they were discovered, how the data was obtained, and how you might use the book. I recommend you read this section even if you are familiar with patterns or at least skim it.
The heart of the book is in Part II. This section presents the patterns, organized in two major categories -- organization design and organization construction. There are about one hundred or so patterns in these sections that address most of the situations that organizations of almost any size will encounter as they try to improve their software development process. Some of the patterns are ones that should be very familiar, but are now named in the book. By describing them at a high level of abstraction, we are provided more semantic context per word then if we were to explain them individually, which is the purpose of patterns in the first place.
Some patterns are common sense such as "Get On With It": You know what you need -- at least enough to get started -- so, as soon as you have enough information and some confidence, start developing areas that you have confidence in. Others such as “Developer Controls Process” recognizes the centrality of the developer in the development of a feature and urges you to make the developer the focal point of process information. Approaches like this might seem contrary to he way you manage projects, but by having a pattern outlined, it provides you a starting point to define your own patterns.
There are two more parts. Part III discusses organizational principles, with advice on how to prepare your organization for change. These are patterns in a different form, but they are an important cog in the machinery of organizational change. Part IV provides case studies that illustrate the application of the principles of Part III and the patterns of Part II.
This notion of patterns was highly influenced by the architect and theorist Christopher Alexander in his book “A Pattern Language: Towns, Buildings, Construction” (1977), which illustrate how patterns describe a problem and then offer a solution by establishing a set of problems and documented solutions. This provides a mechanism and metaphor for anyone in a community to improve their towns and cities to effect change and build a better living environment. Therefore, organizational patterns can be organized into pattern languages: collections of patterns that build on each other providing general descriptions or templates for how to solve a problem that can be used in multiple situations. Coplien and Harrison’s book provides the project manager an excellent starting point for identifying, building upon and utilizing patterns to act as a catalyst for change in an Agile environment.
This notion of patterns was highly influenced by the architect and theorist Christopher Alexander in his book “A Pattern Language: Towns, Buildings, Construction” (1977), which illustrate how patterns describe a problem and then offer a solution by establishing a set of problems and documented solutions. This provides a mechanism and metaphor for anyone in a community to improve their towns and cities to effect change and build a better living environment. Therefore, organizational patterns can be organized into pattern languages: collections of patterns that build on each other providing general descriptions or templates for how to solve a problem that can be used in multiple situations. Coplien and Harrison’s book provides the project manager an excellent starting point for identifying, building upon and utilizing patterns to act as a catalyst for change in an Agile environment.In the software engineering field, especially with regard to object oriented design and programming, there has been a drive within the past decade and a half to identify recurring patterns in OO design and code that will enable more re-usability and “abstractions”, which are very general descriptions or templates for how to solve a problem that can be used in multiple situations.
These patterns are not finished designs or software components that can be plugged into or generated into actual code, but rather they are guidelines and best practices that display how the relationships between classes or objects interconnect and interact without actually specifying how to do so in some programming language. This is left for the implementer to decide on. This was famously published in “Design Patterns: Elements of Reusable Object-Oriented Software” (1994) which outlined 23 classic design patterns and is still referred to and read to this day.
This same principle has been applied to organizational design and specifically, how Agile software development projects can be seen and understood within the notion of recurring patterns that describe the “recurring structures of relationship, usually in a professional organization, that help the organization achieve its goals” [http://en.wikipedia.org/wiki/Organizational_patterns]. Utilization of these patterns can be an important inducer and catalyst for change management in an Agile environment.
A book by James O. Coplien and Neil B. Harrison, titled “Organizational Patterns of Agile Software Development” is one of the only reference books that attempts to apply organizational patterns within the context of Agile software development projects to identify more effective and re-usable solutions that can be used by a project manager in any solution that is worth a definite read.
The book is written with an academic style and is based on rigorous research results that comes from a well-executed research projects by the authors and others. Part I, consisting of chapters 1-3, give an overview of patterns, explain how they were discovered, how the data was obtained, and how you might use the book. I recommend you read this section even if you are familiar with patterns or at least skim it.
The heart of the book is in Part II. This section presents the patterns, organized in two major categories -- organization design and organization construction. There are about one hundred or so patterns in these sections that address most of the situations that organizations of almost any size will encounter as they try to improve their software development process. Some of the patterns are ones that should be very familiar, but are now named in the book. By describing them at a high level of abstraction, we are provided more semantic context per word then if we were to explain them individually, which is the purpose of patterns in the first place.
Some patterns are common sense such as "Get On With It": You know what you need -- at least enough to get started -- so, as soon as you have enough information and some confidence, start developing areas that you have confidence in. Others such as “Developer Controls Process” recognizes the centrality of the developer in the development of a feature and urges you to make the developer the focal point of process information. Approaches like this might seem contrary to he way you manage projects, but by having a pattern outlined, it provides you a starting point to define your own patterns.
There are two more parts. Part III discusses organizational principles, with advice on how to prepare your organization for change. These are patterns in a different form, but they are an important cog in the machinery of organizational change. Part IV provides case studies that illustrate the application of the principles of Part III and the patterns of Part II.
This notion of patterns was highly influenced by the architect and theorist Christopher Alexander in his book “A Pattern Language: Towns, Buildings, Construction” (1977), which illustrate how patterns describe a problem and then offer a solution by establishing a set of problems and documented solutions. This provides a mechanism and metaphor for anyone in a community to improve their towns and cities to effect change and build a better living environment. Therefore, organizational patterns can be organized into pattern languages: collections of patterns that build on each other providing general descriptions or templates for how to solve a problem that can be used in multiple situations. Coplien and Harrison’s book provides the project manager an excellent starting point for identifying, building upon and utilizing patterns to act as a catalyst for change in an Agile environment.
|
When Even Agile Is Considered Overhead
| This article by Mike Cohn on the Scrum Alliance site, discusses the perception that some people have that Scrum can be a "burden". This is an often heard complaint I've experienced throughout my PM career whether it pertained to Agile or traditional methods. Implicit in this argument is the notion of project management in whatever form, method or process as being "overhead" for getting things done. Now that the profession has matured quite a bit and is established in many industries and organizations, you will hear less of this than in the past, but the perception still holds for some people. Even in one of the most lightweight PM methods around, namely Scrum, the perception will hold as Cohn states, "these comments have surprised me—Scrum requires only a single fifteen-minute meeting each day plus a half- to full-day at the start and finish of a sprint. That doesn't seem like much overhead." While I can agree with this, I can still see why the perception holds and it typically has to do with several core factors. First, it has to do with the maturity level, or lack thereof in a particular organization. Scrum and Agile has their roots in software companies, and especially for software start-up companies where the core application or system was developed on the fly by founders loaded up on sugar and caffeine laden sodas and pizzas and all night coding sessions are the norm, even adding a routine of daily meetings and short planned Sprints can seem like overhead. But at some point, they will need to hire developers and ship a useable product and this is where some planning and process needs to be in place. Even for more mature or established organizations, there could be a lack of established planning, development and deployment practices where introducing project managment practices can be perceived as overhead. Directly related to the above is upper managements lack of support for project managment. And I'm not talking about where an organization experiences chronic delays and overbudget projects and decides to make project management a directive for the organization or department. As Cohn states, " there's a natural tendency to bristle at any direction given from above. Calling the few generative rules of Scrum 'too much overhead' may be a team's way of expressing displeasure at having any decision pushed down onto them from above." What I'm talking about is where upper management needs to view project management as a strategic objective of the organization and takes the time to carefully plan, advocate and carry through with implementing project management practices that match their orgainizational's needs and strategic objectives. Finally, if the project manager or ScrumMaster is not adequately doing his or her job of tracking and managing project details, removing impediments, communication, etc., then their role and the project management role in their organization in general, will be seen as overhead. But if the project manager or ScrumMaster does an outstanding job, there is no better way in my opinion to sell project management to an organization than when a project manager or ScrumMaster proves this in the flesh. Though you cannot always control factors such as the maturity of your company or upper management's decisions, you can control how you manage your projects and the manner in which you do so can have dramatic impacts to whether it is perceived as overhead or strategic necessity. |
Using Scrum in a Flat Global World
| With this month’s Gantthead emphasis on global project management, it’s fitting to discuss using Scrum in an increasingly flat, global work environment. With the trend staring in manufacturing in the 80’s and 90’s, coupled with the rapid advances in communication technologies, the imperative to to deliver application development in shorter timeframes, with better quality, lower cost and with globally dispersed teams is now the “new” normal.
But how do we fit this Agile method which expects co-located, cross functional teams that iterate through sprints in a self-organizing fashion, with a capable ScrumMaster removing impediments and prioritizing backlog items from a Product Owner nearby, to one where teams, customers and Product Owners are located in another part of the globe, in multiple time zones and don’t all speak the same language fluently?
Not very easily and not without some significant tweaks to Scrum.
First of all, though Scrum and Agile purist will scoff at overly formal and complex processes, you will have no choice but to establish and agree upon some structure and process to how you will arrange daily stand-up meetings (or calls and emails), prioritize backlog items, run and review Sprints and the working deliverables each Sprint must create, as well as an escalation procedure to remove impediments. This escalation procedure is important since the time zone difference between a team and a ScrumMaster could be significant. For example, a team located in Asian could experience a significant impediment that will not be known to a ScrumMaster in the US till the next day. The ScrumMaster removes the impediment, but will not find out if it was effective till the next day, and worse, if the impediment was not successfully removed, it will add another couple days of cycling through till it gets resolved. This is not very agile!
A ScrumMaster will have no choice but to pre-define a clear communication, escalation and implementation plan that allows flexibility, yet enough structure and guidance to ensure deliverables get done on time. It will also be very important to truly have a self-organizing team. If you can’t be in the same presence and time zone of your team, you will really have to rely on them to be self-organizing, efficient and effective. This means you have to carefully select a good team or work with one that you can trust.
You will also need a clear articulation of what it means to be “done”. Use good software tools that will allow you to implement continuous integration of builds, source control and test driven development to ensure that the software being developed and delivered in each Sprint has been through the necessary QA before being released to the customer so that done is “done”!
This is hard and expect to lose sleep, but if you can balance both having a clear and well thought through coordination procedure and process, while still allowing the flexibility and agility that Scrum is known for, you may just get the successful results typical of Scrum when done right, but on a global scale.
This is hard and expect to lose sleep, but if you can balance both having a clear and well thought through coordination procedure and process, while still allowing the flexibility and agility that Scrum is known for, you may just get the successful results typical of Scrum when done right, but on a global scale.With this month’s Gantthead emphasis on global project management, it’s fitting to discuss using Scrum in an increasingly flat, global work environment. With the trend staring in manufacturing in the 80’s and 90’s, coupled with the rapid advances in communication technologies, the imperative to to deliver application development in shorter timeframes, with better quality, lower cost and with globally dispersed teams is now the “new” normal.
But how do we fit this Agile method which expects co-located, cross functional teams that iterate through sprints in a self-organizing fashion, with a capable ScrumMaster removing impediments and prioritizing backlog items from a Product Owner nearby, to one where teams, customers and Product Owners are located in another part of the globe, in multiple time zones and don’t all speak the same language fluently?
Not very easily and not without some significant tweaks to Scrum.
First of all, though Scrum and Agile purist will scoff at overly formal and complex processes, you will have no choice but to establish and agree upon some structure and process to how you will arrange daily stand-up meetings (or calls and emails), prioritize backlog items, run and review Sprints and the working deliverables each Sprint must create, as well as an escalation procedure to remove impediments. This escalation procedure is important since the time zone difference between a team and a ScrumMaster could be significant. For example, a team located in Asian could experience a significant impediment that will not be known to a ScrumMaster in the US till the next day. The ScrumMaster removes the impediment, but will not find out if it was effective till the next day, and worse, if the impediment was not successfully removed, it will add another couple days of cycling through till it gets resolved. This is not very agile!
A ScrumMaster will have no choice but to pre-define a clear communication, escalation and implementation plan that both allows flexibility, yet enough structure and guidance to ensure deliverables get done on time. It will also be very important to truly have a self-organizing team. If you can’t be in the same presence and time zone of your team, you will really have to rely on them to be self-organizing, efficient and effective. This means you have to carefully select a good team or work with one that you can trust.
You will also need a clear articulation of what it means to be “done”. Use good software tools that will allow you to implement continuous integration of builds, source control and test driven development to ensure that the software being developed and delivered in each Sprint has been through the necessary QA before being released to the customer so that done is “done”!
This is hard and expect to lose sleep, but if you can balance both having a clear and well thought through coordination procedure and process, while still allowing the flexibility and agility that Scrum is known for, you may just get the successful results typical of Scrum when done right, but on a global scale.
|
Modifying and Extending the ScrumBOK
| Back in July, I wrote about the creation of the official Scrum guide or ScrumBOK that is to represent "the official Scrum Body Of Knowledge, (that) was written by Ken Schwaber and Jeff Sutherland, co-creators of Scrum" A new announcement has just come out where the implementors of Scrum are encouraged to read, modify and extend the ScrumBOK. As they accounce: ""Scrum was first developed 15+ years ago, and it has been evolving and adapting ever since. Informed by their experiences and those of the Scrum community, Jeff and Ken have carefully codified the framework in the Scrum Guide, which documents the basic rules, artifacts, and events of Scrum.
Today's announcement marks a new era in Scrum's evolution by making available a public mechanism for providing feedback on the Scrum Guide and a model for proposing extensions to the basic framework."
This again is similar to PMI's encouragement to extend the PMBOK as I mentioned in a discussion forum post back around the same time. Through the Agile community typically shuns formal frameworks and processes, the popularity of Agile and Scrum seems to have compelled a need to establish a formal body of knowledge and process for those who wish to contribute to future modifications as well as extending the ScrumBOK to suit their industry and domain of specialty. The latter is promising for those who wish to extend Scrum beyond the software industry to which it is mostly applied.
Scrum was first developed 15+ years ago, and it has been evolving and adapting ever since. Informed by their experiences and those of the Scrum community, Jeff and Ken have carefully codified the framework in the Scrum Guide, which documents the basic rules, artifacts, and events of Scrum.
Today's announcement marks a new era in Scrum's evolution by making available a public mechanism for providing feedback on the Scrum Guide and a model for proposing extensions to the basic framework.
|
Agile Analogies Gone Wild
| One of the more interesting aspects of Scrum is the colorful and offbeat use of terms, analogies and metaphors. Well known blogger Jeff Atwood, of the site “Coding Horrow”, thinks just the use of the word “Scrum” is too weird:
There’s also been the rise and creation of other vernacular oddities and particularities within the Scrum movement such as “FlaccidScrum”, “ScumBut..”, etc. to name a few. But one that I find particularly interesting is the metaphor of the “chicken and the pig” to describe stakeholder roles in Scrum. ![]()
This is supposedly based on a joke mentioned in the book “Agile Software Development with Scrum” published by Schwaber and Beedle in 2001 that started the movement.
The pigs are the people who “sacrifice” themselves and put it all on the line for the project to succeed, whereas the chickens are the necessary overhead that only needs to be involved with the project on a need-to-know basis that do not have to be directly involved with a Scrum. They do not need to be involved in the daily meetings since they are not accountable or committed to the project and will get their say when they view a working demo at the end of a Sprint to influence the next one. Some people, such as blogger Jeff Atwood mentioned above, think using such derogatory and sarcastic terms will make it harder for organizations to adopt Scrum, though the evidence seems to state the contrary with ever growing adoption of Scrum/Agile.
From my understanding, the concept of the pig and chicken is just Scrum’s metaphor for what is otherwise known in project management field as the “direct” and “indirect” stakeholders of the project cycle.
This short and memorable story allows the point to hit home without the use of management jargon. The whole chicken and pig division idea is about giving greater decision making power and responsibility during a project stage to the people who are directly involved and committed to the final delivery (pigs), while limiting interference coming from sometimes powerful external players (chickens). Sprints are aimed at delivering a fully functional working demo from spec to ready-to-use product, instead of some sort of interim deliverable. Since the team provides a lot of input into deciding what goes into Sprint, this implies a collectively agreed upon commitment to delivering the change. That creates a contract between the team and outside world. Changing the roles during the Sprint can endanger this contract and is why chickens are forbidden to be involved directly in a Sprint. If a pig becomes a chicken he or she is no longer responsible for seeing the Sprint to completion putting the burden of dealing with any shortcomings in their work onto the shoulders of remaining team members. If a chicken becomes a pig during a Sprint they cannot realistically commit themselves to something that has been agreed before they came on board. Hence it’s best when the roles stay unchanged for the duration of a Sprint. Seen in this light, this is an relevant metaphor for the important segmentation of roles for direct and indirect stakeholders of a Scrum Sprint. |






