I&#x27;ve noticed that the more stateful my code, the more use I get from a debugger. Being able to poke and prod and see the various values in memory can be extremely helpful when I&#x27;m writing in an OO language, that just spitting to console doesn&#x27;t really do (because I don&#x27;t know up front what I&#x27;m going to care about; what influences what, what values are in the stack, in a containing object, etc).<p>Conversely, the less state I have (and, typically, the more functional my code), the less useful debugging is. It becomes easier to see my bugs up front (as they have more to do with explicit logic, that is expressed directly in my code), and to trace through in my head what must be going on, and all I need to do is check to confirm my understanding, and that my fix addresses it correctly, which can often be done more easily by just running the code twice (with a puts&#x2F;print statement), than attaching a debugger twice.