Friends often ask me to review and give feedback about their CVs and then we start doing a long ping pong about technicalities such as: grammar, page layout and design, other small info bits and more in high level: intro paragraph, job descriptions, etc.
There are many posts around the internet that talk about 'best tips for writing CVs', and many of them are really helpful, so I'm not going to re-iterate them. I just hope that when someone writes their own CV they actually look it up and follow the ones that fit. Instead, I will talk about the common pitfalls I see and also suggest in general how to make a better CV hopefully.
There's an old joke about a manager who got hundreds of CVs and wasn't sure where to start, so a friend came over and immediately threw half of them straight to the garbage bin, the manager was shocked and asked "what have you done?", and the friend said, "we don't want to hire unlucky people, right"?
Lucky or not, let's start from the very beginning with the goal of a CV - to get an actual interview with company X for job Y. That's all! This is its mere existence the way I see it. Once you got the interview the game is now different and the CV is used to consult what to ask you regarding your past jobs and profession, but that's part of the actual interview itself, and more up to your actual skills.
Given this is the goal, I will start by saying that I'm going to talk about a format that suits Israel mostly. And in Israel CVs should be 1-2 pages long, even for very(!) senior people.
The first principle is that everything in a CV is important and it has to be precise and short and hence it's hard to do well.
There's one message to convey in a CV - "I (may or may not) have the required experience, and I'm capable for the wanted job, please interview me, and give me a chance now".
Now here's the main rule that should be followed while writing a CV - keep it interesting, don't bombard the reader with useless or all the info about you, we really don't care. It has to be succinct and less is more. Interesting means, the big events or actions on your past journey. I am talking about the bullet points under each work-place for example. You can also talk about the smaller ones, but I'd recommend with reduced length. So don't abuse it with yellow stuff like a news paper, simply keep the major stuff in. We just need to see, as recruiters and managers, that you are fit for the job, and then we will call you for an interview (whether on Zoom or in-person in our premises, doesn't matter).
I see people that, for example, worked in 5 companies in their past and write in length about each, having done pretty much the same stuff in each job (never-mind the actual profession: lawyer, developer, marketeer, etc). This is a waste of time for the recruiter if the info is signaling the same message under each work-place or job description. So if you are a lawyer and worked in 5 different law firms, I expect that you pretty much did the same thing, unless you became a manager or something and then there's room to extend about it. Therefore a rule of thumb I started to adapt is that the older the job was in the past the lesser info/text about it, again, unless it is significant.
Layout matters, layout is about design of the space in the CV, graphics and even readability, it has to be clean. I always zoom out to make the page look small and then I see how it 'feels' to me, I know it sounds weird, but if the page is full of packed text all over it, then it's not inviting to read it, and it feels like I will have to dig harder to find the bits of interesting info I am looking for. Remember the recruiter has to screen so many CV's! So make sure the layout is efficient (like using left pane for general info), and use something like cv tempaltes to make it look better, no question.
Write an intro paragraph about 1) who you are and 2) what ticks you and 3) what you're currently looking for. Yes, if you're looking for different job positions (e.g. a product manager, or a tech leader, or a cook) then write multiple versions of your CV per role to accommodate for the needed info, it goes beyond the intro paragraph and all along the CV and job descriptions to show why you're relevant for such a position.
Write all sentences in simple past tense for each bullet point describing something you did in the job.
Punctuation matters, seriously, you only have one job - to write a good CV, and you forget dots at the end of sentences or commas, or you're inconsistent about it during listing items. Not cool!
If you haven't done something yourself, don't mention it. If a team member did something and you were there sitting next to her and discussing it too, it doesn't mean you have done it yourself proper and it doesn't mean you have the experience to do it. I get to interview a lot of people and this is a horrible motive in CVs. Just don't BS your way in, interviewers will find out and it lowers your chances of getting the job you want.
If you were a team lead for example, or a manager with people under you, please specify how many people reported to you either directly or indirectly. This info is very important, yes even if you merely managed 3 people in your team.
Keep time line consistent for all work places, latest first. It's okay to dismiss work places that you're not proud of, but be ready that it might come up during an interview and you will be asked about why it was discarded. Don't open your CV with your education, unless it's your first job ever, otherwise it should go on the left pane of the page really.
If you want to add extra info about your age (D.O.B), martial status, where you live, or other cool fun-facts, be sure you feel alright with it. You don't have to do it, more 'helpers' should really help and not to become an obstacle from getting your next dream job. If you choose to add a profile photo, make sure it looks professional, has clean background and not some cheap selfie. BTW, I believe all extra info is mostly unnecessary, although I like to see hobbies that candidates like, it's an ice breaker during interviews sometimes and shows the person is likely to have more round personality.
If you are a junior (but not necessarily actually) and want to stand out, I suggest going on online contests like codewars.com or kaggle.com or solving CTF's. There are many similar sites that host competitions so the idea is to solve challenges and gain proven experience. Also having a technical blog or a github profile with projects is a good sign to show you're a real enthusiast in the domain. Alternatively you can also specify on the CV of some awards you got in the past, but make sure they're known to all and not something obscure.
A tip to reduce text that I recommend is to use hashtags to specify what products/tools you used in a work-place. For each job description you don't have to write that you worked with all products and infrastructures explicitly in full plain English sentences, like "I worked with X product in the company". I mean duh. Just write '#product' with the name of whatever product you used, at the end of the job description. Yes, I recommend to literally use hashtags or alternatively, just a list of product names in a one liner. So for example, #outlook #office #3dstudio #docker #kubernetes, #cpp, #javascript, #django, whatever. It will save time for the reader and it's very easy to spot and digest and saves space on the page for more important things.