CodeGym /Cursos /JAVA 25 SELF /A jornada do programador

A jornada do programador

JAVA 25 SELF
Nível 7 , Lição 6
Disponível

1. Trilha de carreira

Programadores também possuem graduações conforme a qualificação. Antigamente usavam-se termos como “coder”, “programador” e “hacker”, mas hoje todos adotaram as denominações em inglês do mercado de TI norte-americano.

Para desenvolvedores há 6 graduações principais:

  • Intern Software Engineer
  • Junior Software Engineer
  • Middle Software Engineer
  • Senior Software Engineer
  • TechLead
  • Principal Software Engineer

De país para país e até de empresa para empresa alguns parâmetros podem variar, mas a essência é mais ou menos a seguinte:

  • 🌱 Intern Software Engineer — são estagiários. Estão no processo de aprender programação, não têm experiência comercial nem experiência em projetos grandes. Normalmente trabalham sob a supervisão de colegas mais experientes. Sua principal tarefa no trabalho é estudar a base de código e os fundamentos de desenvolvimento de software, executando tarefas simples de codificação e participando de testes.
  • 🐣 Junior Software Engineer — já são programadores, mas sem experiência comercial séria ou com menos de um ano de experiência. Trabalham sob a orientação de desenvolvedores mais experientes, implementando partes de projetos e participando de ciclos de code review. Esta etapa da carreira é focada em aprofundar habilidades técnicas e entender as tarefas do projeto.
  • 🦾 Middle Software Engineer (ou simplesmente Software Engineer): têm mais autonomia na tomada de decisões técnicas, respondem por partes significativas do projeto, começam a orientar colegas menos experientes e participam mais ativamente das discussões de arquitetura. Normalmente têm de 2–5 anos de experiência prática.
  • 🧑‍🔬 Senior Software Engineer: são responsáveis por projetar e implementar sistemas complexos, fornecem mentoria e liderança dentro do time, participam do planejamento estratégico dos projetos e frequentemente representam a equipe em conversas com clientes e outras partes interessadas. Normalmente têm de 5–10 anos de experiência.
  • 🧠 TechLead: é responsável pelo resultado técnico final do projeto, lidera o desenvolvimento, resolve as tarefas mais complexas, assegura a conformidade com os padrões técnicos e coordena as atividades dos desenvolvedores.
  • 🏆 Principal Software Engineer: atua no nível técnico mais alto, frequentemente participa da definição da estratégia técnica da empresa, do desenvolvimento de soluções inovadoras e do estabelecimento de padrões técnicos; serve como principal mentor para líderes técnicos e é um especialista-chave em questões técnicas complexas.

Curiosidade. Em grandes empresas podem existir papéis e subpapéis adicionais. Por exemplo, no Google há os seguintes papéis:

  • Staff Software Engineer (L6): exerce influência significativa sobre a política técnica do seu departamento.
  • Senior Staff Software Engineer (L7): trabalha em projetos de grande escala e complexidade, definindo a direção estratégica do desenvolvimento tecnológico na empresa.

2. Produtos no estilo Lego

Há muito tempo (em 1975), Niklaus Wirth, criador da linguagem Pascal, escreveu o livro “Algoritmos + Estruturas de Dados = Programas”. De lá para cá, muita coisa mudou. O produto de software moderno não é o mesmo de 10 anos atrás, e muito menos o de 20 anos atrás. Nem vale falar de 1975 — já se passaram 50 anos ⏳

O programador moderno não escreve mais programas manualmente. Ele(a) os monta a partir de peças prontas (bibliotecas) e escreve o código que ajuda essas peças a interagir 🧩. Produtos de software modernos podem consistir de dezenas e centenas de programas. Alguns são executados no computador do usuário e em seus dispositivos móveis; a maior parte — em servidores nos data centers.

Muitos desses programas, como o servidor web ou o banco de dados, já estão escritos. Basta configurá-los corretamente para que funcionem como esperado. Embora, com o tempo, o processo de configuração possa se tornar tão complexo que praticamente vira desenvolvimento. 🤦‍♂️

Programadores vivem lutando consigo mesmos. Em vez de voltar a escrever código parecido em programas diferentes, eles escrevem bibliotecas que podem ser configuradas (ajustadas) para suas necessidades e depois simplesmente as conectam em todos os pontos necessários.

Nos últimos 20 anos, programadores escreveram muitas bibliotecas, frameworks e repositórios de código aberto. São literalmente milhões. E hoje escrever todo o código do zero é considerado má prática. Em vez disso, deve-se montar o programa com soluções de qualidade e comprovadas — bibliotecas, frameworks, pacotes e módulos 🧱

Mas até essa abordagem já está ficando ultrapassada. A tendência dos últimos 10 anos é a migração para a nuvem — grandes data centers que fornecem aos seus programas tudo de que precisam. Quer um banco de dados? Temos centenas à sua escolha. Quer um servidor web raro e único — também temos! Qualquer capricho, pelo seu dinheiro.

3. “Eu sou engenheiro” © Elon Musk

img

Não é mais necessário escrever coisas complexas e entediantes por conta própria. Se você precisa de alguma funcionalidade — já existem bibliotecas e frameworks prontos para isso. Sua tarefa: a) saber que eles existem; b) encontrar uma opção adequada (muitas vezes há vários análogos, com qualidades e nuances diferentes); c) entender como integrá-la ao seu projeto 🎓

O trabalho ficou ainda mais interessante. Agora você pode adicionar novas funcionalidades ao produto 10 vezes mais rápido. Há 30 anos, se você precisava de um servidor web, você o escrevia do zero. Há 20 anos — você comprava, instalava e configurava. E agora — você simplesmente entra no portal de nuvem do Azure ou da AWS e ativa o serviço necessário 🌐

Isso, aliás, é uma das razões da popularidade da linguagem Java. Ela é ótima não só para o desenvolvimento de grandes soluções corporativas, mas também para “colar” diferentes componentes — por meio do rico ecossistema da JVM há integrações praticamente com qualquer coisa: bancos de dados, microsserviços, APIs REST, sistemas de mensagens, serviços de nuvem, plataformas analíticas.

Consequentemente, a profissão Java Software Engineer há muito se transformou em Fullstack Java Developer. Para o desenvolvedor moderno é importante entender como funciona um banco de dados (PostgreSQL, MySQL/MariaDB, MongoDB etc.) para construir a interação de forma adequada. É preciso entender como funciona o frontend (HTML, CSS, JavaScript/TypeScript, React, Angular) para configurar a comunicação com a parte de backend em Java (Spring Boot, Micronaut, Quarkus). E, claro, sem Docker hoje não dá — já é o padrão do setor 🐳.

O desenvolvimento moderno é muito diferente do que era há 20 anos. O programador escreve código por não mais que 50% do tempo — o resto vai para leitura de documentação, estudo de novas tecnologias, projeto/arquitetura e trabalho em equipe em reuniões. Programadores solitários já são mais uma exceção.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION