I think your experience is typical... the best way to get a job is via a network referral because someone will actually look at your resume. It's not fair and almost corrupt in away - because if you're an outsider (not same region, alma mater, religion or class / cycles etc) then you end up in a pile.
It's shocking to know that recruiters / HR typically spend 6-7 seconds [0] reviewing resumes on the initial pass. This means that for you to get thier attention for a second look requires you crafting your cover letter and resume as a marketing piece to showcase your skills.
There are countless guides [0] on how to make your resume standout - something most enginners / developers think it's uncessary.
For me I look for; 1) Targeted Application - means the user actually read the job description and not simply spraying resume and generic cover letter to ANY open positions worldwide. 2) Resume format - sending a Word document is ok but please use PDF if possible - formatting and fonts are consitent for everyone and might indicate you don't care 3) Include GitHub/GitLab profile or personal site (extended resume link) - someone checking your profile means sunken cost in terms of time and always guarantees you a second / third look for sure! 4) Email address you use on your application (sexylegs@aol.com might be OG address to you but someone else might judge you for using it)
Lastly, there are things you cannot control; I saw someone mention on a video recently that putting the year you graduated can lead to age discrimination (ouch!). It's also well documented that the response rate is affected by your name [1] - which is truly heartbreaking [2]. I hope blind resumes becomes a thing.
[0] - https://www.indeed.com/career-advice/resumes-cover-letters/h...
[1] - https://hbswk.hbs.edu/item/minorities-who-whiten-job-resumes...
[2] - Had someone apply once with a pseudo name which he also used online. It was shocking to find out later that it wasn't his real name but I understood why.