Re-use Steps, If Possible
Behaviour Specification steps that refer to and perform the exact same underlying functionality should be implemented once and only once! Always try to reuse functionality where possible — if it makes sense to do so.
Some steps can be genuine cross-cutting concerns with reusable functionality that all software components within the same system may use. Examples of these include performing the actions for signing-in to a system with specific credentials or other utility style functionality such as logging or auditing.
Many steps however are typically specific and scoped to the context of the software component they refer to. These steps generally are only reused by different Behaviour Specifications within the same feature file. This is to be expected and is absolutely is fine!