By Alex Yakyma.
We used to consider hardening effort as an extremely controversial topic. It’s been discussed multiple times in the community, never without emotions. At times the arguments can feel like full-fledged religious warfare. In SAFe, hardening is one of the three components of the HIP Sprint that is placed in the end of the PSI, and stands for Hardening, Innovation and Planning.
The term suggests that this sprint reserves capacity for PSI planning itself and planning preparation, as well as placeholders for hackathons, research activities for the next PSI, and, finally, the room for completing any work that was not covered during the regular sprints. Now, take a deep breath and hold your arguments for a little bit longer, as we are going on a journey that will help us understand the multiple misconceptions and misinterpretations with respect to the hardening. If you bear with me through the rest of the article, a lot of things will become obvious and totally logical.
The most “troublesome” aspect of hardening to many is that hardening sounds overly waterfall’ish, representing an additional phase in the process covering a bunch of aspects that weren’t tackled earlier. I will surprise you with the answer to that - yes, indeed, hardening stands out as a separate timeframe that is not inherently agile. And yet, hundreds of SAFe consultants (SPCs) in the field and their numerous clients adopt hardening, a knowingly non-agile construct. Why? For a number of reasons.
First, SAFe is adopted by a number of large Fortune 500 organizations that develop both software and hardware. It may indeed be hard to do thorough testing of the navigation system on an actual vehicle or a new air conditioning configuration system in a real building in every sprint. In this case, we fully utilize Lean Thinking and the concept of batch/lot size optimization and a balance between transaction cost (mainly reflecting different levels and aspects of system integration and testing) AND holding costs (which mostly is the growing complexity of un-validated increment of software). And in many cases, the optimum batch size for concerns like end-to-end testing on the target hardware environment turns out to be more than two weeks.
Second, somewhere in Narnia there lives a lonely agile team consisting of seven dwarfs and a Scrum Master. They develop their own product themselves. Most likely, they can move full steam ahead in a matter of two week sprints that include all aspects of software engineering. Well, the usual reality of software engineering at scale resembles more of Mordor, than Narnia. It involves tens or even hundreds of teams, millions of lines of code, and brittle product architecture that’s been around for 12 years already, because the first version was written by the company’s CEO himself. Wouldn't it be nice if they could cover all the steps in the value stream every two weeks? Yes! It would be awesome. But can they really do that at this point? Even if we deal with pure software (no hardware involved), many aspects would absolutely disrupt sprinting. What SAFe strongly recommends is to “choose the blue pill” and get back to reality, no matter how dark and ugly it may seem. Hardening is very important, and absolutely needs to be called out explicitly, otherwise there is absolutely no chance to reduce it or even get rid of it in the future, even in the cases where removing it is feasible. Taiichi Ohno was always emphasizing the importance of clear goal setting as no improvement is possible otherwise. The goal can be even overly aggressive, according to Ohno - that's how Toyota managed to implement such extreme practices as SMED - but it needs to be explicit and aware of the current state. That's why hardening matters. In many cases it's a temporary necessity that is absolutely critical to purposeful, continuous improvement. This perspective of hardening allows agile release trains to clearly separate definition of done (DoD) for stories on one hand and from that for the features, on the other hand. The whole matter of reducing or even fully eliminating hardening can then be explicitly interpreted as a gradual process of bridging the gap between these two DoDs.
Next, every once per PSI they have hardening activities... Well, here comes the limitations of the visual representation of knowledge and the overall desire to keep things simple as much as possible. Not always at zero cost. We place hardening effort at the end of the PSI on the Big Picture, and the initial suggestion would be to do exactly so in the beginning. But it is not necessarily the end state. As program matures over time, its holding cost and transaction cost curves change their shape. Normally, transaction cost curve flattens (which is the evidence of improved program's efficiency in integration, testing, tech writing, UAT, etc). As a result, the optimum batch size may become smaller. In such cases, we strongly encourage programs to split the hardening effort into more than one occurrence in the PSI. So, for instance, they may have one hardening chunk as a second week of sprint three and a second week of sprint 5, in a five-sprint PSI. Quite possibly, but not necessarily, their next step after a couple of PSIs would be splitting it even further and thus basically reach the point where hardening effort gets fully distributed across every sprint in the PSI. In other words, story DoD becomes equivalent to feature DoD. Overall, it is totally logical that different aspects of hardening may take a different optimum batch size. So, for example, full system integration could and should eventually be performed in every sprint (however it can be a real stretch for most organizations in the beginning). Tech writing and releasing to production – every two sprints, for instance. Full UAT and training internal users – once per PSI.
The whole unnecessary, emotional load that is so often associated with the word “hardening” fully disappears as soon as we adopt a systems thinking view, of which Lean Thinking is a great example that we use throughout the framework. As we stop being religious about agile and look at a broader picture and a full value stream, things begin to gradually add up. Achieving continuous flow of value at scale indeed requires additional constructs, like hardening effort. It may not seem highly desirable to have one, but it reflects the reality of many organizations and gives them a solid chance of substantially improving their practices and techniques in the future. Also, as we learned, hardening comprises a whole bunch of distinct aspects, of which some may be fully embraced by agile teams as a regular sprint routine --some can be done more frequently than once per PSI, and some may still require lower frequency. We see hardening as important tool, a result of “systems thinking” rather than the final goal itself.