Mais uma vez recomendando um vídeo do canal Traversy Media no Youtube.
No vídeo de hoje ele tratou de um assunto que eu acho interessantíssimo e cabe bem aqui que é uma espécie de roadmap para se tornar um programador autodidata pensando em mercado.
Aqui autodidata é mais no sentido de tentar seguir esse caminho sem passar pelo ensino formal. Eu acho "autodidata" um termo ruim, pois mesmo depois de formado é necessário estudar por conta própria muita coisa já que a faculdade dá só a base, além do fato de você não aprender só mas aprender com conteúdo disponível pela comunidade ou por cursos livres, mas é o termo que mais se encaixa nesse caso.
O vídeo é este (em inglês):
Claro que o que ele aborda não é regra. Claro que dá pra conseguir emprego sem seguir todos os passos, mas quanto mais passos seguir mais aumentam suas chances de sucesso.
Um resumo do que ele aborda no vídeo:
1. Descubra seu objetivo.
Quer trabalhar para empresas grandes? Start up? Ser freelancer?
Quer trabalhar com web? Mobile? Data science? Jogos?
No que você é bom? Em matemática? Data science pode ser uma boa pedida. É bom em design? Web pode ser uma boa.
2. Escolha uma linguagem de programação.
De acordo com seu objetivo, escolha uma linguagem que mais se encaixa com ele.
Se vai para web, aprender HTML, CSS é "must have" antes de uma linguagem. Após isso pode aprender linguagens como JavaScript (usada tanto no client side quanto no server side), Python, Ruby, C#, Java...
Linguagens não são mais importantes que os fundamentos. Aprenda fundamentos antes de um framework web. Sabendo solidamente fundamentos fica mais fácil aprender novas linguagens.
3. Procure bibliografias e construa seu currículo.
Livros são bons para aprender fundamentos.
Documentação: melhor usada para referência e tirar dúvidas.
Sites diversos: W3Schools, MDN Web Docs.
Cursos em vídeo: Youtube (Traversy Media, Live de Python, Curso em Video), Udemy, Coursera, edX, Alura.
Bootcamps online: freeCodeCamp, CodeAcademy, Team Treehouse, Udacity.
Sites de desafios: Codewars, Exercism, URI Judge.
4. Ache uma comunidade.
É importante ter com quem conversar e aprender. Só os cursos não resolvem tudo. Eu mesmo já aprendi muito participando de conversas com pessoas muito mais experientes do que eu.
Ache um mentor se possível.
Ache uma comunidade online. Participe de meetups. Vai servir como aprendizado e networking.
5. Crie seus próprios projetos.
Seguir projetos de cursos é só metade da batalha.
Etapa na qual a maioria sente mais dificuldade e desiste.
Os projetos não precisam ser do zero. Pegue projetos de cursos e modifique o código. Crie um seu a partir de um projeto base. Adicione novas features, novas interações. Procure código de outras pessoas que já fizeram algo parecido com o que você quer fazer.
6. Crie seu próprio portfólio.
Crie um site com seus projetos. Mostre-se. É aqui que você tem mais chance de quebrar a barreira do diploma, mostrando do que você é capaz, mostrando o que você já fez.
7. Contribua em projetos open source.
Não é "obrigatório" mas participar de projetos open source vai trazer muita experiência em projetos colaborativos, vai trazer experiência para trabalhar em equipe.
Aprenda a usar o Github.
8. Crie uma presença online.
Crie uma conta no LinkedIn. Poste tutoriais lá, ou em outros sites.
Crie um canal no Youtube. Grave vídeos sobre programação.
Crie seu blog e poste tutoriais lá.
Quanto mais visível na web, melhor (foi assim que consegui meu primeiro freela

)
9. Aplique para vagas de emprego.
Prepare-se para entrevistas. Crie seu currículo. Aplique mesmo para vagas que requerem diploma. Não ache que essas vagas são inalcançáveis por não ter diploma. O "não" você já tem (só falta a humilhação

)