Just a few disclaimers before I get into this widely controversial, extensive topic. I am speaking purely on my experience – and a handful of my peers – navigating the application process for technical roles (specifically software engineering and software engineering adjacent roles). I do not claim to know the ins and outs of the application process nor am I trying to sell some groundbreaking advice that you cannot find easily online. I am simply a recent graduate reflecting on my job-search journey with strong opinions on why I think applying in general to internships and full-time roles was useless.
Before diving deep into my job search, it's necessary to provide some much needed context about my academic background(including institution, clubs & activities, etc), professional experience, personal projects, and technical interests. Ideally, after reading this section you will be able to visualize me as a candidate; in simple terms, what I bring to the table.
I am a Computer Science graduate from the University of California, Davis where I focused heavily on building intuition around well-defined optimized systems and machine learning & AI applications. I participated in numerous on-campus initiatives to hone my skills and connect with likeminded classmates, ultimately finding my place in CodeLab, a software and design agency where students can work on quarter-long, cross-functional projects with industry clients. At CodeLab, I worked in a wide variety of technical roles including but not limited to software developer, product manager, and vice president of technology. In my most recent role, I learned numerous techniques to improve organization, growth, hiring efficiency, and candidate benchmarking – I really enjoyed being VP 😎.
Over the course of my professional experience, I primarily focused on developing my full-stack software engineering skills while applying ML/AI techniques to enable creativity, enhance productivity, and automate tedious workflows. My goal was to build robust multi-tiered systems to tackle complex tasks and handle peak-usage/scale to meet user demand; all wrapped within a simple, intuitive user experience. I cofounded two acquired AI startups, worked with over ten freelance clients, completed two SWE internships, and unofficially released a couple applied math, ML and AI research papers. Now, I work at Amazon as a Software Development Engineer building scalable and robust compliance systems handling billions of transactions every month.
I've tried to summarize my experience as much as possible but if you want a more detailed understanding of my experience you can check out rasooly.dev/experience.
We've all heard the ongoing debate of quality vs quantity (QvQ) and witnessed the two in action in almost every aspect of our life or industry. You must write at least 1500 words for this writing assignment or 10 perfect pushups with proper form beats 100 subpar pushups with improper form or my favorite You need to just keep applying over and over again till something sticks. Funny enough, I even remember debating a classmate in high school about whether quality or quantity matters more on the AP Language and Composition exam. I still hold the same position I held in high school, quality beats quantity any day of the week. Just a little petty side note to my fellow high school classmate, not that he will ever read this, I still got a five on my AP exam with only four paragraphs. HOLD THIS L.
To contextualize QvQ when applying, as a SWE internship/new-grad candidate you can either submit a few hundred general applications as quickly as you can or submit around 10-30 (or less…) tailored, thoughtful applications with a referral. In most cases, unless you are some cracked developer with a reasonable amount of experience, the quantity method of applying to hundreds of jobs will not be effective. In my sophomore year I applied to over 300 roles with no success getting an internship let alone an interview so I decided to work on my own start-ups and level up by learning ML. My junior year was no different, I applied to more than 1500 roles and only got waitlisted at Amazon after passing their interview process – later rejected :(. I was miserable and decided to reach out to a few friends about helping me find an internship and was able to secure a role at an early stage start-up. After 1800+ applications, cover letter included btw and tailored AI assisted responses to each Why us? question, I was definitely not going to go insane repeating the same process expecting some new outcome. Whoever gave me the advice of applying brainlessly like that: I am never trusting you again. 😂
A hard but necessary truth you must accept: Employers/Recruiters are not looking for an amazing developer, they are looking for someone firstly they vibe with and fits the job description to a tee. Now obviously I'm not applying this truth to every single scenario but in most cases my previous assertion applies. You need to maximize your chances as much as possible by tailoring your resume to the job description/company and networking with existing employees for referrals. You might be asking "how?" so I'll cover all the details so you don't have to seek it out yourself.
Before we start, you need to throw your ego out the window. I am not here to put you down or devalue your experience, but you need to understand that there will always be someone else who is a more attractive applicant than you. Someone who always has a better resume than you, a better portfolio, better professional experience, a better school, etc. If you want to improve your odds, you are going to need any advantage you can get.
Let's face it: AI will kick your ass in any basic software development task. Gone are the days where you are just some full-stack developer who can implement a basic dashboard that pulls data from your Postgres database. You need to find a sophisticated field you are heavily passionate about; a field you can flourish in and continue developing your skills. In today's technical landscape, you can do almost anything: Cybersecurity, Big Data, Infrastructure, Applied ML, Product, Embedded — to name a few. If you focus your efforts into one area you will reduce the breadth of topics you need to learn, dive deep into many sector-specific, in-demand skills and most importantly lower your potential for burnout.
I get it.. You want to be that one engineer who wears multiple hats and jumps codebase to codebase getting tasks done. The reality is, other than early-stage startups, when you are hired you will be assigned to building and maintaining one service, every single day. Similarly when you are interviewed/screened, they will be checking if you match the job description and can do the role they need you to do. Stop dipping your feet into new waters and instead find one big lake to swim in. I know.. I suck at analogies. But the point is, find a field you are interested in and has some level of demand. Don't be that guy with 50+ frameworks on his resume. ← I was this guy for a long time.
Once you've found your sector, the next crucial step is figuring out what makes you different from the other thousand candidates applying for the same role. Here's a reality check: Everyone applying has a degree, everyone has done projects, and everyone claims they're "passionate about technology." You need something that makes recruiters remember you after screening fifty identical resumes.
Your personal brand is not some corporate buzzword — it's the one thing you want to be known for in your field. Are you the ML engineer who builds ridiculously fast inference pipelines? The frontend developer who obsesses over accessibility? The infrastructure engineer who can debug production issues in their sleep? Whatever it is, own it and make sure everyone knows it.
I learned this the hard way. For the longest time, I was just "another full-stack developer who knows React and Python." Boring. Forgettable. It wasn't until I started positioning myself as someone who specifically focuses on applied AI for productivity and automation that opportunities started coming my way. Suddenly, people knew what to reach out to me for. Recruiters had a clear reason to remember my application. Connections could easily refer me because they knew my thing.
Here's how you build yours: Pick one or two skills in your sector that you genuinely enjoy and go deep. I'm talking write blog posts, build side projects that showcase it, contribute to open source in that area, speak about it at meetups — hell, even tweet about it if that's your style. The goal is to make it so obvious what your specialty is that when someone thinks about that skill, they think about you.
And please, for the love of everything good, be authentic about it. Don't brand yourself as a "blockchain enthusiast" if you couldn't care less about crypto. Don't call yourself a "DevOps guru" if you've only touched Docker once. Recruiters can smell the BS from a mile away, and more importantly, you'll burn out trying to maintain a facade you don't care about.
Market yourself strategically. Update your LinkedIn headline to reflect your brand. Make sure your resume clearly communicates this specialization. When you network, introduce yourself with your brand in mind: "Hey, I'm [Your Name], I build scalable data pipelines for ML applications" is infinitely better than "Hey, I'm a software engineer." Give people something to remember, something to refer you for, something that sets you apart from the sea of generic applicants.
Bottom line: Find your thing, own it, and make damn sure everyone knows about it. That's your personal brand, and that's what's going to get you noticed.
A resume is your first and only attempt to gain consideration for a role — you need to make sure your resume is flawless. The beauty in resumes is simplicity: an ATS scannable, standard serif or sans-serif 10-12pt font, black and white resume with excellent visual hierarchy. Please do not reinvent the wheel and build one from scratch in Canva, there are plenty of software engineering specific Latex templates you can modify and tailor to your needs. Here are two templates I recommend getting started with; you can always use Claude or GPT later to modify them and tailor them to your needs:
I'm pretty sure you've googled or heard the average screen time for resume being 7 seconds: Is this true? The short answer is Yes. A recruiter will usually initially screen your resume very quickly to find keywords or skills that match the job description. If they do not find what they are looking for they will instantly yeet your resume out of existence. However, I'd like to rather think of the 7-second window as time to hook the recruiter into you as an applicant. In reality, a recruiter will probably spend more than 7 seconds looking at your resume if they feel you match the requirements really well and could be a good fit. Hence, when you are designing your resume, really ask yourself: How can I hook the recruiter in? What can I add to my resume to make me an attractive applicant?
When I tell people about this concept of selective filling, I remember first setting up my LinkedIn as a high school student. I had zero experience — maybe only a short lived programming project — so I decided to fill my LinkedIn with my cashier job at a Gas company. An industry expert offered to help me out and started by critiquing my LinkedIn account. He instantly told me, "No one cares about how you managed cigarette inventory, remove it." I felt pretty offended when he first told me this, I thought to myself: What is this guy talking about? What the fuck am I supposed to put in place of it? I have literally ZERO experience. I kept my cashier job on there anyways and instead added a programmer-specific role to compliment it. I realized later he was right: No one cares you were a barista at some random coffee shop. The recruiter will not empathize with your come-up or legitimize the inventory skills you gained on the job. Keeping it on your resume will only do more harm than good.
Selective filling is when you critically assess which relevant skills, experience, or technical projects build your reputation as a well-rounded candidate in your chosen sector. For instance, if you are applying for ML research positions you primarily want to include high-impact ML-related research roles, published ML works, and industry-applicable ML techniques/skills. High impact usually entails an opportunity where you contributed meaningfully to an initiative that serviced a client or industry. I won't just leave you with an ambiguous definition LOL: An instance of this would be something like building a fitness app that increased 1000+ gym-goers' gains by at least 23%. If you are trying to appeal to productivity mobile software engineering roles, this shows recruiters your ability to spot a problem affecting many mobile users and roll out an application with a reasonable solution which can later be profitable.
If you try selective filling and find yourself lacking resume material: You are simply not yet qualified for the role you are applying for. It isn't the end of the world, there is still hope! My recommendation to you is to do more side projects or pick up more related unpaid or paid positions to learn more about your given sector. I know, unpaid sucks, but that is the price you need to pay sometimes to get experience you otherwise would not have the opportunity to. ← Pun unintended btw LOL
Now obviously, there is so much more depth I could go into resume's and how to structure your experience bullet points and project descriptions but this is not directly tied to the main topic. You can find tons of online resources on how to structure your resume. I personally recommend taking a look at Reddit in addition to recruitment articles — reputable Reddit threads are a great way to validate information you find online. If you go to a good university, I'd recommend visiting their career center and getting career-specific advice on your resume. If you go to Shoehorn University in butt-fuck Alabama, do not bother getting advice from there. You should be applying with a cover letter: Spending a couple hours making a good cover letter template that accurately conveys 2-3 of your best skills/experiences will exponentially boost your chances. Bottom-line is that there are tons of resources you can find if you open your eyes a bit and LOOK!
The biggest advantage you can have when applying is a referral! You are a stranger.. No one is gonna magically trust you will be a promising candidate. Imagine you wanted to find someone to do a job and pay them 100k+, you won't settle for any random Joe you find on the street. You'll probably trust your friend, Mahmoud, who boasts about his Georgia Tech graduate friend who runs some random marketing agency with him.
To be honest, not really. If you have like 50k+ LinkedIn followers, MAYBE just maybe Andy from Amazon will respond. Cold messaging is reaching out to out-of-network individuals you have no prior relationship with to exchange insights, pitch a product, or cough ask for a referral.
The caveat with cold messaging — and connecting in general — is that you need to build trust with your contact. It's simply just too hard to start building and sustaining a connection that starts online. I'm not saying it's impossible or unrealistic to build a couple connections but most of your connections should originate or come from a different source.
Warm connections are arguably your strongest advantage when asking for referrals or finding opportunities. Whether it's a family member, a friend, a work colleague, or some random manager you met at a professional networking event. Hell, it can also be some of your university alumni who you haven't met but share some interests with on LinkedIn. Leveraging these connections is necessary to secure your desired role.
If you complain about not having enough warm connections, you are simply not socializing with the right crowd. These connections should not be purely "professional" relationships: You should make an extra effort to retain these connections by going out and sharing mutual interests. Finding similar interests between you and the person you want to connect with will make your life 10x easier. I get it, you want to get that internship or that full time job, but these people have talked to 10 people about the same subject. They are willing to help out.. but they will be more willing to help out someone they see as a friend or close acquaintance. Find someone who will empathize with your journey.. your situation.. your goals.. your roots.
If you can afford to buy them lunch or coffee, do it. You will not regret investing a little bit of money for everlasting gratefulness. Check in every few weeks, even if it's just for 10 minutes — don't forget them, they will not forget you. Bring up your struggles trying to find a job and tell them what you have tried doing. Ask for their advice and see what they say. Nine times out of ten they will offer really good insight and a REFERRAL.
Lastly and most importantly, when you are connecting you need to be strategic. Pick individuals who are in a position you want to be. By position, I don't mean your respective area of expertise but rather their job status — your desired role, experience, and compensation in 2, 4, 8 years time. People who have done it, will know what to tell you to do it too. Do not trust some out-of-touch professor who hasn't been employed in 10+ years and worked only as a junior engineer. As Theo always says, "Those who can, do; those who can't, teach." No advice is better than bad advice — trust me on this one. 😅
Go to LinkedIn, search your desired role, and filter by your school. Search for professional events — that will have reasonable attendance — on Google or on big company websites. In your local communities, find people who are in a role you want to be in or know people that are. If you are not in a productive community, you are looking in the wrong community: Find another one. Surround yourself with people who will lift you up, not put you down. Hanging out with smart, successful people DOES work. Do not be afraid to ask for help or advice.
An essential part of applying that is almost always forgotten is knowing your shit! Do not stop doing Leetcode.. Do not stop learning about industry-specific frameworks like Spring or React.. Do not fall behind doom-applying and start preparing a couple days before your interview. The interview process moves quick and you will not have enough time — you need to review before the interview, not learn. I hate Leetcode too, but until we find a new way to benchmark skills, you have to grind Neetcode 150.
Getting rejected sucks. It hurts less than getting rejected by your crush but still hurts, especially if you applied to ~1,500 jobs like I did. The amount of times I've gotten rejected is a testament that persistence done right will get you that job you want so bad. Do not let some automated, AI-generated rejection email make you feel less about yourself or your experience. Keep pushing and don't lose hope. You got this 💪