Pressione enter para ver os resultados ou esc para cancelar.

Minha Definição de um Desenvolvedor Sênior

Autor: Michael Hoffmann,

artigo original em inglês: aqui

Ao longo da minha carreira como desenvolvedor, trabalhei com diversos tipos de  desenvolvedores diferentes. Alguns estavam começando, outros estavam em seu primeiro emprego após a faculdade, outros já tinham anos de experiência e outros já atuavam há mais de 10 anos.

Desde sempre eu me perguntava: o que é um desenvolvedor “Sênior”, e como eu posso adquirir este título? Sempre achei que isso tinha a ver com os anos de experiência, e que eu receberia este título após 3 ou mais anos automaticamente.

Já hoje, após trabalhar com tantas pessoas diferentes, tenho uma opinião clara sobre o título de Desenvolvedor de Software “Sênior”.

Primeiro vamos separar em tópicos de um desenvolvedor Sênior:

  1. Apaixone-se pelo que faz
  2. Seja um “Resolvedor de Problemas” CERTIFIED PPTO (Pau Pra Toda Obra)
  3. Aprenda os fundamentos básicos de sua linguagem de programação e suas bibliotecas
  4. Seja um mentor, e tenha um mentor
  5. Mantenha-se atualizado
  6. Saia da sua zona de conforto
  7. Defenda / fundamente sua opinião
  8. Seja social
  9. Foque também nas habilidades interpessoais

Vamos mergulhar um pouco mais fundo nestes tópicos.

Apaixone-se pelo que faz

senior
“Eu posso parecer estranho e louco… Mas na verdade sou muito apaixonado pelo que faço”

Você irá alcançar grande parte dos tópicos deste artigo se gostar muito do que faz. Apaixonar mesmo. Na minha opinião, você só pode ser um bom desenvolvedor se você gosta de verdade do que faz. Isso também quer dizer que você deverá escolher uma especialidade técnica, ou stack, em que seja (ou irá se tornar) muito bom.

Claro, você terá que aprender outras coisas além de sua especialidade. O alvo é tornar-se um Engenheiro de Software T (T-Shaped skills), que domina sua área específica de atuação.

Neste post vamos focar no desenvolvimento web, pois é onde tenho mais vivência e uma opinião pessoal a respeito.

Seja um “Resolvedor de Problemas”

99 problems
“Você tem 99 problemas. Você precisa resolver cada um!”

Você precisa amar resolver desafios em uma quantidade infinita de tempo. Tem que ter o poder, ambição, habilidades e a paixão para resolver qualquer problema possível que possa ocorrer ao longo da sua carreira.

Aprenda os fundamentos básicos de sua linguagem de programação e suas bibliotecas

learning
“Nunca pare de aprender”

Isso é primordial para um desenvolvedor. Normalmente não é muito complicado aprender o básico de uma linguagem ou biblioteca. Na maioria dos caso, com pouco tempo você já é capaz de construir pequenos projetos. Porém a situação pode complicar se você precisar debugar, readaptar a biblioteca ou corrigir algum bug.

Por exemplo, muita gente usa Angular CLI, mas não tem idéia do que acontece por trás dos panos. Ou usam Angular com TypeScript, mas não sabe ler o JavaScript gerado no arquivo minificado.

Basicamente, você pode seguir alguns passos básicos pra aprender o fundamental:

Leia alguns dos livros fundamentais sobre programação de software:

Sugiro alguns livros básicos sobre desenvolvimento de software, como “Clean Code: A Handbook of Agile Software Craftsmanship” (Lançado português como ‘O Codificador Limpo’) ou “The Pragmatic Programmer” (Lançado em português como ‘O Programador Pragmático: De Aprendiz a Mestre’). Eles te darão os padrões básicos, guias e melhores práticas pra escrever um bom software.

Mergulhe fundo em sua linguagem de programação:

Em desenvolvimento Web, JavaScript é a linguagem que você precisa dominar. No final do dia, seu navegador irá rodar JavaScript (independente se você escreveu Angular com TypeScript) e você precisa ser capaz de entender o código executado. Também é importante se você precisar analisar uma funcionalidade implementada dentro da biblioteca, então você precisa ser capaz de entender JavaScript básico.

Para JavaScript, recomendo: “JavaScript: The Good Parts” (Lançado em português como ‘O Melhor do JavaScript’)

Domine sua biblioteca:

Da mesma forma que na linguagem em si: mergulhe fundo nas mecânicas avançadas usadas na sua biblioteca. Exemplo: para Angular, recomendo o blog “Angular In Depth” (Apenas em inglês).

Aprenda sua IDE / editor / linha de comando:

Seja o mais eficiente possível usando atalhos do teclado, plugins e comandos na sua IDE, editor de texto e linha de comando. Se estiver usando Visual Studio Code, dê uma olhada em meu artigo “How I Increased My Productivity With Visual Studio Code” (Como aumentei minha produtividade com Visual Studio Code, artigo em inglês apenas).

Aprenda controle de versão:

Trabalhei principalmente com Git, e recomendo o livro online gratuito: “Pro Git” (também lançado em português com o mesmo título).

Seja um mentor, e tenha um mentor

mentor
“Eu sou seu mentor”

Na minha opinião, você só pode se considerar “Senior” se você é mentor de alguém, bem como se você tem um mentor.

Você precisa ter alguém em sua empresa, projeto ou até na internet, em quem você pode se espelhar para aprender e melhorar. Você pode também ter um mentor em um blog, vídeos ou palestras, podcasts ou tweets.

Não tenha medo de não ser o melhor em tudo. Quase sempre existe alguém melhor que você. (Leia também sobre a “Síndrome do Impostor”).

Como você pode orientar outras pessoas:

  1. Seja paciente, e não julgue os outros por sua falta de conhecimento.
  2. Deixe o outro falar e ouça-o atentamente.
  3. Mostre o caminho do sucesso que pode ser atingido como desenvolvedor Sênior.
  4. Tire tempo suficiente e ofereça ajuda quando necessário.

Mantenha-se atualizado

Minha sugestão é usar estes canais para se manter atualizado:

  • Twitter
  • YouTube
  • Podcasts
  • Conferências
  • Blogs
  • Meetups
  • Cursos (online)

Saia de sua zona de conforto

Desenvolvedor Sênior
“Sua zona de conforto Onde a mágica acontece…”

Muitos desenvolvedores têm medo de sair da zona de conforto, e um desenvolvedor “Senior” não pode ter medo de sair da zona de conforto. Aqui vão alguns exemplos:

  • Tem medo de falar sobre assuntos técnicos na frente de muitas pessoas? Dê uma palestra em um Meetup e acostume-se com isso.
  • Não gosta de programar backend e tem interesse apenas em frontend? Aprenda backend. Você vai se beneficiar se entender “o outro lado”.
  • Tem medo de alterar sua pipeline de Integração e Entrega Contínua (CI / CD) por não entender e outros terem mais conhecimento que você? Tire um tempo e aprenda o básico para se tornar independente e não precisar de outros desenvolvedores.

Defenda sua opinião

Na minha opinião, um desenvolvedor “Sênior” precisa ter uma opinião clara e ser capaz de defendê-la na frente de clientes e outros desenvolvedores. Não fico feliz “ditando” decisões técnicas para o time enquanto este aceita tudo sem questionar e começa a trabalhar.

Isso é interessante para ambos os lados, se houver uma discussão vívida sobre a proposta técnica. Pode ajudar o arquiteto a ter novas idéias e impressões e o time participa ativamente das decisões.

Seja social

Não se esconda atrás dos monitores. Saia e converse com outros desenvolvedores, e você sairá no lucro. Além disso, use as plataformas sociais mencionadas mais acima e entre em contato com outros desenvolvedores.

Também recomendo construir uma marca pessoal e permitir que outros te sigam:

  • Tenha um site onde você apresente seus projetos
  • Use canais como Twitter, Facebook, YouTube ou Instagram e informe seus seguidores sobre tópicos de interesse.
  • Comece um blog e escreva artigos técnicos.
  • Tente trocar idéias em conferências.

Foque também nas habilidades interpessoais

Escrever um bom código é importante, mas também é importante ser capaz de descrever artigos técnico para “não-técnicos”, como clientes. Você precisa saber desenhar arquiteturas de forma compreensível, ou descrever em palavras. Além disso, você precisa gerenciar seu tempo de trabalho de forma onde você pode priorizar tarefas e trabalhá-las da forma mais eficiente.

Conclusão

A jornada para se tornar um desenvolvedor de software “Sênior” não é simples, e não acontece em pouco tempo. Este é o ponto onde anos de experiência são importantes, mas você precisa saber aproveitar este tempo, focando nos aspectos mencionados. Se você já tem anos de experiência mas não se aprimorou como desenvolvedor, na minha opinião você não pode ser chamado de “Sênior”.

Claro, essa é minha humilde opinião, então me diga: qual sua definição de um desenvolvedor “Sênior” e quais experiências você construiu com elas?

Artigo original: Michael Hoffmann

Tradução: Marcus, o Coelho.