Adam Hawkins presents the theory and practices behind software delivery excellence. Topics include DevOps, lean, software architecture, continuous delivery, and interviews with industry leaders.
Hello and welcome to Small Batches. Iām your host Adam Hawkins. In each episode, I share a small batch of software delivery education aiming to help you find flow, feedback, and learning in your daily work. Topics include DevOps, lean, continuous delivery, and conversations with industry leaders. Now, letās begin todayās episode.
The previous episode told the story of Project Banana. I wrote the story to demonstrate leadership, communication, collaboration in a real world scenario. The story centers on a team migrating the last of their services to new container infrastructure and their unexpected challenges during the migration.
Letās us that as an avatar for ideal communication patterns. The pattern comes from the book Leadership is Language. Today, Iām covering into the ideas behind the patterns.
That book describes a simple mental model of leadership. A core competency is communicating to harness the teamās power towards their aims. The mental model splits the work into two modes: redwork and bluework. Leaders leverage communication to work well inside each, and transition between the two.
Redwork is the ādoingā work. Itās the action. Itās the production. It thrives in a controlled environment with less variety.
Bluework is the creative work. Itās the planning, thinking, and divergent thought process. It thrives with variety.
Bluework wants a large menu of options for consideration. Redwork wants an ordered set of instructions.
The challenge is identifying the needs of the moment and calling the plays to move from redwork to bluework or bluework to redwork.
Let me explain with a scenario you may relate to. Youāre at the beginning of the TDD loop: write the test, write the code, then refactor.
So what happens before you write the test? Well, you need some creative thinking.
This is bluework. At this moment youāre thinking to yourself: how would I write the test? What should the code look like at the end? What are architectural constraints? Youāre thinking through a menu of options and possible alternatives. Eventually, youāll converge on a starting point for the test and commit to what that looks like. Notice that word ācommitā. Thatās ācommitā play that transitions from bluework to redwork.
The commitment comes with specific things to do. In this case, write a test that looks like XYZ. So you switch from thinking to executing. Exciting is redwork. However, the redwork is not entirely opened end. Itās bounded in some way.
The TDD loops builds in way to complete the redwork: the test fails or the test passes. Since weāre talking about TDD here, thereās an implicit completion criteria tacked onto the end of the commitment: āI will stop and revaluate once I have a failing test.ā
Skilled TDD practitioners run through this inner monologue without thinking about it. Slowing down to step through the process like weāre doing here allows the implicit mental communication to explicit.
That āstop and revaluateā statement is an offramp from the redwork of writing the test to the bluework of planning the code itself. This is the ācompleteā play. It bookends the redwork by setting up the next period of bluework.
These cycles of redwork-bluework-redwork or bluework-redwork-bluework play out constantly.
Letās fast forward a bit through through the TDD loop to the point where the tests passes. Congratulations! The test suite celebrates your progress by displaying a āTests passedā in green text. Youāve completed a period redwork. Time to call the next play: improve.
The improve play is creative bluework that aims, naturally, to improve future redwork. It typically begins with a simple question: āHow could things get better?ā This is the ārefactorā step in the TDD loop.
You evaluate ways the code may be better factored, better separation of concerns, better assertions, clearer preconditions, less state, more functional, the list goes on.
You consider the alternatives to come up with the next steps in refactoring the code. Thereās the commit play again: the transition from bluework to redwork with the implicit completion criteria that refactoring is complete when the test still passes. So off you go, happy hacking. Bluework-redwork-bluework; redwork-bluework-redwork.
Hopefully, youāre able to iterate through that process. So what happens, if you canāt? What happens if your plans just donāt work. Perhaps thereās an architectural constraint that blocks your current plan, or the discovery of an assumption that inverts your understanding?
Well, you call a pause to control the clock. This is the abort handle for when redwork goes wrong. The pause allows you to stop and collaborate (with yourself internally) or with others. This is when questions like: āwhy didnāt this work?ā, āwhat alternatives are there?ā, or āhow else could this work?ā Fly around until thereās something to converge on. Thatās the point of commitment where bluework transitions to redwork, then the cycles repeat.
Letās recap the plays before completing this episode.
Control the clock to exit redwork to allow bluework for adapting to the current condition.
Collaborate on bluework. This is divergent thinking about the current condition to converge on the next step. Typically followed by the commit play. Think of the P in PDCA.
The commit play signals the end of bluework by committing to specific redwork actions. Think of the D in PDCA.
Redwork ends with the complete play. Itās an opportunity to ask: what comes next? This is the C in PDCA.
The improve play is the curious bluework that aims to improve future work. It asks: āhow can things get better?ā. Think of the A in PDCA.
Youāve just completed another episode of Small Batches.
Now that youāre equipped with knowledge of redwork, bluework, and the plays, I have a homework assignment for you. Go back and listen to the previous episode on Project Banana. Can you identify the language Brian uses to call the plays with the team?
Go to SmallBatches.fm/81 to find links to Leadership is Language and a handy summary guide.
I hope to have you back again for the next episode. The next episode will cover the specific communication and language used to call these plays.
So until then, happy shipping!