I code in this style. I can tell a lot of things started going right when I adopted the style too. Instead of global variables I have a single config which I initially pass around to functions, then I refine and pass only the data each function needs. The config generally doesn't get mutated. Testing is easier. Functions are easy to reason about. I keep functions to a dozen lines or so, but not to the same neurotic level uncle bob presribes. Likewise a few extra arguments are fine, but too many usually signals a new type is required or time to compose a new function which utilizes the function whos parameters are growing.