#software #productdevelopment #heroic This is a [[published/Work in Public|"Work in Public"]]. Software is incredibly flexible. You can do pretty much anything in 10 different ways. Steps can be skipped without anyone noticing, and edge cases can be ignored. I therefore impose artificial rigidity into our processes around software to help mitigate future issues. There's a strong analogy with Brian Johnson's version of personal growth. He has extremely strict processes and goals in an environment where you can do pretty much anything. Is your goal to get in good enough shape for a spartan race? If so, you can follow Brian's approach and diligently do what you need to do every day, or you can allow yourself to skip a day here and there. In the short term, you won't notice the difference, but in 6 months the differences will be enormous. Just like in real life, consistently applying rigid software processes results in exponential output in software, while the opposite leaves you with a piece of code that does not meet expectations and simply doesn't function well enough. And in the short term, the differences are invisible.