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.