Interviews reward people who interview well, which is not the same as people who ship. These checks take an afternoon and catch most of the expensive problems.

Ask to see something live

Not a portfolio screenshot. A URL you can open, or a repository you can read. Anyone can describe work they did not do.

Ask what they would change about it

A developer who cannot criticise their own past work has either not maintained anything long enough to regret it, or is not being straight with you.

Scope agreed in the open, before anyone writes code.
Scope agreed in the open, before anyone writes code.

Check the stack matches the problem

A store, an internal tool and a mobile app are not the same hire. Someone excellent at one can be slow at another, and honest developers will say so.

Weekly reviews keep delivery predictable.
Weekly reviews keep delivery predictable.

Give a small paid trial

A few days of real work tells you more than any interview. Pay for it. Free trials attract the wrong people and sour the right ones.

Watch how they handle an unclear requirement

Deliberately leave one detail vague in the brief. The good outcome is a question. The bad outcome is an assumption you discover two weeks later.

Working software, tested on real data.
Working software, tested on real data.

Agree how you will communicate

Which tool, how often, and what a status update contains. Most projects that go quiet were never given a rhythm in the first place.

Settle ownership in writing

Code, repositories, hosting accounts and design files should be yours. Confirm it before work starts, not at handover.