The resume is there to get you an interview, not a job. Think of your audience there: managers.
Have two resumes: one longer career management document with more details that you don't send to anyone. Instead, you trim it down to a short resume, optimized for whatever job you're applying to. This resume you send out should be short: one page only. Remove stuff that is not related to the opening and highlight stuff that is. Also remove most ancient history stuff since only the past one or two jobs are likely to be relevant for your next job. If you're already a senior bit-flipper, spending many words on describing a junior burger-flipping job is not effective.
Being on the hiring end for software developers for many years, here are the key things I look for in resumes:
- Length. Overly long resumes are likely to end in the no-interview pile. Of course, if you're in the Linus Torvalds category, you can have a longer resume, but you really don't need one anymore.
- Job history: Achievements, not responsibilities. Especially achievements that surpassed role expectations. Progress over time. Signs of learning, also surpassing role expectations.
- Natural inclinations towards programming. Those who started early and spent some of their free time programming are more likely to have the necessary (but not sufficient) hours of practice for being a great programmer. Volunteer projects, hobby projects, open source development and geeky hobbies are some examples of such signs.
- Spelling and grammar. It's an indicator for attention to detail required for programming, and also indicates how much effort you are really willing to put to get a job.
References are in my opinion a bit overrated legacy artifacts. They really only work when the referrer is someone I know and trust.
So in summary:
Edited to add:
If your audience is not the hiring manager but some HR consultants, they are not likely to know the intricacies of the job you are applying to and simply do some buzzword-matching to score you. You get an interview based on the score you get. In this case, you have to do some buzzword name dropping in your roles and responsibilities part. Include things like names of programming languages and technologies you worked with and some self-assessment of proficiency (beginner, intermediate, expert).