Olá, obrigado pelo comentário, é muito bom ouvir de pessoas que já atuam na área. Entendi bem a sua sugestão de desenvolver softwares de escopo pequeno, mas surgiram algumas dúvidas relacionadas a melhor maneira de fazer isso. O que é interessante de se projetar? É melhor que se desenvolva um software (mesmo que de pequeno escopo) em grupo ou sozinho? Os projetos que vão ser desenvolvidos no curso já seguem um cronograma, mas como pensar em um projeto inovador para programar, mesmo que seja só para complementar meu portfólio? O que você considera mais importante para um Desenvolvedor Java dominar?

Não veja o que escrevo aqui como verdade absoluta ou coisa do tipo, infelizmente não existe uma fórmula pra isso ;)

O que é interessante de se projetar?

Faça um paralelo com as vagas que pretende se candidatar. Por exemplo, se a vaga é para desenvolvimento de web backend, foque em implementar uma web app simple: onde o usuário pode se cadastrar para depois fazer login e poder alterar os seus próprio dados, como seu nome e telefone. Nesse processo vc vai praticar vários conceitos que precisa dominar para trabalhar como backend. Veja bem, não estou falando de simplesmente copiar e colocar de um tutorial, mas escrever cada linha e entender completamente qual o propósito da mesma. Sem pressa, leve o seu tempo, faça bem feito algo que vc possa mostrar pra outro profissional e explicar cada componente com segurança.

É melhor que se desenvolva um software (mesmo que de pequeno escopo) em grupo ou sozinho?

Trabalhar em equipe é uma habilidade essencial. Mas acredito que nesse primeiro momento (vc está aprendendo as tecnologias) não é obrigatório fazer parte de uma equipe. Digo isso para que seja possível caminhar no seu tempo.

Como pensar em um projeto inovador para programar, mesmo que seja só para complementar meu portfólio?

Não precisa ser inovador. Lembra que vc não está criando um produto, vc está exercitando novas tecnologias. O importante é viver a experiência de utilizar tais ferramentas. E conforme avançar vc pode adicionar features mais complexas que te permitam exercitar mais ferramentas.

Por exemplo, depois de fazer um cadastro básico (CRUD) e login (autorização e autenticação), vc pode inventar pequenas features que vão te ajudar a aprender mais técnicas e ferramentas: preciso que a cada 10 minuntos seja enviado um email "olá mundo" para todos os usuário do meu sistema; preciso que os meus usuários possam trocar mensagens em tempo real; etc.

O que você considera mais importante para um Desenvolvedor Java dominar?

Isso varia muito dependendo do projeto. Minha sugestão é focar no básico nesse primeiro momento: domínio da linguagem (generics é essencial) e APIs básicas: listas, mapas, arquivos e threads.