Working Together While Working Separately
In my current job I’ve been helping lead a small team in the development of a new product. This is a coordinated effort across the company and been a challenge to some as we quickly switch between discovering our customer’s needs with developing them. We have a road map and a plan but translating this into actual work has been difficult. All of the reading I’ve done over the years has helped me develop plans and strategies in order to help organize a group of people around a given task in order to deliver. As with anything application ends up being more difficult than theory.
Teams and people work best when they are decoupled from each other. Running by yourself is faster than running in a three legged race. The coordination effort in a three legged race is difficult to get right and once established any variation can cause another slow down. If a development group or organization has multiple teams the race no longer is just a three legged race but a four, five, or more legged race where coordination almost becomes impossible.
Yet scaled product development cannot be an individual effort, it does require coordination but of a different kind. Relay races involve several people with hand-offs at a given point to help continue the race. The result being longer distances traveled in a shorter amount of time than what one individual can do. Teams an individuals need to work in a similar way if they want to achieve great things. Yet if a path isn’t clearly outlined the coordination can go wrong or if the baton is dropped slow downs can still occur. This is different than the coordination effort of a multi-legged race, this is a communication problem.
So given individuals making contributions to a team and a team making individual contributions to an organization how can we be successful in what we build? By making work visible. This simple idea helped Toyota coordinate and develop one of the fastest, reliable, and efficient manufacturing processes in the world. It has become one of the most studied and referenced companies in the world and the success is around the visibility of the work. Kanban, a simple board with sticky notes, can help coordinate the work across organizations and teams as long as the ticket outlines the work necessary for completion. In a production facility it may be an order or piece that is needed or a task that needs done. In development these tickets should outline the work that needs done and what it looks like when it is completed.
Small is Beautiful
Yet all too often I’ve seen tickets be created without the information needed to complete it often leading to “scope creep”. Or worse a ticket is done in isolation generating a large amount of work in progress all at once. This puts a burden on the system because now more mental effort is needed to do the task and only one person is able to do the work instead of breaking down the tasks into smaller steps which allows for more people to work on a task. If teams can break down the work into smaller tasks that are independent of each other not only does the work get distributed but the segments of code can be smaller and easily understood or reasoned about.
This is all to say that given enough information and enough coordination teams can work independently with each other and internally they can work independently as well. Without dependencies teams and their members can run as fast as they can towards a given goal. Hand-offs will be needed but the coordination comes through documentation and tickets rather than hand holding.