Think of a product stream as a small company working exclusively on a product and delivering features that excite users to maximize profit and growth. The stream invests in its relationship with users and is set up to compete on the basis of speed. It 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 and minimum risk, and produces flexible software that responds 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. Everyone understands the financial consequences of decisions and actions, or lack thereof, so people think in terms of delivering value to users as quickly as possible and cost effectively. Only people in the stream work on the product; in a transparent environment they collaborate intensively, communicate honestly and 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 a product champion and a 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 also a product champion. Synthesizing the needs of different users (and stakeholders), he focuses delivery on evolving features in response to their feedback and changing market conditions to facilitate business agility.
- The technical mentor is a master craftsman with business acumen, extensive knowledge and vast experience in delivering high-quality software products to market. He coaches the technical team on a journey that they cannot take on their own, using earned trust to show them new skills, techniques and thinking processes.
- The facilitator actually leads the technical team with passionate support and faith in their work; he manages the budget and is responsible for results. Facilitating without detailed or coercive direction, he lets people self-organize, steering with a light touch. He helps the team function effectively by providing everything it needs, driving consensus decisions, removing obstacles that impede delivery and creating an environment in which peoples’ potential is developed based upon mutual respect and cooperation.
The technical team comprises all the technical skills it needs to develop software for production and operational use. There are specialists such as testers, system administrators and designers, however everyone works to acquire more general skills to build resilience into the team. A stream is always learning. It works continuously to eliminate waste and improve 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 deliver the highest possible quality and service to users. 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, access to business people or 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
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 (minus some slack) to avoid people burning out and they always stop to fix problems before continuing. Working at a sustainable pace, they even out the arrival of work by making stories approximately the same size, use pull scheduling 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.