It is daunting to start on a fresh slate, so I recommend you start by making a laundry list of bullet points under each section, then optimizing it accordingly. This prevents excessive attention placed on premature optimization.
To maximize efficiency in applying for several job types, create and keep updated a "Master resume" which you basically use to maintain an exhaustive list of all points under every section of your resume. When applying for each job, you can make a copy of the Master and eliminate or optimize points as necessary.
The professional summary, if written well, will be the most effective and important part of your resume. From my experience as an interviewer, I generally may not have the time to read into the detail of resumes - hence summaries which directly address why a candidate is a good fit for the job greatly improves their chances of capturing my attention.
Most software engineering jobs will require at least an undergraduate degree. However, unless you are a recent graduate or do not have much work experience, it should not be prioritized above your work experience.
Use the following format, eliminating information where it is not relevant:
```
[Degree Name], [Year of Graduation - write expected graduation date if not graduated]
[University Name], [Location]
- GPA: X.XX / 4.0 (List GPA if more than 3.50/4.00, or more than 4.3 under a 5-point system)
- List key achievements, including leadership positions, skills, societies, projects, awards, etc.
```
Example:
```
BSc in Computing, Computer Science, Graduation Year 2015
Include at least 2 projects you have contributed to, outlining your key contributions.
```
Docusaurus, Menlo Park, CA
Lead maintainer 01/2018 - 04/2020
- Maintainer and lead engineer for Docusaurus v2, a static site generator which powers the documentation of many of Meta's Open Source Projects - React Native, Jest, Relay, Reason, etc