Sunday, 13 April 2008

Challenges for the Product Stream concept

The Product Stream concept is a simple one. A product stream contains a self-organising team and a Product Owner , yet it engages with the Business more deeply than just having business representation in the Product Owner. Engagement is the wrong word, I suppose, because it's more than that. Software development is absorbed back into the Business. It's no longer just aligned, it's integrated; it's part of the Business .

Product streams may be simple, but already we know it's challenging to establish them within large or enterprise organisations because we're doing it now. It's definitely not impossible though because, from the very start, we've been seeing real successes. But inevitably there's always resistance to change. So far we're seeing more from the IT part of the organisation than from the business part.

The Business has stepped up. The business people within each product stream are doing everything required of them, and more, to collaborate constructively and responsibly and keep up with a weekly delivery cycle. At the end of one of the earlier showcase s, our Product Sponsor asked: "Am I doing this right? Is there anything more I should be doing as sponsor?" We're seeing collective ownership of product as business skills are mixing with technical skills to deliver value to the customers.

Generally speaking with respect to IT, the challenges for the Product Stream concept are largely based on IT's fixation on reducing perceived inefficiencies. With the business parts of companies being more vocal about the failings of their IT departments, IT is trying harder to provide better services. The problem is, in a world focused on cost, IT is often concerned more with efficiency than effectiveness. And efficiency without effectiveness just means a poor service will be delivered more quickly. Spot the vicious circle. IT has developed a predilection to centralise things that are common in order to achieve organisational scalability and software re-use, and to reduce expenditure. These are understandable goals but there are consequences if they are pursued without regard for effectiveness. Excessive centralisation has led to over-organisation and fragmentation, and the introduction of unnecessary dependencies, artificial barriers and waste (pdf) , all of which hinder product delivery.

Ideally a product stream would be made up entirely of generalising specialists - people who are jacks-of-all-trades and masters of some - and would therefore contain all the skills it needed all of the time. However, there just might be some rare skill that is needed once in a blue moon, which cannot be found in a generalising specialist. In this case the product stream would have to look externally for a specialist in that field and hire him, on an on-demand basis, for the short period required. On the other hand a generalising specialist with that rare skill might be found, but if he's the only one and there are many product streams requiring that skill, what do you do? In both circumstances, it can make sense to centralise the skill, in which case the product stream has a responsibility to learn from the specialist to reduce the dependency. Ultimately, the product stream should rely on the specialist for advice rather than action.

Re-using software is another sensible goal. A product stream can make its software re-usable so that other product streams can use it. But beware. Re-usability doesn't come for free. It requires additional effort that might otherwise be spent delivering product and it creates dependencies between product streams, which may slow things down. IT often moves what it considers to be core software into centralised teams, but this strategy often leads to a focus on infrastructure software rather than product. There's an inherent danger that effort will shift from delivering product to customers - something the Business definitely cares about, to delivering generalised, re-usable software within IT - something the Business doesn't typically care about. The potential long-term impact of re-usability should be assessed beforehand because its affects can end up costing much more. What might be gained by developing once can often be lost, many times over, in the dependencies created. For example, if different product streams using some infrastructure software require changes to suit their specific needs the team owning the infrastructure software can quickly become a bottleneck. And a central bottleneck will slow down the delivery of all dependent products. The Business isn't going to be happy when that situation arises. Infrastructure software isn't all it's cracked up to be so consider re-use on an investment basis rather than a means to reduce costs.

It's preferable to make software available to others as open-source. By that I mean other product streams can take the source code and effectively own their own version of it. They are free to integrate it however they choose, deploy it to their environments, and control the hosting of it to serve their product. If they want to modify the source code they can; they can even submit improvements back to the product stream owning the original source code. The open-source model creates a loose dependency and provides product streams with continued autonomy while allowing them to benefit from the work of others.

Service-oriented dependencies should be avoided wherever possible. This is where a product stream makes functionality available to others via a published API or some client-side code that must be integrated. This is a tightly coupled dependency because the product streams using the service are entirely dependent on the service provider for the functionality. The service provider probably keeps the source code private (or doesn't allow anyone outside the product stream to maintain another version), and hosts and controls the service. If a product stream requires a change to the service or bugs to be fixed it must ask the service provider to make the changes. If the service fails, the product streams rely on the service provider to take corrective action. Consequently, product streams using the service lose some of their autonomy and to a degree, control of their own product.

Posted by Simon Baker - Permalink

5 Comments

It's funny, but my first job in IT was inside the business- and the software is still running. Over the last 10 years, I have seen the bureaucracy known as "the CIO" fail as they attempt bigger, more complex and more interconnected projects- all in the name of efficiency. The whole concept of business and IT alignment makes me sick. IT shouldn't be doing anything on its own. It's a part of the business or it's doing something wrong.

Comment by Matt M

I don't fully agree with the generalization principle. Yesterday I posted a blog entry called Specialization is Good. You might find it interesting. And if not, then maybe the comments I got... :)

My point is: Organizations that create magazines, newspapers and musicals are all organized around specialists. So why can't we?

Comment by Jurgen Appelo

This set of articles is very intriguing. Can you share details of specific project examples where this is being used in practice?

Also, I'm interested in how you see the role of Enterprise Architecture in an organization with Product Streams.

Comment by Steve Campbell

Jurgen - Specialisation leads to bigger teams, bottlenecks and single points of failure. This introduces risk. Generalising specialists are jacks-of-all-trades and masters of some so, effectively, there are still specialists in a cross-functional team but they're capable of doing other stuff. The team has to be intelligent when it comes to deciding who's going to work on things to best leverage the skills in the team to get the job done with high qaulity. For example, we've got a creative designer in the team - he's a specialist because he doesn't do anything else. We've also got some developers who are pretty good at design and usability. These guys often pair up with the designer to work together. Their combination of skills - creative flair, usability and building design out into HTML - creates better designs overall than the creative designer could do working alone.

Comment by Simon Baker

Steve - We're currently using product streams with Web portals. We've used them in the past with enterprise-scale eCommerce Web sites.

The role of enterprise architecture doesn't really exist in the world of product streams. However, many of the skills you'd typically find within enterprise architecture are folded into the product streams, which collaborate to define cross-cutting concerns. Avoid silos, minimise centralisation, simplify the organisation - this is the mantra. That said a third post on the Product Stream concept will talk about our notion of a Product Hub. It’s like a JIT Office in Lean terms. It’s responsible for focusing the product streams on delivering value and quality and achieving continuous improvement. It rationalises and makes consistent the reporting into the business by concentrating on a few simple measurements, notably profit and ROI, so that better investment decisions can be made by the Business within a model of incremental funding for product streams. It also facilitates knowledge sharing across the streams.

Comment by Simon Baker

Creative Commons Licence

preload call-us-on.png preload chat-over-coffee-on.png preload coffee-cup-on.png preload guspower-avatar.png preload simonbaker-avatar.png preload email-on.png preload meet-the-crew-on.png preload about-on.png preload bits-on.png preload blog-on.png preload coaching-on.png preload consulting-on.png preload crew-on.png preload home-on.png preload software-on.png preload other-talks-on.png preload phone-on.png preload previous-talks-on.png preload boost-icon-on.png preload jumpstart-icon-on.png preload liftoff-icon-on.png preload powerup-icon-on.png preload skype-on.png preload speech-bubbles-on.png preload creative-commons-on.png preload slides-on.png preload video-on.png