So there are lots of things that you could standardize. For instance, having a CI that runs in less than 10 minutes and practicing continuous delivery. 100% TypeScript coverage has become a standard on all of our projects and making effective choices for tools and frameworks. These are all things that we standardize at work.
And you can see here, I've given you the templates for what I use when I'm starting off creating a standard. It's actually very common for us to ask each other at work, is this thing on standard or is it off standard? And this really helps us to align two people on whether we believe that we're working at state of the art for those conditions, i.e., the best that they can be or the best that we know that they can be for that thing that we're talking about.
So once we've achieved standardization, i.e., we've defined what good looks like, we can start to notice when things are off standard. Lean introduces to us many ways of doing this, but two core ideas that help me on a daily basis as tech lead are firstly Andon, which is the surfacing and visualization of problems that occur on the production line. When a developer notices that something's going wrong on their ticket, it's their obligation to raise this as soon as possible so that they can solve the initial problem and get back on track with the delivery of the ticket with a tech lead and also so that we can do some problem solving and ensure that the root cause of the problem has been addressed. We really make a big effort to ensure that developers can raise as many problems as they need to and work closely with a tech lead to solve these.
But even if you're not receiving any Andons as a tech lead, it doesn't mean that there are no problems happening on the ground, and to discover them, we have to go and experience the real conditions for ourselves, and this is the lean concept of Genshi Kenbutsu. We can do this in a number of ways. We can sit next to the developer and pair program with them on their tickets. We can take in tickets and get a feel for the codebase and identify where it might be going wrong and potential room for improvement within the codebase. I'm still working on tickets on a daily basis, but the focus isn't primarily to deliver value of that specific ticket, but to discover how we can improve our ways of working within the codebase. And it can also be done through code reviews, and when I do code reviews, I try to identify what is the next thing that this developer needs to learn in order to get to that next level. And, of course, this happens in Toyota factories as well. In fact, the managers see this as one of their main jobs, and they get very frustrated when they get called in for meetings just like tech leads. They want to be out there on the floor understanding the real problems faced by the makers, and it's said that the lead managers at Toyota should need to wash their hands before every meal because of the amount of grease they've picked up from the number of times they've been on to the factory floor, not just managing from an office above the production line.
Solving problems well is really difficult, and most people start off by shooting themselves in the foot. They're really tempted at first glance to prioritize their efforts to address the largest problems first, that is, the ones that are most difficult to solve with the most complex root causes, and I call this the boulder problem. So imagine you're tasked with moving a pile of rocks differently sized from one place to another. If you try and push the biggest boulder, you're going to spend more time and effort moving it, and quite often, you'll get hurt. In the same way, focusing on big problems can really dishearten you when you fail to make a meaningful change. Instead, it would have been much better to use that time that you spent moving the big boulder to pick up many smaller rocks, moving them one by one, where we can predictably and incrementally make a bigger pile in the same time that it took us to move the boulder, and all of that, the cumulative effect of all of those small rocks actually ends up building a bigger pile. So here, Lean tells us to tackle this by doing daily problem solving, that is, to use the small problems of everyday life to strengthen your team knowledge on the conditions that enable better quality and faster delivery. So focus on specific problems, not general ones, and see how you can prevent those from reoccurring.
So now we've identified a problem of the right size, let's see what we can do to solve it. When we look at, we're looking for the root cause of a problem, it will relate to one of these four inputs that go into making high-performing teams, and at work, we call this the four M model, which describes those inputs. So firstly, we have the maker, the person who's producing the thing that delivers value, and the things that go into that are their health, their knowledge, and their skills.
Comments