I’ve been liking Grokking Simplicity so far. It starts out by separating code into three parts: data, computations, side-effects.
You want to minimize side-effects, preferring computations over them, and data over computations.
I’m still early into it, however, this already has been a helpful lens to view my code through.