A little theory of constraints goes a long way in building lovable products.
The people student teams are building a product for can’t provide feedback until they can see a slice of the working application. Getting it out of the door, and deployed, is key to that. Realising that they can’t focus on components alone, is crucial to that understanding. Knowing the basics of ‘theory of constraints’ helps students see that they have options to improve how they do their collaborative work.
The ‘theory of constraints‘ (ToC) put forward by Eliyahu Goldratt in his business novel ‘The Goal‘ focuses on management of resources, ie machinery with the goal of improving output so that you have less ‘work in progress’. The goal is to get stuff out the door to be sold. It is no good having a warehouse of partially completed components, which can’t be sold. The components are tying up capital, when the business wants income through sales.
Theory of constraints helps visualise the flow of work
This has large implications for software development. Software has no commercial value until deployed. Yes, the team can bill the client for their time. But the client has nothing to use until the work is deployed. This is why the team must regularly deploy their work for the customer. Until your customer is using your software you don’t know if it will do the intended job.
As mentioned previously, David J Anderson wrote about minimum marketable features. This was also probably the first book seeking to bring theory of constraints to software development.
Two authors write about ToC more than others I think. Clarke Ching mentioned it to me around 2008, when I first met him. Since then he has developed a career helping people and businesses remove bottlenecks. You can read his novel ‘Rolling Rocks Downhill’ as his retelling of The Goal for people in software. It’s available online to read, or buy a copy. I also recommend his talks from Lean Agile Scotland in 2015, and in 2018.
More recently, Steve Tendon ( a former MSc student) has written about ‘taming the workflow‘ in knowledge work. You can watch an early talk of his at Lean Agile Scotland in 2013. His focus is on achieving flow through the work by applying ToC to software development, especially in larger organisations.
What this means for students
Students seem to think code in the repository has value. I see no value in their code until people use it. Software is there to make the business using it do its work more effectively. Software has no value until you deploy it.
Understanding ToC makes students aware of bottlenecks. Knowing about bottlenecks means students can work with them to achieve their goals. If they are ignorant of them, then they will not see the issues raised by bottlenecks. Read this post for more details about what bottlenecks look like in practice.
Bottlenecks appear as too much work piling up, and as too much work in progress, and many other things. Students can manage bottlenecks by regularly deploying work. That means developing work in thin, deployable slices so that they have short feedback loops, their work should appear regularly in front of their clients.
Internally, the team should also be making decisions to keep their feedback loops short by pairing and doing ensemble, or mob work, and merging code to the main branch. Regular communication and collaboration within the team should mean any bottlenecks are caught early.
Go read ‘the Goal’, read ‘Rolling Rocks Downhill’ and use their stories, and knowledge to inform your lectures. Point out to students that they have the power to change how they organise their work.
This post is part of a project pulling together my materials and ideas about Teaching Team Collaboration: the Human-Side of Software Development for software development to students.
If you’d like to be notified of future posts, then please sign up for more using the adjacent form. When you sign up, then I’ll send you a free copy of the collaboration rules as a PDF from the book. You can also follow me on LinkedIn
The ideas above are from my book 101+ Ideas to Improve Team Collaboration, which covers all of these little things that students can do to improve their collaboration.