Given that we do not have in-house development resources and my Apex abilities are pretty basic, I usually try to stick to Process Builder, Flow, various out-of-the box declarative assignment/validation/etc rules.
But with self-updating automations (that is, a change on a record triggering an update on that same record), it occurs to me that the more efficient option would be a before trigger instead. It's less maintainable but it also takes less DML.
Generally speaking - is it best practice to have all self-updating automations be triggers then (as opposed to after update Processes that might even need to be recursive)?
Edit: To actually ask a specific question - I have a requirement to perform an update on every record on an object on every edit. I'm concerned about DML efficiency for this need in particular, but then the broader question occurred to me as well.