Think of a product stream as a small company working on their own product to maximize profit and growth by delivering features that excite users. It's set up to compete on the basis of speed and has everything it needs to conduct business, from concept to production to operational support, and unlike a project it persists as long as the product is in service. It includes a dedicated and diverse technical team that is actually part of the business and helps them use software more effectively. It self-organizes for optimum delivery with minimum risk, and responds to deliver more and better features as the business learns from user and market feedback.
Everyone in a stream is located together in the same place and works full-time to develop a common understanding of what users value, and to achieve a shared vision for the product against which success is measured. People in the stream collectively own the product and share responsibility for achieving results. Cash flow is key and everyone thinks in terms of delivering value to users as quickly as possible and cost effectively. Only people in the stream work on the product, collaborating intensively and communicating honestly, they keep the right information visible so that informed decisions can be made at the right time.
A stream has 4 key roles that together provide entrepreneurial leadership and unified direction:
The business sponsor is the product champion, the visionary. He owns the budget and is ultimately responsible to the company for the overall product stream and is accountable for its results. With empathy for users, a deep knowledge of the market and an understanding of the stream's capabilities, he defines the strategy and makes business decisions quickly.
The product owner is the sponsor's right-hand man and focuses delivery on small goals to realize strategic objectives.
The technical mentor is a master craftsman with business acumen, extensive knowledge and vast experience in delivering high-quality software products to market.
The facilitator helps the technical team to function effectively by providing everything it needs, fostering cooperation, steering toward consensus decisions, removing obstacles that impede delivery and creating an environment in which people are free to innovate. With financial skills, he also manages the budget.
The technical team is skills based. It comprises all the technical skills it needs to develop software for production and operational use, which usually includes some specialists, e.g. system administrators. Everyone works to become generalizing specialists to build resilience into the team. A stream is always learning and continuously improves through reflection and experimentation. Creative energy flows, existing knowledge is shared and new knowledge is created as everyone works with shared responsibility to improve quality, remove causes of failure and find better ways of working.
Over time the composition of a stream varies to suit the needs of the product. However, it retains the skills and expertise it needs to be successful and the business sponsor, product owner, technical mentor and facilitator are always present.
Shorten the value stream by bringing it inside
Our goal, starting and ending with the user, is to shorten the value stream and encapsulate it within the product stream. We aim to seize a crisis and initiate kaikaku events to eliminate some of the more obvious non-value adding steps. We collocate and remove dependencies to eliminate handoffs between teams, co-ordination overheads with other teams; waiting around for information, approval or access to shared resources; chasing people in different locations for responses. We favor open-source software rather than relying on core teams producing platforms and infrastructure systems, and we remove all other dependencies by absorbing skills and responsibilities into the product stream. For example, in a recent stream we had established a cooperative partnership with the company managing the datacenter where our production environments were hosted and they agreed to implant a system administrator into the stream to work as a member of our technical team.
Within the product stream, the necessary conditions are nurtured to enable frequent delivery of features to users, at a predictable and reliable rate. Work in progress is limited to the capacity of the technical team to avoid people burning out and they always stop to fix problems before continuing. Working at a sustainable pace, they remove unevenness from the pipeline of work by leveling the workload and release every week to create flow.
The technical team operates all the environments, including production. They automate as much as possible and manage the monitoring, alerting and capacity planning. Consequently they develop expertise in how the product runs, which enables them to diagnose problems more effectively. They also get to innovate in the 'system space' to meet business and user needs. They select the technology stack, deploy the product to the production environments, and they operate and support it, 24/7. If they do something to break production, they feel the pain straight away. They work hard to prevent that happening by delivering high-quality, well-tested software and, with end-to-end knowledge and full access, the team works continuously to eliminate complexity and duplication across the system, and to reduce the overall maintenance and support effort.