In a previous post we talked a lot about the "Product-centric" approach to DevOps but what does this mean for the role of the Agile "Product Owner"?
So what is the traditional role of the Product Owner? Agile author Mike Cohn from MountainGoat Software defines it thus:
"The Scrum product owner is typically a project's key stakeholder. Part of the product owner responsibilities is to have a vision of what he or she wishes to build, and convey that vision to the scrum team. This is key to successfully starting any agile software development project. The agile product owner does this in part through the product backlog, which is a prioritized features list for the product.
The product owner is commonly a lead user of the system or someone from marketing, product management or anyone with a solid understanding of users, the market place, the competition and of future trends for the domain or type of system being developed" – Mike Cohn
The definition above is very "project-centric" – the Product Owner's role appears to be tied to the existence and duration of the project and their focus is on the delivery of "features".
DevOps, conversely, asks us (in the "First Way of DevOps") to use "Systems Thinking" and focus on the bigger picture (not just "feature-itis") and the "Product-centric" approach says we need to focus on the entire lifecycle of the product, not just the delivery of a project/feature/phase.
Whilst decomposing the "big picture" into "features" is something we completely agree with, as features should be the "unit of work" for your Scrum teams or "Agile Software Development Factory", it needs to be within the context of the Product Lifecycle (and the "feature roadmap").
So the key shift here then is to start talking about the "Product Lifecycle Owner", not just the Product Owner, and ensure that Systems Thinking is a critical skill for that role.
The second big shift with DevOps is that "Non-Functional Requirements" proposed by Operations as being critical to the manageability and stability of the product across its full lifecycle "from inception to retirement" must be seen as equally important as the functional requirements proposed by the traditional Product Owner role.
In fact, we'd like to ban the term "Non-Functional Requirements" (NFR's) completely, as the name itself seems to carry an inherent "negativity" that we feel contributes to the lack of importance placed on NFR's in many organisations.
We propose the term "Operational Requirements" (OR's) as we feel that this conveys the correct "product lifecycle-centric" message about why these requirements are in the specification – "This is what we need to run and operate this product in Production across the product's lifecycle in order to maximise the product's likelihood of meeting the business objects set for it".
We propose the term "Operational Requirements" (OR's) as we feel that this conveys the correct "product lifecycle-centric" message about why these requirements are in the specification.
For the slightly more pessimistic or combative amongst you the "OR" in Operational Requirements can stand for "OR this doesn't get deployed into Production…" .
The unresolved question is do we need an "Operational Product Owner" or does the role of the traditional, business-focussed Product Owner extend to encompass the operational requirements?
You could argue that the "Operational Product Owner" already partly exists as the "Service Delivery Manager" (SDM) within the ITIL framework but SDM's rarely get involved in the software development lifecycle as they are focussed on the "delivery" part at the end of the SDLC. Their role could be extended to include driving Operational Requirements into the SDLC as part of the continual service improvement (CSI) process however.
That said, having two Product Owners might be problematic and confusing from the Agile development team perspective so it would probably be preferable if the traditional Business product owner was also responsible for the operational requirements as well as the functional requirements. This may require the Product Owner to have a significantly deeper understanding of technology and operations than previously otherwise trying to understand why "loosely-coupled session state management" is important to "horizontal scalability" might result in some blank faces!
So in summary a "DevOps Product Owner" needs to:
- Embrace "System Thinking" and focus on the "Product Lifecycle" not just projects or features
- Understand the "Operational Requirements" (and just say "No to NFR's"!)
- Ensure that the "OR's" are seen as important as the "Functional Requirements" in the Product roadmap and champion their implementation
In future posts we'll examine the impact of DevOps on other key roles in the SDLC & Operations. We've love to get your opinions in the comments section below!
-TheOpsMgr
image source: – CC - CannedTuna via Flickr - http://www.flickr.com/photos/cannedtuna/7348317140/sizes/m/
No comments:
Post a Comment