The lean developer
FEATURE – How can digital companies develop a competitive edge in the "tech first" future? By using Lean Thinking to ensure continuous learning and transform the way coders think and work.
Words: Ben Ellerby, VP of Engineering, Theodo – United Kingdom
Software development has changed a lot since the Agile Manifesto was written and wider Agile movement was born in the early 2000s. These days, developers in many companies are far more connected to the end customer of the systems they build and regularly focus on improvement as teams.
The lean origins of the Agile principles are well understood by lean practitioners involved in Agile development projects – from short feedback loops to continuous improvement in the form of retrospectives. Even the lean terminology has been incorporated (and sometimes misused) in the Agile environment – think about kanban boards and the “andon”.
The book Lean Software Development by Poppendieck and Poppendieck did a good job mapping more clearly the lean tools that are applicable to the practice of writing software. In fact, many developers I've known had never heard of Lean Thinking until they had stumbled upon this book while researching Agile and Scrum. The book is a great resource for finding lean practices that are adaptable to our context, without being too strict or prescriptive with one-size-fits-all approaches – a well-known weakness of some Agile frameworks like Scrum.
Despite all this, however, there is still something preventing software developers from fully embracing the power of Lean Thinking. Many are struggling to move past a tool-based approach and change the way people in the organization think (a problem scores of practitioners from all kinds of industries have encountered before).
This shift in focus from tools to mindset is covered in detail in the book The Lean Strategy. At Theodo, we have been lucky to have a sensei – who is also one of the authors of the book – who is inspiring change in the way we work. We used to be very anxious every time Michael Ballé came to walk our gemba, until we realized it is only ever the leadership team who is going to be challenged (this was a relaxing thought for me before I became a part of the leadership team myself). With his critical eye, Michael is encouraging us to create a learning culture and an environment that is conducive to continuous improvement – rather than having us rely on some pre-baked solution.
This can all sound quite theoretical to software developers, and somewhat hard to apply to their every-day circumstances. Indeed, it’s not until you see lean principles in action in a real-life situation that you can fully understand the impact this alternative way of thinking, working and managing can have. And this is true whether you are writing software, building cars, running a bakery or teaching students.
I remember one of these a-ha moments, when I saw the potential of Lean Thinking in the world of Agile software development. A few years ago, I was leading a large project, with many developers writing code and releasing daily. As the project progressed, we realized there was a risk that some bugs would be appearing in multiple places due to code duplication, resulting in the web application getting slower. Rather than approaching this in a top-down fashion, I set up a daily Kaizen meeting with the developers. Every time they went to release a feature, the code duplication and performance of the site were recorded. Every afternoon, the team gathered to look at these readings and analyze the root causes of problems, classifying their occurrence by type in a Pareto chart. Short-term and long-term countermeasures were identified and – most importantly – the team learned throughout the process. It wasn’t until a year later, when I went back to the same client for a visit, that I truly understood how powerful Lean Thinking can be when it comes to creating a learning environment.
Our teams were long gone, having passed the baton to the client’s internal engineering teams we had trained. A new developer happened to have joined the same day of my visit. He had just installed the project and was in the process of shipping his first feature. Since I was waiting for the CTO to arrive, I took the chance to observe his work. He pushed his code, triggering the automated build start, and then got a red error message. He read out loud: “Kaizen Check Failed: Code duplication increase”. This was a poka-yoke mechanism that we had added over a year before after analyzing previous code duplication. The dev dutifully reworked his code to pass the check. I was satisfied knowing our long-term countermeasure was still working.
After my meeting with the CTO, I went back into the open plan development office and saw the team huddled in front of a white board. They were analyzing the root cause of the code duplication as the failure check of the new coder had sent out an email to the “kaizen” mailing group. As they worked with the developer to understand the situation, he learned from the experience and the team learned that a particular third-party library they were using had inconsistent interfaces that caused the duplication. The team continues to improve on a daily basis.
A DIFFERENT PARADIGM FOR SOFTWARE DEVELOPMENT
I believe that bringing the theory of Lean Thinking into the practice of coding is something that will require a new generation of lean developers. Too many organizations are still entrenched in antiquated bureaucratic structures that have them invest in management training on the business side of their company without realizing the future of an organization in a “tech first” world lies in the hands of the people who build its technical capabilities. After all, it’s hard to imagine a successful digital transformation that doesn’t give much thought to the digital side of the business!
The companies that will succeed in the uncertain and fast-changing times ahead are those who invest in empowering their developers to work in a lean way. Applying a framework like Scrum and saying you're Agile is no longer enough. Even when we embrace lean, as managers we need to do more than just create a few slides on “continuous improvement” or run an isolated value stream mapping exercise. We need to focus on where the value is created: bringing Lean Thinking to software development means to take the transformation to the gemba, changing the way developers think, write code and build features and establishing a learning culture that enables continuous improvement.
It is in this spirit that I have launched a new podcast with Michael Ballé to inspire a new generation of lean practitioners in the software development world. Michael provides the theory and his unique understanding of lean and I provide the hands-on engineering experience, from coding software to building state-of-the-art Cloud architectures. Our aim is to take real problems encountered by real developers and to look at them from a lean perspective. So far, we have covered topics including the impact of small batch sizes on holistic technical architectures, continuous improvement on non-repetitive tasks and Code Gembas. You can find the Lean Dev podcast on your podcasting app of choice, or here.