this x1000. My main frustration with imperative programming has become the devops plumbing and defensive nature in code that was needed to get something done.
Switching to Elixir - learning what OTP brings to the table, e.g. observers, genservers - distillery compiled binaries per OS, negating the need for a lot of the devops complexity, e.g. docker, node, - the switch to esbuild and liveview for less JS cruft - FP transforming of immutable data to more immutable data vs managing state
TBH all of it has been a breath of fresh air.