An interesting realization I came to.
Maybe this is a very obvious, Scrum 101 understanding for someone... But I think this may actually be helpful for some, so here it is.
In a large-scale product, with different teams working on different tiers, there should be 2, or even 3 types of Product Owners (POs).
"Wow!" - an experienced Agilist would exclaim. "Hold your horses! Are you talking about giving up on the idea of cross-functional, feature-oriented teams (as opposed to architectural layer-based teams)?!"
No, of course not. But let's dive into a real-life example to make the things clearer.
Imagine a complex product, with a serious back-end platform, and a thick client application.
To make the things even more interesting, assume the client and the back-end using different dev platforms and operating systems (MS Windows, Android, iOS).
It may simply be just not feasible to have a single team working on such a plethora of technologies. A team of such kind will, most probably, end up being mediocre in everything it does - instead of excelling in a narrower set of tools and technologies.
I don't think it would be reasonable to expect each and every universalist developer in a team to master mobile, embedded and back-end applications equally well.
And this means that there ought to be several "tiers" (I deliberately don't call them "layers") into which development efforts will be grouped.
Maybe this is a very obvious, Scrum 101 understanding for someone... But I think this may actually be helpful for some, so here it is.
In a large-scale product, with different teams working on different tiers, there should be 2, or even 3 types of Product Owners (POs).
"Wow!" - an experienced Agilist would exclaim. "Hold your horses! Are you talking about giving up on the idea of cross-functional, feature-oriented teams (as opposed to architectural layer-based teams)?!"
No, of course not. But let's dive into a real-life example to make the things clearer.
Imagine a complex product, with a serious back-end platform, and a thick client application.
To make the things even more interesting, assume the client and the back-end using different dev platforms and operating systems (MS Windows, Android, iOS).
It may simply be just not feasible to have a single team working on such a plethora of technologies. A team of such kind will, most probably, end up being mediocre in everything it does - instead of excelling in a narrower set of tools and technologies.
I don't think it would be reasonable to expect each and every universalist developer in a team to master mobile, embedded and back-end applications equally well.
And this means that there ought to be several "tiers" (I deliberately don't call them "layers") into which development efforts will be grouped.