Um dia desses meu amigo Rannyeri veio falar comigo. Ele me propôs um tema muito legal que eu ainda não tinha abordado aqui no blog (pelo menos de forma direta).

Ele fez a seguinte pergunta: 

“Qual a maior diferença entre um programador pleno e um sênior?”

Iniciamos um papo e com isso surgiram algumas reflexões.

O que te faz um bom programador?

Quando pensamos em um bom programador, pensamos em um cara estilo Elliot Alderson do Mr. Robot, ou então Neo do Matrix. 

Um cara que conhece tudo sobre computador. Sabe sobre protocolos de rede, conhece várias linguagens de programação, conhece todas as brechas de segurança de um sistema.

Quando pensamos em um bom programador, pensamos em algo perto de um hacker.

E eu acho que essa imagem faz certo sentido.

Existem algumas profissões que são tão técnicas e tão complexas que é preciso existir uma certa paixão pelo tema. Essa paixão é necessária para que a pessoa se desenvolva como profissional. 

Medicina é um ótimo exemplo. O tema é tão profundo e tudo se renova tão rápido que se o cara não for apaixonado pelo assunto, com certeza ele vai sucumbir pelo caminho.

Programação é outro ótimo exemplo. É preciso ser curioso, é preciso ter um interesse forte e genuíno sobre o assunto para se tornar um ótimo programador. 

Como na medicina, a programação (ou tecnologia no geral) é um assunto muito profundo que exige muita dedicação.

Acredito que o interesse genuíno, ou a paixão pelo assunto, seja premissa para ser ser um bom programador.

Ser bom programador não significa ser bom profissional

Imagine um programador que seja muito bom. Ele conhece tudo sobre sua linguagem. Sabe como funciona o hardware de uma máquina, como funciona o kernel do linux, como funciona um protocolo de internet. 

Você pode pegar o problema mais difícil que encontrar e dar na mão desse cara que ele resolve. 

Mas imagine também que ele seja muito arrogante. Ele sabe muito e sabe que sabe muito. Ele não tem paciência para lidar com as pessoas que não têm o nível de conhecimento dele. Não tem paciência para lidar com o cliente “burro” que usa o sistema “de forma errada”. Por ser bom, ele se considera um gênio e todos a sua volta burros.

Eu, que tenho alguns anos de estrada, já topei com algumas pessoas assim ao longo da minha vida. Se você já tiver algum tempo de mercado, provavelmente também já se deparou com esse perfil.

Esse cara pode ser um bom programador. Com certeza ele NÃO é um bom profissional.

Meu amigo Renzo, em um dos episódios do seu ótimo podcast, fez o seguinte questionamento: Quem quer trabalhar com um cuzão? 

Obviamente, ninguém quer trabalhar com um cuzão. O cara do exemplo acima com certeza é um cuzão.

Ninguém quer trabalhar com um cuzão porque esse cara não gera valor. Ele não está interessado em resolver o problema do seu cliente. Ele está interessado somente em impor sua verdade e satisfazer seu ego. 

Claramente as suas relações não são ganha-ganha. Quem sai ganhando, se alguém sai ganhando, é somente ele. O resto que se dane.

Como ser um bom profissional?

Ser um bom profissional requer uma série de qualidades em diversos âmbitos. Qualidade técnica é apenas uma das premissas.

Olhe, por exemplo, a diferença entre o Cristiano Ronaldo e o Neymar. Tecnicamente, o Neymar é superior ao Cristiano Ronaldo. Mas, como jogador de futebol, o Cristiano está anos luz à frente. 

O Cristiano reconhece os pontos fracos na sua habilidade e os compensa com treino, MUITO treino. Além disso ele é um líder e joga pela sua equipe, e não para si. Quem não se lembra dele comandando a seleção de Portugal da beira do gramado na final da Eurocopa? 

Cristiano entende como gerar valor para sua equipe atingir os objetivos.

Enquanto isso Neymar é lembrado muito mais pela sua postura extracampo do que pelo seu futebol. É perseguido em campo por juízes por ter criado fama de cai-cai. É conhecido por suas inimizades no vestiário. Aparentemente é um jogador que se preocupa muito mais com si próprio do que com os objetivos do coletivo ao qual pertence.

Ambos são jogadores excepcionais, mas com certeza o Cristiano é muito mais completo do que Neymar. Isso porque futebol é um esporte coletivo e não há forma de atingir os objetivos se não trabalhando em equipe.

Cristiano sabe trabalhar em equipe. Neymar, aparentemente, não.

Eu sei que a analogia é tosca, mas na área de desenvolvimento de software o cenário é parecido. 

O objetivo de desenvolver software é ajudar seu cliente. O software não é um fim em si mesmo. Tecnologia é meio, e não fim. 

Ser um bom programador é uma das premissas para ser um bom profissional. Saber se comunicar, saber entender o que seu cliente precisa, saber trabalhar em equipe, ser organizado, entre muitas outras características, também são premissas para ser um bom profissional.

Em resumo, um bom profissional é aquele que trabalha para gerar valor ao seu cliente.

Qual a maior diferença entre um programador pleno e um sênior?

Eu não gosto de rótulos. Os termos júnior, pleno, sênior foram criados para categorizar os profissionais e facilitar o trabalho do RH na hora de contratar e remunerar.

Volta e meia há discussões sobre quais critérios utilizar para categorizar um profissional nesses termos. Tempo de carreira? Habilidade técnica? Conhecimento mais aprofundado em mais de uma área, como desenvolvimento e infraestrutura?

Realmente é algo bem subjetivo.

Para simplificar, vamos tentar seguir as seguintes premissas: 

  • Se você está ainda aprendendo e precisa de alguém tutorando seu trabalho, você é um júnior;
  • Se você já consegue entregar seu código de forma autônoma e já domina pelo menos uma linguagem de programação, mas ainda não tem tanta experiência, você é um pleno;
  • Se você já tem domínio do que faz e já passou por diversas experiências (ou seja, problemas a serem resolvidos), você é um sênior.

(Lembrando que essa é uma classificação tosca somente para fins didáticos e que saiu da minha cabeça. Sinta-se livre para discordar. Sua opinião é bem vinda!)

A linha tênue que separa um programador pleno de um sênior é composta por um elemento: experiência.

Não experiência de tempo, mas experiência de problemas resolvidos. Experiência de valor gerado. Um programador sênior já passou por diversas situações e já conhece os caminhos mais curtos para gerar valor ao cliente. Seja desenvolvendo um sistema super complexo, ou entregando uma planilha de excel.

Resumindo tudo isso, o passo a passo para se tornar um programador sênior é:

  1. Seja um bom programador;
  2. Seja um bom profissional;
  3. Entenda que tecnologia é meio, e não fim;
  4. Viva o máximo de experiências possíveis com o objetivo de gerar valor para o seu cliente.

Não existem atalhos, não existem segredos. Somente trabalho com o objetivo de gerar valor. Quanto mais valor você gerar, mais fácil você vai identificar melhores formas de gerar valor. Repita isso diversas e diversas vezes e se torne um sênior!