Vou citar aqui as tecnologias/conceitos do meu dia a dia e + alguns por quais já passei, não tome por regra. Veja algumas vagas de empresas serias e se baseie por uma média delas, veja baseada no seu nivel, junior, pleno, senior. Não tenho conhecimento profundo em nenhum dos itens. Conheço mais de Java e spring, o restante precisa saber se virar e entender como funciona. Não fique ansioso ou ache que precisa saber essa lista toda. Já tenho uns 13 anos de experiencia com java.
segue a sopa de letrinhas:
- java 1.1 JVM Tunning + Garbage Colecion 1.2 Certificados, JKS. Cadei certificadora e Key
- spring 2.2 Jackson
- Hibernate
- Kafca
- AWS
- Observability 6.1. appdynamics 6.2 Logs - splunk 6.3 prometheus 6.4 grafana 6.5 logBack 6.6 fluentD 6.7 conceitos de Observabilidades. p99, Requestes por minuto, etc.
- Banco de dados sql e no-sql. 7.1 3FN's 7.2 conceitos de desnormalização
- Cache: Redis, HibernateCache e conceito
- Conceitos de Rest API e OpenApi
- Gateway
- Protocolo HTTP
- Oauthy, STS (security token system)
- Testes 13.1 testes de performace 13.2 Testes unitários (obrigatórios hoje em dia) 13.3 Testes funcionais (só o basico para o QA não ficar te devolvendo feature toda hora) 13.4 End to end. (só o basico para o QA não ficar te devolvendo feature toda hora) 13.5 Teste de contrato 13.6 Robot Framewok
- Code Quality: sonnarQube, fortify, OWASP
- Maven, artifactory. Jfrog.
- Docker (tem um video do deChamps que ele mostra como ele configura a maquina/projeto javascript. ele não fala de docker, mas monta o ambiente pra ter um feedback rapido. E em alguns casos o docker vai te ajudar muito nisso. Ter que subir a aplicação pro servidor para testar é um toma tempo imenso. Se cair em alguma situação que só tem como testar no servidor, use e abuse dos testes unitários e sobre ter a visão do todo. você não vai querer ficar fazendo tentativa e erro no servidor (mesmo no de DEV), isso toma muito tempo.)
- Git 17.1 gitHub 17.2 gitLab
- Deploy's
- CI/CD 19.1 gitHubActions 19.2 puppet (esse cara é raro de achar alguma empresa usando) 19.3 jenkins 19.4 estratégias de deploy e resiliciencia.
- boas praticas de programação, patterns e arquitetura.
No fim do dia, o que é mais valorisado em um dev é trabalho em equipe, capacidade de aprendizardo e resolução de problemas. Você tem que entender do negocio e saber como usar as ferramentas para resolver oproblema do negócio. Por isso você não precisar ter conhecimento profundo em tudo. só precisa saber que a chave de fenda é para parafusos e o martelo para pregos. Dessa forma quando surgir um problema de negócio pra resolver você sabe por qual caminho proceguir.
A tente sempre ter visibilidade do todo. você vai estar desenvolvendo um grão de area para compor a praia. Ter essa visão de onde sua soluçao se encaixa e o que ela resolve, vai te poupar de muita refatoração no futuro.
Espero que mais pessoas possam contribui mais por aqui.