Having spent a long time negotiating salaries on behalf of candidates and clients, there are two things that are always clear - Everyone who wants a new job would like more money and everyone looking to hire is always trying to save some money.
There is nothing wrong with either of those thought processes and they make sense to me, but someone has to manage this mismatch otherwise no-one will be hired.
A good recruiter will know your minimum salary requirement and the hiring company's maximum salary potential so (in theory) there will never be a problem.
If you are applying for a position directly, you won't have the benefit of a recruiter's additional knowledge. Be thorough and before the interview speak with someone who knows about the salary for the role.
Generally I've found that businesses that are coy about salaries have one (or maybe two) of two problems. Firstly they want far more from a skill set than they can afford or have internal salary issues where people already working in the business are underpaid in the same role.
Either way, I think that if a company is open about salaries at the beginning of a recruitment process, they are probably pretty up front about most things and therefore a much better bet for your next career move.
There are a few “knockout items” that should give you major pause if you hear them while you’re interviewing, because they suggest that no matter what else happens during your interview process, this is not the best job for you. You: "What is the salary range for this position? We should make sure we’re in the same ballpark so that we don’t waste anyone’s time." Manager or Recruiter: "We haven’t established a salary range for this position yet." No no no! That’s a lie. That’s simply not true, because in order to begin interviewing people you have to establish a salary range. No company, large or small, creates a job ad or a job spec without a clear salary range. If they say they haven’t set a salary range for the position yet, they are lying to you.