Saturday December 2nd 2023 by socraticDev
Building, delivering, and maintaining software systems is a process aimed at delivering value to someone. This someone is called the customer and the people involved in the process, stakeholders. It is a process requiring different expertises and usually cannot be fullfilled by a single person or a single team. The complexity of the process, the fact that this process has many moving parts, leads to common issues such as misunderstandings, delays, and bottlenecks. For example, a misunderstanding can be developers building a feature that doesn't solve a customer's problem; delays are a mismatch between deadlines (due dates) and the actual state of the software system; bottlenecks are areas where the flow of work slows down or stops.
Flow of work is an ideal goal to which every organizations and every teams in these organizations should aim at:
"Flow occurs when there is a smooth, linear, and fast movement of work product from step to step in a relevant value stream" © Scaled Agile, Inc.
Dependencies and Hand-offs
Dependencies and Handoffs are the usual suspect when teams have to deal with too much work in progress (WIP).
Dependencies become visible when work items stop flowing down the value chain because they either require another team's intervention or because the hand-off process cannot be completed.
Hand-offs are a specifc kind of dependencies that occur within a team or between two closely collaborating teams. Hand-offs occur when a work item gets worked on and handed-off to the next person in the chain for them to work on them according to their specific expertise and skills. For example, a product manager hands-off a user story to the team's designer for them to design how this feature gets included into the product. Once designer's work is done, they hand it over to developers. Once the feature is implemented, developers hand-off the feature to their testing specialist.
why are Dependencies and Hand-offs to be avoided?
In order to improve value delivery's flow, dependencies and hand-offs must be carefully analyzed and addressed because they are slowing down value delivery.
- every hand-offs slows down the flow
- for every work item, there is non-explicit and non-documented knowledge required to understand it. This tacit knowledge tends to get lost or diluted at every hand-off
ways to reduce negative effects of hand-offs
- limit the number of hand-offs in the flow of a work item
- improve communication structures between team members and adjacent collaborating teams' members
- increase team autonomy, experiment with cross-collaboration on the same work item, etc.
Dependencies and hand-offs are intrinsic side-effects of work in software and system engineering. They are not intrinsically bad. But they should get minimized in order to improve the flow of value delivery.
Being able to identify these bottlenecks is a step in the right direction. It means you are already able to visualize the work in progress (WIP) and have a feel about the nature of the bottlenecks that are slowing down your value stream.
Next step in your continuous improvement journey will be about improving feedback loops. Asking yourself "Am I building the right thing?" and "How satisfied are my customers with my product?".
Knowing that you are building the right thing is as important as building it right or building it fast!