Resumes/CVs (I'm using the terms interchangeably here) serve different purposes. They really need to be catered for that purpose:

1. Looking for work

Your resume should be 2 pages, tops. If Guido van Rossum can have a short resume [1] so can you.

There is an important skill here and that's learning how to reduce what you're saying to the most salient points. This applies to resumes and presentations. This ties in to the oft-quoted Blaise Pascal [2]. As soon as you start writing "Responsible for design and development" you've gone astray.

The key things that should be in your resume shouldn't be your responsibilities (nobody cares) but what you've actually done.

You may think all 10 pages are important but they're not. The person reading it might have a stack of 50 on their desk. Each is probably only going to get 30 seconds of attention (tops) before a large number are culled and a second pass is made.

Some seem to argue that this is the hiring manager's problem and they should have longer attention spans. But the fact is if you can't get your point across quickly there value of extra time spent on a resume diminishes quickly.

Now this all changes in certain job situations, for example contracting with large companies. At such places your resume will go through a filter before it ever sees a hiring manager. That filter is of course the HR department. HR departments, as a general rule, don't have a clue about technology. All they do is look at the job description and look for the appropriate acronyms in your resume.

I once got asked "I see you have 5 years of Java experience, but do you have any J2SE experience?" End result? My resume was updated to say "Java/J2SE - 7 years".

You have to balance this out. Getting past HR just to appear like buzzword nonsense to a hiring manager is winning the battle to lose the war. So there still has to be enough meat.

Another way of culling information is highlighting what's relevant to that position and de-emphasizing (or removing entirely) the irrelevant. If you're applying for a job doing Linux driver development in C and you did 3 years of J2EE 8 years ago, nobody is going to care. Just delete it (for that job). If that creates a gap, reduce that experience to one line.

Tailoring resumes for specific jobs is one skill or idea that many people don't seem to have in my experience. It's OK to have multiple versions of your resume as long as they don't contradict each other.

2. Visa/immigration issues

Different kettle of fish. Here it's a bit like the HR filter case. Immigration officials will look at the job description and look for that experience on your resume. You need to make it simple for them. That can include putting key terms and acronyms in bold (seriously).

3. Freelancing

Probably most relevant is what project you've successfully completed and any references of such you have. Your employment responsibilities become less relevant. So have a line "Worked 3 years for IBM" if you must but no real need to break it down beyond job title.

Links to your work are far more important in this case.

4. Applying for (typically government) contracts.

The HR case on steroids. Government contracts are seemingly decided on the raw weight of supporting documentation. Put in every little detail you can. Or you could do something useful with your life.

[1]: http://www.python.org/~guido/Resume.html

[2]: http://en.wikiquote.org/wiki/Blaise_Pascal#Sourced