Step reuse: commands vs jobs vs anchors?

If I have a set of steps I want to be able to reuse that accomplish a particular goal (e.g. build a deployment component), seems like I could either define them in a command or as a job (or a job that invokes a command). What are the considerations that might influence the decision? Let’s assume none of the steps are supported by some other orb, since otherwise that would seem to suggest using a job to encompass both inline and orb-based commands.

Along the same vein, are there still use cases for YAML anchors? In 1.1 these were the only tools for some level of reuse, if only within a single config file.

That sounds like an ideal use case for a command, IMO @phalverson.

As for YAML anchors—they should generally be superseded by reusable commands/jobs/executors, but since not all components of CircleCI configuration can currently be encapsulated by reusable commands/jobs/executors (e.g., workflows/pipelines configuration), I certainly still sometimes find uses for anchors. Here’s an example: