Hiring for a position is based on a list of requirements, some are traits, some are skills.
There is never “perfect”, and you always compromise on some of the traits or some of the skills.
Moreover, there are always outside considerations that effect your decision for that specific point in time – the existing team, the goals that are set, or the available budget. Different times might create different considerations, and will result in a different hire.
Clearly defining the list of requirements, the outside factors and the prioritization of each one, streamlines the process and takes a lot of the “guessing” out of it.