Hah! This is amusing.<p>In one of my classes freshman year, one of my favourite professors (Kathi Fisler &lt;3) gave us an assignment where we made a silly game with an airplane that flies around and drops things. And I remember wondering how to do that without mutable state for the location of the plane, etc. Then I just remember seeing in the instructions for the assignment something like:<p>&gt; write a function that takes a world and returns a new, updated world with the plane at its next location<p>and I just remember sitting there with my mind completely blown. Looking back at it, it doesn&#x27;t seem as profound as I thought it was at the time, but maybe that&#x27;s just because the novelty has worn off for me and a few years in industry have made me cynical, who knows :-)<p>Anyway, I think just learning to look at a problem differently I think gives you valuable insight into it and into your mind. Doesn&#x27;t matter if you end up using it or not.<p>&gt; I spend too much time trying to figure out how to say things as opposed to figuring out what to say.<p>Ha! Again, I think this is just a different approach. When I tried out haskell, it was intriguing that the modus operandi was: &quot;think a lot about a problem, then write down a little code&quot;. I like that this is the opposite of my instinct to jump in with a solution, then kinda heuristically change it to get to code that works, and ultimately I think lead me to think a bit more and end up with clearer problem definitions and solutions.