Especialistas que nunca fizeram graduação...
Se for por hobby, para você, pode aprender no Youtube.
A questão
não é aprender fazer, precisa conhecer vários outros tópicos relacionados Se for para desenvolver projetos de verdade, eu recomendaria primeiro um curso técnico em Informática em escolas conceituadas, Senai, Senac, etc, depois fazer uma graduação, Engenharia da Computação ou Ciências da Computação e depois uma em Especialização prática em escolas conceituadas, Senai, Senac, etc na área de Desenvolvimento de Software ou Engenharia de Software.
Se eu fosse te contratar para ser Engenheira de Software na minha Staff, na entrevista, eu faria perguntas assim:
A - Como você implementaria um algoritmo de detecção de anomalias em logs de aplicação usando machine learning, integrando-o a um pipeline de CI/CD? Discuta desafios como falsos positivos, escalabilidade de dados e integração com ferramentas como Kubernetes ou AWS Lambda.
B - Analise os prós e contras de diferentes padrões de design de software para gerenciamento de estado em aplicações web reativas (por exemplo, Redux vs. MobX vs. Context API no React). Forneça um exemplo de código onde um padrão é mais apropriado que outro em um aplicativo de grande escala.
C - Em um contexto de DevOps, explique como você configuraria um pipeline de deploy automatizado para uma aplicação que requer zero-downtime, incluindo estratégias como blue-green deployment ou canary releases. Discuta ferramentas como Jenkins, GitHub Actions ou ArgoCD, e como lidar com rollbacks em caso de falhas.
D - Explique em detalhes como você projetaria um sistema distribuído escalável para gerenciar transações em tempo real em uma plataforma de e-commerce com milhões de usuários simultâneos, considerando aspectos como consistência de dados, tolerância a falhas e otimização de latência. Inclua trade-offs entre CAP theorem (Consistency, Availability, Partition tolerance).