Sorry, I am not here to rant but to discuss something.
I am Open Source Developer who also happens to study Computer Science Engineering in One Engineering College of India(I am at Final Year).
I have programmed few Open Source softwares from my own will, and they are quite popular and widely used. I have also learnt programming this way mostly programming them myself with my own interest.
But, I want to get a programming job by next year to sustain myself. I have applied to many places, many startups, many companies and so on. I have avoided top companies which ask leetcode problems because i am not so good at leetcoding.
I approached one company and gave me take away home problem. I spent hours on that problem trying to make it very good. Even though i did it well, they rejected me abruptly telling that I am not good. Ironically, they hired another person to whom I had told about the company and they had asked him same problem which they solved in exact way i had solved before (also,i had told them about problem).
Another company calls for the interview, then when interview is over tells me that No suitable roles are available.
Another company gives me Take away home problem and doesn't reply after i submitted my solution.
And there are many other companies to which I have applied. Some responded, some didn't but I didn't even get any success.
I am hopeless right now because My Job Search is yielding no results and also because I have received lot of rejections. I have invested hours building the project they ask and they reject me and now I feel that I have wasted my time too. I don't think I am skill-less too. I am totally confused, HNers, and I feel hopeless.
Regarding the skills, I know Backend Development in Java,Go , Frontend Development in React, Svelte(this is my fave), also Vue.I also know few other tech like Postgres, Redis. Plus, I have also developed Open Source Android App in the past and know basic Kotlin. Now, I am studying Rust too, having done few personal projects(axum is my favourite web framework).
Anyway, If you have any suggestions, please tell me.
Leetcode is the only thing that gave me the best bang for the buck. I literally tripled my salary (now $300k, USA) in 4 years because of Leetcode. I was hesitant to do Leetcode at first.
As for rejection, just keep going at it, and eventually you'll develop a thick skin.
Btw, I was rejected 9 times from programming bootcamps when I first started learning programming. I got rejected by Google 4 times, Amazon 3 times, Facebook 2 times, Uber 2 times, etc.
I don't work at any of the big tech or unicorns right now, and boy I'm glad I don't. I work at a private investment firm (still doing software). Better problems, better environment.
From not knowing that string (in JS) is immutable, to $300k/year.
Thank you Leetcode.
Time to take a slice of humble pie and learn to leetcode. Everyone sucks at leetcode. It is like calculus and the only way to learn is to do problems over and over again.
Check out neetcode.io, it has the 75 list + a 150 question list. Don’t cram it, spread out practice by doing a bit everyday. Repetition and consistency are key. Once it clicks, you will have a much easier time finding good opportunities and you will not have to sink your time and effort into take homes.
Your process sounds broken, which you're handling the wrong way and retrenching into arrogance/entitlement.
Here are some thoughts:
1. Look at the perspective of the hiring firm. It's a red flag and not realistic to say you know 5 languages/frameworks as a 21 year old with no experience. Be humble.
2. Stop limiting your opportunities. You're competing for a entry-level jobs and frankly, the vast majority will screen with leetcode/aptitude puzzles because your competitors are junior/inexperienced with software too.
3. Don't get over-invested in a rejection or no follow-up. Do a post-mortem to get better and move on.
First of all, I'm sure that the many people using your open source software are thankful for the fact you produced it and are maintaining it. It takes skills first to notice a problem, then solve it.
Perhaps you can contact the people who are using this software and turn them into a business. You have a fit and it could possibly be fulfilling and lucrative. If you want to discuss this further, let's, but first I'll reply to your main issue.
I'm sure that during the countless days you've spent on these projects, several things sometimes happen. Maybe when you push code there's an error, perhaps your internet connection broke; perhaps there was a typo in your command; perhaps there was a snafu with your SSH keys; perhaps; perhaps.
In other words, there is a gap between your desired state and your actual state. You'll consider this gap an error and set to pinpoint the factors at play, and take action and measures remove it. When you can't, you're faced with the definition of a problem. You then systematically iterate and experiment to solve that problem, i.e: figure out how to get from an actual state to the desired state.
Your message here is one step to solve your problem.
One other step is to amortize the cost you paid and have some return. There is no point in an experiment from which you get no data. You applied and your application was declined, you might as well get a return and ask for data/feedback.
For example, writing here has allowed me to notice something, and my initial remark is that improving your writing will certainly help.
You can for example ask politely the companies you applied at for feedback: real reasons and and advice from everyone involved in the decision. If they're uncomfortable or don't have the time sending you an email (these take a lot of time is they are by definition specific to the candidate and can span multiple pages involving every aspect with resources and links and pointers), you can ask for a quick phone call.
Get data from your experiment.
Second, this is a numbers + approach task.
When you are working to succeed at something, your outcome is proportional to the number of experiments/attempts/trials, the data you get, and the tweaks you operate on your system.
This is similar to selling things. You attempt to sell, it doesn't work, you try again, it doesn't work, perhaps you slightly change the people you try to sell to, perhaps you change your pitch, perhaps you paint the product in an appropriate light, perhaps you change the product.
You try something, you look at the output, you try again with another company with the same approach, or you tweak your approach. But you have to get data.
Iteration number, iteration time/effort. But you have to get data.
You can't successfully cook something in an oven if you don't have information on the temperature and set it, and don't look at the timer, and don't even know what you put in the oven to cook in the first place.
So, experiment and get data.
Third: you don't have a job for now, so looking for a job is your job now. It is a part-time job given that you are a student, your main job and you have other obligations, but be systematic and consistent about it. Every day, block one or two hours to apply for jobs. Nothing else. And do it in that block of time, not sporadically or randomly or whimsically throughout the day.
Then get data and tweak.
Let's talk next week and let me know how it goes. My contact information is in my profile.