Debugging Your CV: Why Recruiters Keep Skipping Your Resume

Table of contents

Layout (layout of the CV and what are the components)

Order (order of which section should come before which section)

Required (required sections that should always be in every resume)

  1. Experience.

  2. Education.

  3. Projects (side projects/bootcamp projects/college related projects).

  4. Skills (Do not include soft skills like presentation, communication or wine tasting).

Optional (they are bonus and good to have)

  1. Extracuricular activities/Volunteering.

  2. Certificates (if any) (From online courses or tests like AWS Associate or CompTIA Security+.

  3. Languages spoken.

Example

Example of the cv of Gayle L. McDowell

Let's dissect every section, but first we will address some common

Pitfalls to avoid.

One page

  • Your CV is compacting your whole career life into 1 page, the CEO of Yahoo! cv's is 1 page, so if she can do it, you can.

    • The recruiters give less than 30 seconds to your resume, that's because they recieve thousands of résumés everyday, and they need to get through them all.

    • That means that you will need to cut some sections off, old non-impressive projects and experiences.

Don't overshare, include only certain personal information.

  • Your name, LinkedIn, Github, Email and phone, location (location is optional as your will be asked in the application where do you reside and can be infered from the country code of your phone, but don't put the whole address, just the city, country).

  • Companies aren't allowed to ask about your religion, marital status, or race/ethnicity, so you shouldn't include that.

  • Don't include your personal photo.

  • Don't include a sumary/objective, I guarntee the recruiters don't have the time to look at them + they already know your objective; getting a job.

  • Don't list low-priority information like hobbies, extracurriculars, or irrelevant skills like Photoshop, Premiere, Excel. Move these towards the bottom of the resume, or just leave out skills that may dilute your resume.

  • Less is more: Focus on a few very strong points and develop those, instead of a long list of bullet point features, none of which seem very interesting for anyone to care about. If you have a big accomplishment, spend more time on your resume to talk about that.

    • The fact is that any bullet point could have an amazing story behind it, but you need to reveal that story.

Don't include every experience

  • If you have 20 years of experience and worked in 5 places, first of all; Mashallah, second, only include the most recent 3-4 experiences.

  • Include only related technical experiences, example:

    • If you are applying for software engineering role, and you've worked in the past as a robotics instructor and also worked as a pizza delivery person, then the robotics instructor is more related and the pizza experinece shouldn't be included.

Don't include every project

  • We still remember our first Hello World code but that doesn't mean we should include it.

  • Include the complex project.

    • Todo list > Calculator.

    • Image Processing Service > Todo list.

    • Real-time Chat Application > Image Processing Service.

    • Custom OS > Real-time Chat Application and so forth.

    • Network protocol which uploads and encodes files faster that Dropbox > Custom OS And so on.

Don't uglify nor beautify too much

  • Don't use a template that has a lot of colors and profile picture.

  • Don't have quantify your skills level

    • e.g. don't put you are 3/5 in C++ or 2/5 in Machine Learning (we will discuss how to prioritize your skill set.
  • Don't include full URLs, hyperlink them them instead.

  • Grammar check.

  • Spelling check.

  • Capitalization check.

  • Punctuation check.

Action verbs

In both Experience and Projects sections, you always start with an action verb in the past tense. The opening lines of your resume should highlight your software development expertise with active, developer-focused language. Focus on actions like developing, implementing, creating, and building:

  • Implemented a framework for a webserver.

  • Built a full-stack web app and launched to +1k.

  • "Developed a REST API for batch processing.

Here are 20 action verbs to be used in a tech CV (Please refrain from using chatGPT for this, it uses weird words like spearheaded):

  1. Developed

  2. Designed

  3. Implemented

  4. Engineered

  5. Optimized

  6. Built

  7. Created

  8. Improved

  9. Architected

  10. Automated

  11. Integrated

  12. Executed

  13. Debugged

  14. Deployed

  15. Tested

  16. Refactored

  17. Collaborated

  18. Customized

  19. Upgraded

  20. Resolved

How to write your Experience.

  • Every experience should entail:

    • The company's name.

    • Your position.

    • Location (City, Country or Remote).

    • From when to when (Month Year - Month Year).

  • Begin every bulletpoint with an action verb in the past tense.

  • Describe the projects that you worked on, what were your contributions and your impact.

    • The bulletpoints should address what you did, how you did it and what was the result of that.
  • Either you:

    • Dont' mention the tech stack used in the bulletpoints but dedicate the last bulletpoint for the tech stack used.

    • Mention the tech stack used but let it be in Bold.

    • The reason for these 2 methods is to make it easy on the recruiters to capture what skills you have industrial experience at.

    • Don't describe college projects or side projects, that's for the next section.

Dos and Don'ts

DoDon't
Mention technical detailsMention an internal library or a project that isn't famous outside the company you've worked at
Discuss the impactDiscuss that you've learned tools/languages
Have 3-5 bulletpoints maximum per experienceAdd an experience without any details/add your details as pragraphs

How to write your projects

  • Writing the projects is pretty similar your experience except the projects are more well defined and done in shorter period wheras the experience could be 5 years in the same company and have worked on multiple projects.

  • The project section is a bit tricky because you try to describe the project while describing what you did.

  • A lot of pitfalls that people fall into is having a paragraph desrcibing the project then start with bulletpoints with the action verbs at the beginning.

  • The work around that is to start the first bulletpoint with (Architected/Designed/Implemented/Collaberated at a software x that does y).

  • The title of the project can be whatever you and your collegaues agreed to it, I remember me and my friend called our networks project "The new internet"

  • You shouldn't include the place or dates of when the project started and ended.

  • You SHOULD however hyperlink your projects with their corresponding github repo.

    • Make sure you upload the projects you have created/collaberated at.

    • Keep the Readme.md file nice and readable.

  • Describe the problem, your solution, and the outcome.

  • Include technologies used and their role in the project.

  • Focus on achievements and measurable results, not just tasks.

  • Keep it concise and tailored to the job you're applying for.


Good and Bad examples for writing bulletpoints in Exprience/Projects.

  • ❌ Bad Example | Vague and Generic Statements
    "Worked on various backend projects to improve system performance."

    • Why it's bad: Lacks detail, measurable results, and doesn't stand out.
  • ✅ Good Example | Focus on Achievements and Impact:
    "Led the migration of a monolithic application to a microservices architecture, reducing deployment time by 40% and improving system scalability to handle 3x user traffic."

    • Why it works: Highlights specific achievements, quantified impact, and technical skills.
  • ❌ Bad Example | Overusing Buzzwords Without Substance:
    "Utilized cutting-edge technologies to deliver innovative solutions in a dynamic environment."

    • Why it's bad: Buzzwords sound impressive but lack concrete information about what was achieved + shows you've used ChatGPT.
  • ✅ Good Example | Showcase Collaboration
    "Collaborated with cross-functional teams to design and implement a CI/CD pipeline using Jenkins."

    • Why it works: Demonstrates teamwork and direct contributions to the organization's success + your hands on expertise of devops.
  • ❌ Bad Example | Overloading with Irrelevant Details
    "Fixed printer issues and set up email accounts for team members while occasionally assisting in software development."

    • Why it's bad: Focuses on unrelated tasks instead of showcasing relevant technical contributions.
  • ✅ Good Example | Highlight Domain Knowledge
    "Developed predictive analytics tools using Python and SQL, enabling the sales team to forecast trends with 95% accuracy."

    • Why it works: Shows domain-specific expertise and practical applications.

How to write Skills section

  • Only include the technical skills.

  • Divide the skills into 2 sections: Programming Languages and Tools & Frameworks.

  • Write the technical skill even if it has been a while since you have worked with it.

Do's and Don'ts

DoDon't
Include Technical skillsDon't include stuff like (Good communication, Presentation, work under preassure).
Be concises in the skillsDon't say Good in Python, Knowledge about Go, there is no need to quantify it.
Include Progamming languages, Frameworks, Tools you've usedIt is not recommended to write libraries, Algorithms/DS, OOP, Operating systems, IDEs as it shows that you are just stuffing things

NOTE For Product Managers, you are not expected to have technical skills regarding programming but you can write the following skills:

  • Agile

  • Competitive Analysis

  • Business Modeling

  • Scrum

  • Kanban

  • Market Mapping

  • Cross-Functional Team Leadership

  • Feedback Analysis

  • Strategic Thinking

  • User-Centric Design

  • Technical Writing

  • Customer Empathy

  • User Acceptance Testing

  • Roadmap Planning

  • Presentation

  • Communication

  • Data Analysis

  • Business Decision Making

  • Jira

  • Notion

  • Confulence

  • Figma

  • A/B Testing

  • SQL

  • Miro

How to write Eduction section

  • List Degrees in Reverse Chronological Order: Start with the most recent degree or education program, including the name of the institution, degree earned, and graduation year (or expected graduation year).

  • Include Relevant Details: Mention key details such as your GPA (if >= 3.5), major/minor, certifications, thesis topic (if applicable), or coursework relevant to the job you're applying for.

  • Keep It Concise: Avoid including irrelevant details like high school (if you have a college degree) or unrelated activities unless they are specifically relevant to the role.

As mentioned Include your GPA only if it is >= 3.5. If your grade is in % then to convert it to GPA:

  1. Divide the score by 100.

  2. Multiply by 4.
    Example: Say your score is 92%

    1. 92/100 = 0.92.

    2. 0.92 * 4 = 3.68.

What to do if your CV is empty

First of all breath ..

It is totally normal wether you are still a student/grad/doing a career shift, no one is born with experience, and I understand the deadlock of in order to have experience you need to have experience, so here are some suggestions:

Academia

  • You ask and search for professors at your college to be their research assistant.

  • You can write a research paper yourself (this is a high caliber experience and also, the professor could recommend you and help you in application process in the future).

    • Introvert Advice: The best you to reach professors if you are shy, is by asking TAs who is a professor with good research experience who might need a research assistant, and ask the TA to recommend you.
  • Sometime TAs themselves need research assistants, so you can pair with them.

  • Are you a CS newbie and not sure of which topic to start?

  • You can also to literature review paper in a topic, check my blog post on how to start in it


Freelancing

Starting as a beginner software developer in freelancing can be exciting but challenging. Here's a structured guide to help you begin:


1. Build a Strong Foundation

  • Learn and Practice: Focus on mastering programming languages and frameworks relevant to the kind of freelancing projects you want to take. Popular choices include:

    • Web Development: HTML, CSS, JavaScript, React, Node.js, or Django.

    • Mobile Development: Flutter, Swift, or Kotlin.

    • Backend Development: Python, Java, or Ruby.

    • DevOps/Cloud: Docker, Kubernetes, AWS.

  • Work on Personal Projects: Create a portfolio with 2-3 projects that solve real-world problems. For example:

    • A to-do app.

    • A personal blog website.

    • An API for user authentication.

  • Understand Git and GitHub: Showcase your code and contributions on GitHub.


2. Create an Attractive Freelancing Profile

  • Freelancing Platforms:

International:

Arabic:

  • Khamsat

  • Mostaql

  • Khadematy App

  • Craft a Great Profile:

    • Professional Photo: Use a clear, friendly, and professional-looking picture.

    • Catchy Headline: Example: "Web Developer | Building Responsive and User-Friendly Websites"

    • Compelling Overview: Mention your skills, passion for development, and maybe a funny line. Example:

      "Hi there! I'm a developer who turns caffeine and creativity into clean, functional, and (sometimes) flawless code. Whether it's crafting seamless mobile apps, building robust APIs, or debugging mysterious bugs, I thrive on solving problems and making your ideas come to life. Think of me as your tech magician – except instead of pulling rabbits out of hats, I pull apps out of code (and occasionally, out of thin air). Let's build something awesome together – no magic wand required, just good old-fashioned coding!"

  • Portfolio Section:

    • Add links to your GitHub repositories (Don't be cheap on the Readme.md file).

    • Showcase live projects (use platforms like Netlify, Vercel or Heroku for deployment).

    • Add Gifs, Videos, images and any media of your project.

  • Skill Tests: Many freelancing platforms offer skill assessments. Take these to boost your profile's credibility.

3. Showcase Your Skills

  • Portfolio Website:

    • Create a personal portfolio website using free tools like GitHub Pages.

    • Include a bio, project descriptions, and contact information.

  • Contribute to Open Source (we will talk later on how to start in Open source):

    • Join GitHub communities or organizations where you can contribute.

    • This demonstrates collaboration and practical experience.

  • LinkedIn and Social Media:

    • Optimize your LinkedIn profile with detailed project descriptions, skills, and a professional summary.

    • Share articles, code snippets, or tutorials to gain visibility.

4. Get Your First Customer

  • Start Small:

    • Look for beginner-friendly gigs, even if they pay less. Focus on gaining experience and building a track record.
  • Send Custom Proposals:

    • Read the client's requirements thoroughly and personalize your proposals.

    • Highlight relevant experience or projects that solve their problems.

  • Offer a Discount or Free Trial:

    • To build trust, offer a discounted rate or a sample of your work for free.

5. Deliver Quality Work

  • Overcommunicate: Keep clients updated about your progress.

  • Meet Deadlines: Deliver your work on time or earlier.

  • Exceed Expectations: Add small extras that delight the client, like additional features or better design.

6. Gather Testimonials

  • After completing projects, ask clients for reviews or recommendations. Positive feedback is crucial for attracting future clients.

7. Upskill and Specialize

  • Once you've gained some experience, specialize in a niche like e-commerce websites, mobile app development, or automation. This makes your profile stand out among competitors.

Sample Steps to Land a First Gig

  1. Find a beginner-friendly project: Search for "simple website development" or "basic Python script."

  2. Craft a custom proposal:

    "Hi [Client's Name],
    I saw your project for creating a simple website. I have experience building responsive websites, and I’d love to help you with this. Here’s an example of my work: [Link]. Let me know your requirements, and I’ll make sure to deliver on time!"

  3. Follow up: If you don’t hear back in 2-3 days, politely follow up.

Key Points for Success

  • Be patient; landing the first gig takes time.

  • Continuously learn and improve.

  • Network with other freelancers to learn from their experiences.

Projects.

Building things is how you actually learn your craft and showcase how good are you, it also what makes your CV shines among the others.

There are 4 ways to get project ideas to fill your portofolio:

1. Monkey See Monkey do

Just follow a course's code or copy someone else's code --> I highly advise AGAINST this as you cheat and hurt yourself and don't actually learn something.

  1. Good all boring stuff

Do mundane projects like Todo list or Calculator --> Put yourself in the Recruiter's shoes, why would they hire someone who wrote such a simple project. I know it isn't simple when you first did it but it is not a CV worthy project.

  1. Solopreneurship

Which is one of my favorite things, basically you build a website, mobile app or a tool that helps you solve something that you actually need.

Like for example, as you are reading these lines, you need a job, how about you build a webscrapper that auto fills 100 positions that matches your CV, or create a software that tailors the LaTeX of a 3 Pages long CV with all of your skills into 1 page CV that matches exactly every job.

How about an extention that removes NSFW pics from every website, an extension that shows nothing but cute puppy dogs videos on Youtube, etc ..

Build something that you can use, it is good for 3 reasons:

  1. You will learn a lot about the language, framework, your own style of work and Software Life Cycle.

  2. You will add a unique original thought provoking project on your resume.

  3. How knows? If this idea took off you will be a solopreneur and begin your startup.

Marc Lou is one of the pioneers in this field, I recommend watching his videos and reading his newsletter, follow him on twitter and follow the people he follows.

Also Pieter Levels is pretty good, watch his talk and podcast with Lex Freedman talking about building solo startups.

For more in depth, check my article on How to become a solopreneur

  1. Code Crafters (not paid promotion, I just like their idea)

Challenge yourself beyond implementing CRUD features. Build something that actually stimulates you. Recreate timeless software from scratch. Strengthen your fundamentals. Master your languages.

Code crafters teaches you how to build core softwares and services using the language that you are trying to learn.

You can build your own version of Git, Redis, Shell, SQLite, Grep, BitTorrent, HTTP Server, DNS Server

Every other month, they offer a challenge for you to build for free.

Even if you can't pay, you can try yourself and build your own Git and call it Splitz – Because you're always splitting and merging branches. Oops – For when you really didn't mean to commit that. BlameIt – Like Git Blame, but with extra guilt.

Ok, that's enough of jokes.

But seriously!! You will learn the internals of a tool, you will learn how to do it in your programming language and you will have an original project to put on your CV! And who know, maybe even improve on it. Just please don't put Twitter Clone on your CV, there are 10s of thousands of have that already, put it on Github, its fine, put only place unique complex challenging projects on your CV.


Here are my take on some projects that can be done where you will master your craft better and have a good place in the Resume

Backend Project ideas:

Here are 10 complex and unique backend project ideas designed to enhance your CV and demonstrate your skills:


1. Multi-Tenant SaaS Platform
  • Description: Build a Software-as-a-Service (SaaS) platform with multi-tenancy support, allowing multiple organizations to use the platform while keeping their data separate. Include features like role-based access control, organization-specific customizations, and usage analytics.

  • Tech Stack: Node.js/Express or Django, PostgreSQL, AWS Lambda, Redis for caching, Docker, Kubernetes.

2. Real-Time Analytics Dashboard
  • Description: Create a real-time analytics backend for visualizing user activity on a website or app. Implement WebSocket-based data streaming and store historical data in a time-series database.

  • Tech Stack: Python/FastAPI, InfluxDB, Kafka for message streaming, Celery for task processing, React (optional for the front end).

3. Intelligent API Gateway with Rate Limiting
  • Description: Build a smart API Gateway that not only handles rate limiting but also dynamically adjusts policies based on user behavior, request type, and resource usage.

  • Tech Stack: Node.js/Express, Redis for token bucket rate-limiting, gRPC, and Prometheus for monitoring.

4. AI-Powered Content Moderation System
  • Description: Design an API that moderates user-generated content (e.g., images, text, videos) using AI. Implement real-time decision-making and queue suspicious content for manual review.

  • Tech Stack: Python/FastAPI, TensorFlow, Celery, S3 for file storage, PostgreSQL.

5. Personal Knowledge Graph API
  • Description: Build an API for a personal knowledge graph that allows users to store, query, and visualize relationships between their data entities (e.g., people, projects, books).

  • Tech Stack: Neo4j, GraphQL, Node.js, Redis for caching, and Elasticsearch.

6. High-Frequency Trading Simulator
  • Description: Create a backend platform that simulates high-frequency trading. Include a virtual stock exchange, trading bots, and performance analytics.

  • Tech Stack: Go/Java, RabbitMQ for messaging, PostgreSQL for transactions, and TimescaleDB for trade analysis.

7. Cloud-Native Task Scheduling System
  • Description: Develop a distributed task scheduling system that supports cron jobs, retries, and priorities. Ensure it’s highly available and scalable.

  • Tech Stack: Python/Celery, Kubernetes for orchestration, Redis or RabbitMQ, MongoDB for task metadata, and Prometheus for monitoring.


Frontend Project ideas:


1. Collaborative Whiteboard App
  • Description: Create a real-time collaborative whiteboard where multiple users can draw, write, and brainstorm simultaneously. Include features like shape recognition, sticky notes, and exporting workspaces.

  • Tech Stack: ReactJS, WebRTC or Socket.IO for real-time updates, Canvas API for drawing, and Firebase for user authentication and session management.

2. Dynamic Resume Builder with AI Suggestions
  • Description: Build a resume builder where users can dynamically add sections and receive AI-generated suggestions for content. Include a real-time preview and export options (PDF/Word).

  • Tech Stack: ReactJS, Draft.js for rich text editing, OpenAI API for suggestions, and Puppeteer for PDF generation.

3. Customizable Workflow Builder
  • Description: Create a drag-and-drop workflow builder where users can create, edit, and visualize workflows or processes, complete with dependencies and notifications.

  • Tech Stack: ReactJS, React Flow or D3.js for drag-and-drop functionality, and Zustand for state management.

  • Examples: ActivePieces and Zapier.

4. 3D Product Customization Tool
  • Description: Develop a tool that allows users to customize 3D models of products (e.g., furniture, cars, or apparel) by changing colors, textures, or components.

  • Tech Stack: ReactJS, Three.js for 3D rendering, Material-UI for controls, and React Context for state management.

5. Virtual Tour Platform
  • Description: Build a platform for hosting virtual tours (e.g., real estate, museums). Allow users to navigate 360° views and explore points of interest.

  • Features: 360° panoramas, video walkthroughs, and map navigation.

  • Tech Stack: ReactJS, Three.js for rendering, React Router for navigation, and Firebase for media storage.

6. Decentralized Blogging Platform

  • Description: Develop a blogging platform where content is stored on a decentralized system, such as IPFS, ensuring censorship resistance.

  • Features: Rich text editing, content encryption, and user authentication with blockchain wallets.

  • Tech Stack: ReactJS, Draft.js for editing, IPFS for storage, and Metamask integration.

7. AI-Driven Recipe Recommendation System

  • Description: Build a platform where users input available ingredients, and the app suggests recipes using AI.

  • Features: Ingredient filtering, advanced recipe searches, and user ratings.

  • Tech Stack: ReactJS, OpenAI API for recipe suggestions, Firebase for authentication and storage, and Material-UI.

Open source

Contributing to open-source projects can provide numerous benefits, both professionally and personally:

1. Professional Growth

a. Strengthen Your Resume

  • Showcase Practical Experience: Open-source contributions demonstrate hands-on experience and the ability to work on real-world projects.

  • Highlight Collaboration: Contributing shows you can work in a collaborative environment, a highly valued skill in any job.

b. Develop In-Demand Skills

  • Technical Skills: Gain proficiency in programming, testing, debugging, and understanding complex codebases.

  • Tool Familiarity: Work with modern tools and workflows like Git, CI/CD pipelines, and containerization (e.g., Docker, Kubernetes).

  • Domain Knowledge: Dive deep into specific fields like machine learning, DevOps, or web development.

c. Networking Opportunities

  • Collaborate with Experts: Open-source projects often involve skilled developers and maintainers, providing opportunities to learn from them.

  • Build Connections: Networking with contributors and maintainers can lead to referrals, mentorships, or even job offers.

d. Open Career Opportunities

  • Many tech companies value open-source contributions and sometimes hire contributors for internal roles.

  • If you contribute to a widely-used project, you gain credibility as an expert in that domain.

2. Personal Development

a. Learn to Read and Write Quality Code

  • Code Reviews: Get feedback from experienced maintainers, which helps improve code quality.

  • Best Practices: Exposure to well-structured codebases and industry standards enhances your development skills.

b. Improve Problem-Solving Skills

  • Working on issues or features helps sharpen your ability to analyze and solve problems creatively.

c. Gain Confidence

  • Overcoming the initial challenge of contributing builds self-confidence in your abilities.

3. Collaborative Skills

a. Learn Teamwork

  • Gain experience working in distributed teams with contributors from around the world.

  • Understand workflows like pull requests, code reviews, and issue discussions.

b. Enhance Communication Skills

  • Writing clear documentation, comments, and commit messages improves your technical communication skills.

c. Experience Agile Practices

  • Many open-source projects follow agile methodologies, giving you exposure to real-world practices.

4. Building a Portfolio

  • Contributions are concrete evidence of your skills and experience, especially if you’re job hunting or freelancing.

  • Showcase your contributions on GitHub or other platforms to prove your capabilities to potential employers.

5. Exploring New Technologies

  • Experimentation: Try new tools, languages, and frameworks without the constraints of a corporate environment.

  • Keep Updated: Contributing to active projects ensures you stay up-to-date with the latest technologies and trends.

6. Gaining Recognition

  • Acknowledgment: Your name appears in commit histories, project documentation, and sometimes even in project credits.

  • Speaking Opportunities: As you grow, you may be invited to speak at meetups, conferences, or webinars about your contributions.

7. Helping Others

  • Contributing gives you the satisfaction of supporting a community or cause you care about.

  • It helps you develop a giving mindset, which is personally rewarding and professionally respected.

8. Build a Path to Leadership

  • Consistently contributing may lead to roles like project maintainer or core contributor, showcasing your leadership abilities.

  • It’s an excellent way to learn how to manage technical projects and mentor others.

9. Explore New Career Paths

  • Gain experience in different domains (e.g., DevOps, AI, front-end, etc.) to explore interests and potential career switches.

  • Transition from developer to roles like product manager or technical writer if you contribute to those areas in a project.

10. Start Your Own Projects

  • As you contribute, you’ll learn what makes a successful open-source project, enabling you to start and lead your own.

I realize all of this is easier said than done, so that's why I have broken it down here.

You can also leverage GSoC to identify open source projects.

Google Summer of Code

Google Summer of Code is a global, online program focused on bringing new contributors into open source software development. GSoC Contributors work with an open source organization on a 12+ week programming project under the guidance of mentors.

Essentially, if you are a student, and you are contributing for an open source project, you get paid for doing that during the summer :)

1. Understand What GSoC Is

  • Overview: GSoC is an annual program by Google that connects students and beginners with open-source organizations to work on a software development project.

  • Goals: It aims to promote open-source contributions while mentoring contributors to work on real-world codebases.

2. Check Eligibility

  • Age and Background: You must be 18+ and eligible to work in the country you reside in.

  • Beginner-Friendly: Since 2022, GSoC is open not just to students but also to newcomers to open-source development.

3. Timeline Awareness

  • Familiarize yourself with the official GSoC timeline (check GSoC’s official website).

  • Typical timeline:

    1. Organizations Announced (January-February): Open-source organizations release project ideas.

    2. Application Period (March-April): Participants submit proposals.

    3. Coding Period (May-August): Accepted participants work on their projects.

4. Select a Project/Organization

  • Explore Organizations: Google publishes a list of participating organizations on the GSoC website. Explore those that match your skills and interests.

  • Filter Based on Interest:

    • Programming languages you are proficient in (e.g., Python, Java, C++).

    • Domains you’re interested in (e.g., machine learning, DevOps, mobile development).

  • Review Project Ideas: Each organization provides a list of project ideas. Choose one that aligns with your skills or offers opportunities to learn.

5. Research the Organization

  • Visit the organization’s GitHub repository, website, and forums.

  • Look at:

    • Codebase: Understand the project structure and technologies used.

    • Issues and PRs: Check out open issues and recent pull requests to understand the development process.

    • Previous GSoC Projects: Read reports from past contributors to gain insight.

6. Build Your Skills

  • Learn the tech stack required for the project (e.g., Python, APIs, React, etc.).

  • Familiarize yourself with Git and GitHub workflows.

  • Practice reading and understanding open-source codebases.

7. Start Contributing

  • Join Communication Channels: Many organizations use Slack, Discord, or mailing lists for communication. Introduce yourself and express your interest.

  • Find Small Tasks: Start with "good first issues" or documentation improvements to understand the codebase and build rapport with the community.

  • Engage in Discussions: Participate in GitHub issues or forum discussions to show interest and learn about the project.

8. Draft Your Proposal

  • Purpose of the Proposal: The proposal is a detailed plan of what you aim to achieve during the program and how you’ll do it.

  • Structure:

    1. Title: A clear and concise project title.

    2. Synopsis: Brief overview of your project idea.

    3. Benefits to the Organization: Explain how your project will help the organization.

    4. Deliverables: Clearly list expected outputs.

    5. Technical Details: Dive into the implementation approach.

    6. Timeline: Divide your work into milestones.

    7. About You: Share relevant skills, experiences, and motivations.

  • Seek feedback on your proposal from mentors and community members before submission.

9. Stay Committed

  • Be Active: Regularly participate in discussions and showcase your enthusiasm.

  • Ask for Help: Don’t hesitate to ask questions; it shows you’re engaged and willing to learn.

  • Be Patient: It might take time to understand the codebase and earn trust in the community.

10. Submit Your Proposal

  • Carefully review the submission guidelines on the GSoC website.

  • Submit your proposal within the specified deadline and follow up with mentors if required.

11. During GSoC (If Selected)

  • Communicate Regularly: Maintain constant communication with your mentor.

  • Meet Deadlines: Stick to your proposed timeline and update your progress frequently.

  • Document Everything: Write clear documentation for the code you contribute.

12. If Not Selected

  • Don’t get discouraged! Contributing to open-source is a valuable learning experience on its own.

  • Use the feedback from your proposal to improve and try again next year.

Resources

  1. Official GSoC Website: https://summerofcode.withgoogle.com

  2. Proposals from Past GSoC Contributors: Search GitHub repositories or blogs.

  3. Open Source Platforms:

References

  1. My own Twitter thread

  2. Official GSoC Website.

  3. 97th Time is the Charm.

  4. How to get into big tech companies (while maintaining your mental health).

Did you find this article valuable?

Support Mostafa Mansour by becoming a sponsor. Any amount is appreciated!