Vamos lá, mais uma dessas, parece que sempre terão algumas por dia. Comece lendo a última que eu respondi porque tem algo bem importante lá.
Existe uma altíssima demanda por programadores júnior. Pode até ser que os anúncios não peçam porque grande parte das pessoas que acham que são juniores na verdade não são e se candidatam para essas vagas. Depois que a pessoa quebra essa barreira ela não liga mais para os anúncios, ela começa entender o mercado como ele realmente é.
Só para deixar claro, quem sabe quase nada e não tem experiência não é júnior. Eu sei que eu não serei a pessoa mais popular por dizer isso, mas o primeiro passo para começar ir pra frente é entender isso e quem sabe parar de patinar.
Grande parte das empresas que dominam a programação, eventualmente sem fazer iso com maestria, mas tem que ir além de saber usar certas ferramentas, precisa ser um solucionador de problemas. Quem não tem isso, mesmo que de forma deficiente, não é júnior. Não é a linguagem que cada um sabe que faz ela conseguir vagas, é saber programar como um todo.
Até tem vagas para quem não atende bem esse critério, mas muitas não são assim.
É possível conseguir emprego até onde não tem vaga. Com tecnologias que raramente se vê um anúncio, é possível não arrumar com a linguagem com mais anûncios.
Tem que descobrir porque não consegue e atacar o problema. Sem saber o que faz recusarem você nas vagas não tem o que fazer. Descobrindo isso tem que criar uma agenda para ir resolvendo cada problema. Pode demorar, mas não tem jeito, tem que fazer. E não importa a linguagem. Ficar pulando de galho em galho pode até ser o problema.
Eu nunca me candidatei às vagas que eu tinha os requisitos. Não estou falando que deve mandar currículo a esmo, como já indiquei antes, mas tem que estar preparado. Sempre me contrataram sem ter os requisitos (nunca perdi uma vaga por questões técnicas) porque eu me preparei. Já contei aqui que já criaram vaga que não existia porque viram potencial em mim.
Muitas vagas possuem obstáculos artificiais só para testar se a pessoa consegue se virar, e a maioria não consegue. Se a pessoa não se vira com a própria vida, como ela vai criar soluções e por em código?
Tem que mostrar que é capaz. Já tem um Github bacana para mostrar tudo o que já fez? Hoje isso é fundamental. Consegue fazer testes técnicos e ir bem? Entende os conceitos e mecanismos, além da sintaxe de linguagem? Consegue montar algoritmos adequadamente? Tem capacidade de modelar um problema?
Depois de 3 anos, se tentou emprego várias vezes, já deveria ter percebido alguma coisa errada para corrigir. Talvez precise de ajuda profissional. Mas eu temo dizer isso porque também pode acabar caindo na mão de oportunista que não vai te entregar nada, ou nem seja possível fazer algo efetivo. O fato de ainda ser jovem, ao que parece, é um alento, porque tem tempo, e é normal quem é muito novo ter dificuldade geral.
O maior conselho é dominar o que faz. Não aceite saber só um pouco. Escolha bem suas referências, hoje o que mais tem na internet é informação errada, em todo lugar, em alguns mais que outros. Um dos fatores que mais vejo as pessoas patinarem é escolhendo conteúdo duvidoso, desses que "todo mundo" recomenda , mas quem tem experiência sabe que é ruim, mas se falar é "cancelado".
E a maior dica é pedir para quem te recusa dizer o que você pode fazer para estar melhor para a próxima tentativa. Nem sempre isso funciona mais. O politicamente correto andou matando isso. Dá medo falar para as pessoas quais são os defeitos dela. Tem departamento jurídico que proíbe fazer isso, porque tem empresa que é processada em consequência disso. O mundo tá ficando muito complicado.
E desejo que alcance seus objetivos, ainda mais se for com C# :D
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).