O @maniero falou muito bem, mas eu vou dar meus 2 centavos: PROGRAMAR É DIFICL.
Sim voce precisa de matematica, sim voce precisa estudar muito, e junior é alguem que já tem experiencia. Não é um especialista, mas alguem que já sabe trabalhar. Quem não sabe nada ou quase nada é estagiario ou trainne.
Oq eu mais gosto do mundo da computação, é que o código não ta nem ai pra sua cor de pele, se voce veio da favela ou de alphaville, se voce tem faculdade ou não, se estudou em havard ou na uniesquina, o código não se importa. O código ta ali só esperando alguem competente resolver o problema.
Se voce estudar, se esforçar e fazer projetos vai ganhar xp, se for mais esperto vai tentar fazer pequenos trabalhos pra outras pessoas. Entrar em projetos open source, e o mais importante fazer networking.
A grande maioria das vagas que entrei foi por networking!
Faça as pessoas te conhecerem pela competencia, habilidade e boa convivencia (softskills).
E te garanto que não vai faltar trabalho. Seja em empresas, ou CLT, ou PJ, ou freelas.
Eu venho vivido assim há anos, e conheço gente que vive assim há décadas!