Start with the constraint, not the title.
“We need a senior developer” hides the reason the team is blocked. Name the release, system, skill gap or ownership problem first. The role becomes easier to calibrate once the work is visible.
Describe the environment the person is joining.
List the relevant languages and frameworks, but also describe architecture, deployment, test practices, team composition and the maturity of the codebase. Candidates can then judge whether their experience transfers.
Define seniority through decisions.
Years of experience are a weak proxy. State whether the person will implement scoped work, design a subsystem, review others, speak with stakeholders or own production outcomes.
Make the working model explicit.
Specify remote, hybrid or hub-based expectations, core collaboration hours, meeting rhythm, equipment and secure-access requirements. Resolve employment and country-specific questions before the final stage.
Choose a first useful outcome.
A clear first objective improves interviews and onboarding. It might be completing discovery, stabilizing a delivery pipeline, taking ownership of a service or raising automation coverage around a critical journey.