Frontend Júnior, Pleno ou Sênior?
- Publicado em: 03/01/2021
Não li, nem lerei
Um breve resumo para pessoas cansadasAviso de post longo pela frente. Isso não é O Guia Completo para identificar seu patamar na carreira de Frontend. É um conjunto de experiência e muitas referências que propõem um diálogo, buscando criar uma base para argumentação sobre o assunto. Leia o índice.
Índice
Introdução
Ao contrário dos ativos materiais, que diminuem à medida que são usados, os ativos do conhecimento aumentam com o uso: ideias geram novas ideias e o conhecimento compartilhado permanece com o doador ao mesmo tempo que enrique o recebedor. – Thomas H. Davenport, Conhecimento Empresarial.
O começo de todo texto é complicado e essa não é uma exceção.
Primeiramente, o que será dito a seguir não é uma verdade absoluta e nem poderia, pois apesar do título de Frontend existir há alguns anos, é relativamente novo e se torna mais complexo à medida que novas tecnologias surgem e o escopo do trabalho se altera.
Na área de tecnologia onde tudo ocorre rapidamente - o velho clichê mas é real -, as empresas ainda não estão preparadas para lidar com todas as variáveis que envolve classificar um profissional ou elaborar um plano de carreira. Aliás, deixar seu “Plano de Carreira” na mão de seu empregador, é um erro.
Três pilares da senioridade
Tratando-se da área de tecnologia, não é possível aplicar uma avaliação pautada somente na variável ‘Tempo como frontend’ devido a pontos como: novas oportunidades de como absorver conhecimento, necessidades do mercado e lançamento constante de novas tecnologias.
No entanto, uma opinião unânime existente no mercado de trabalho é que habilidades de relacionamento(soft skills) são igualmente importantes à conhecimento técnico(hard skills) e, dificilmente são adquiridas por meio de cursos.
Dito isso, a seguir é trazida uma proposta de auto-avaliação baseada em três fatores.
Conhecimento técnico
É um conjunto de habilidades tangíveis, ou seja, passíveis de serem quantificadas através de testes práticos, analisando trabalhos anteriores ou até mesmo baseando-se em cursos realizados, livros lidos ou treinamentos participados.
Experiência
A experiência é a sua bagagem, aquela habilidade de bater o olho em projetos e situações novas e já ter uma base para entender que caminho tomar. Quantos projetos você participou do começo ao fim, com clientes reais, desafios, deadlines, etc.
Maturidade
Relacionamento com equipe, lidar com pressão, liderança, habilidade de argumentar sem gerar conflito, não levar as coisas pro lado pessoal.
Com exceção do pilar de Conhecimento Técnico o qual você pode comparar o que sabe e o que as vagas de emprego estão solicitando, os demais pilares apresentados por sí só não auxiliarão a responder perguntas como:
- Qual nível de complexidade eu deveria estar lidando?
- Quais desafios deveria encontrar?
- Quais metas deveria atingir?
Aprendizado de Software
Sendo assim, vamos mergulhar nas expectativas comportamentais de cada nível de senioridade e, se você já leu O Codificador Limpo de Robert C. Martin talvez vá se recordar de alguns trechos a seguir ou até da nomenclatura.
O ofício da pessoa desenvolvedora de software profissional é similar ao do artesão. Passado de pessoa para pessoa. Ensinado pelos mais velhos para os mais jovens. Trocado entre colegas. Observado e reaprendido, conforme os velhos observam os jovens. - Texto adaptado de O Codificador Limpo.
Aprendizes / Júnior
Eles não têm autonomia e são supervisionados bem de perto pelos operadores. No começo, não recebem qualquer tarefa, simplesmente dão assistência aos operadores. Essa deve ser uma época de programação em par bastante intensa, esse é o momento em que as disciplinas são aprendidas e reforçadas. É quando a base dos valores é criada.
Operadores são professores. Eles asseguram que os aprendizes conheçam os princípios e padrões do design, disciplinas e rituais. Ensinam TDD, refatoração, estimativas, e assim por diante. Recomendam leituras, exercícios e práticas, e revisam o progresso dos aprendizes.
Esse período deve durar um ano. A essa altura, se o operador estiver disposto a aceitar o aprendiz como um dos seus, fará uma recomendação aos mestres. Esses deverão avaliar o aprendiz por uma entrevista e por seus resultados até então. Se os mestres concordarem, o aprendiz se tornará um operador. – O Codificador Limpo.
A pessoa desenvolvedora júnior sabe alguma coisa e está em início de carreira. Essa pessoa já está inserida no mercado de trabalho, seja por um estágio ou trabalho em outras áreas, sendo assim, sabe que tem responsabilidades.
Está iniciando na área e supostamente sabe tudo de novo/hype que permeia o seu mundinho mas não tem noção das consequências de seus atos ou “jogo de cintura” corporativo.
Pode errar “à vontade” e consegue entregar algum valor sozinha. Seus principais objetivos são: perguntar e aprender. E apesar de não ter de lidar com cobranças de entregas, esse perfil deve estar sempre disposto a receber feedback.
Não precisa entender as regras de negócio de maneira aprofundada e à medida que evolui, consolida este entendimento.
Trabalhará principalmente com tarefas, ou seja, escopos bem definidos, onde o início, meio e fim estão claros. É inerente a entrega de itens desta complexidade que contemplem o fluxo adotado de revisão de código, respeitem estilo de código do projeto, tenham o mínimo de critério com relação a segurança e performance.
Esse perfil é constantemente acompanhado por alguém mais experiente, que vai dar as guidelines para o seu crescimento, e seu trabalho é cuidadosamente revisado com substanciais idas e vindas. Se adquirir um bom mentor Pleno ou Sênior para se inspirar e ensinar o caminho das pedras, crescerá rápido dentro da estrutura.
À empresa cabe ter uma boa política de retenção de talentos para esse profissional entender que é valorizado e, quando estiver seguro que pode passar a ser Pleno, não ter motivos para ir embora.
Operadores / Pleno
São programadores treinados, competentes e energéticos. Durante esse período em suas carreiras aprenderão a trabalhar bem em uma equipe até se tornarem líderes. Tem conhecimento da tecnologia atual, mas normalmente carecem da experiência com muitos sistemas. Eles têm a tendência de conhecer uma linguagem, um sistema e uma plataforma; porém, estão constantemente aprendendo mais. Níveis de experiência variam amplamente de acordo com cada um, mas a média gira em torno de cinco anos. Do lado extremo dessa média, temos mestres em ascensão; do outro, aprendizes recentes.
Operadores são supervisionados por mestres ou um colega sênior. Jovens operadores raramente recebem autonomia. Seu trabalho é supervisionado de perto. Seu código é examinado. À medida que ganham experiência, a autonomia cresce. A supervisão se torna menos direta e mais sutil. No final, ela se torna apenas uma revisão rápida. – O Codificador Limpo.
A pessoa de nível Pleno está pronta para te dar respaldo técnico em qualquer questão, você pode chamá-la para uma reunião ou dar uma tarefa tecnicamente complexa que será executada.
No entanto, não se deve esperar em questões de liderança/gerência/visão (visão: possíveis consequências do caminho escolhido) a mesma postura e desempenho de um profissional de nível Sênior.
Tem um nível técnico relativamente alto, uma experiência relevante e uma maturidade alta. É um profissional que provavelmente será cobrado por tudo o que erra ou deixa de acertar.
Precisará de ajuda pontualmente e seu trabalho será revisado de maneira ocasional, tendo foco em funcionalidades ou problemas individuais com escopo claro e bem definido.
Compreende os padrões e abordagens estabelecidos nas bases de código existentes com facilidade e é capaz de encontrar melhorias consideráveis em modelos básicos.
É esperado que compartilhe conhecimento e apoie no desenvolvimento dos seus pares por meio de conversas, pair programming, sugestões de cursos, leituras, práticas, entre outros. Também consulta bem a documentação e o StackOverflow para não parar os colegas e obter a resposta mais rápido.
Fará a gestão compartilhada de sua equipe e do negócio.
Mestres / Sênior
São programadores que já assumiram a liderança em mais de um projeto significativo de software. Normalmente eles terão mais de dez anos de experiência e terão trabalhado em diversos tipos de sistemas, linguagens e sistemas operacionais. Sabem como lidar e coordenar múltiplas equipes; são designers e arquitetos proficientes e podem codificar círculos em volta de todo mundo sem uma gota de suor.
Já receberam ofertas de posições na gerência, mas ou as recusaram ou voltaram atrás após as terem aceitado, ou as integraram ao seu papel técnico primordial. Eles mantêm esse papel técnico por meio da leitura, estudo, prática, desempenho e ensino. É para um mestre que a empresa designará a responsabilidade técnica de um projeto. – O Codificador Limpo.
Ao apresentar um problema à pessoa desenvolvedora Sênior, o que se espera é que baseando-se em experiências adquiridas e análise do cenário, seja capaz de elaborar o melhor caminho e delegar apropriadamente as tarefas. Lidando com a sua própria equipe e se necessário fazendo interface com outras áreas.
Em outras palavras, coordenar uma reunião e fazer com que os participantes se envolvam e tragam opiniões úteis para solucionar o problema, tenha noções de tempo, viabilidade (habilidade técnica entra aqui), custos e, proativamente trace um plano para cumprir o objetivo.
Demonstrar liderança dentro da equipe e tomar a frente em projetos é fundamental, assim como visão do todo. Deve saber priorizar, negociar, alocar membros do time e gerir de risco, ou seja, além de executar, vê e questiona os esforços envolvidos na realização de uma tarefa e é capaz de estimar cedo os recursos e limites necessários.
Precisa entender de forma aprofundada as regras de negócio, os side-effects de mudanças e ser evangelizador delas para os plenos e juniores. Tendo esse conhecimento, consegue traduzir ideias em projetos com tarefas detalhadas.
Uma pessoa solucionadora de problemas.
E também cabe a ela saber ensinar os mais novos, ou seja, passar conhecimento adiante.
É esperado que compartilhe conhecimento e apoie no desenvolvimento dos seus pares. A mentoria é um caminho que deve ser trilhado onde serão exigidas: paciência, empatia, cuidado com as palavras e carinho com as pessoas.
Tem a responsabilidade de sugerir fontes de estudo, identificar gaps de conhecimento e passar tarefas de nível apropriado para profissionais juniores. Além disso, fornecer feedbacks consistentes sobre o trabalho de plenos e juniores e, ser receptiva a receber feedbacks são características essenciais.
Seu trabalho não precisa necessariamente ser revisado, mas a abordagem geral pode ser. É capaz de desenvolver sozinha funcionalidades importantes (problemas críticos para a empresa) do conceito inicial até a entrega (ao lado de um designer).
Saber equilibrar o risco do projeto com o prazo e a stack que será utilizada é parte de seu escopo. Cabe a essa pessoa ter o correto discernimento entre escolher aquilo que melhor vai se adequar a sua realidade (ou do seu time/projeto) e não pelo fato de ser novidade.
Outra ação esperada é que esteja antenada no mercado e sugira inovações. Se novas abordagens ou ferramentas forem compatíveis com a realidade da empresa e tenham impacto positivo, sejam sugeridas e trazidas para debate. Lembrando que a defesa de utilização deve ser realizada com maturidade.
Complexidade de escopo
Qual é o objetivo de discutirmos complexidade de tarefas?
É uma tentativa de criarmos uma consciência e estabelecermos “limites” (por mais que voláteis e discutíveis) que nos permitam categorizar nossa atuação dentro dos níveis e assim possamos “comparar” se nosso cotidiano corresponde ao nosso nível de senioridade.
A esperança é que seja possível ajudar a mensurar os esforços executados e que sirvam de justificativa para a transição de nível.
Aprendizes / Júnior
- Criação/Manutenção de componentes simples, sem regras de negócio (ex: avatar, botão);
- Utilização de componentes já criados;
- Desenvolvimento de soluções crossbrowser compatíveis com os principais navegadores do mercado (Edge, Safari, Chrome, Firefox), resoluções ou sistemas operacionais que correspondem ao seu projeto;
- Desenvolvimento de layout responsivo e mobile first;
- Implementação de uma nova página dummy do zero (Ex.: landing page, páginas que só renderizam dados);
- Implementação de eventos de tracking básicos sem complexidade dos dados (click de botão, pageview);
- Correções de semântica HTML;
- Identificação de erros grosseiros que inviabilizam o modelo;
- Participação em code review de entregas com as quais tenha familiaridade;
- Explicação de um tópico técnico básico para um profissional de outra área.
Operadores / Pleno
- Criação/Manutenção de componentes complexos e/ou reutilizáveis dentro do projeto (form com validação, componentes que lidam com estados, modal);
- Garantir a melhor usabilidade e fidelidade do layout em parceria com Designers e UX;
- Implementação de teste A/B com múltiplas variáveis ou mudanças de fluxo;
- Adicionar eventos de tracking que dependam de dados complexos (tracking com regras de negócio, Google Tag Manager);
- Refatoração de página detectando duplicidades e/ou melhorias;
- Melhorias de performance (otimização de build / assets);
- Melhorias de SEO (estruturação do HTML, schema);
- Parear com profissionais menos ou mais experientes;
- Compartilhamento de conhecimento e experiência com squad e/ou staff de maneira didática por meio de apresentação ou documentação;
- Testes unitários e end-to-end(metodologia utilizada para testar se o fluxo de um aplicativo está sendo executado conforme o projeto do início ao fim).
Mestres / Sênior
- Estruturação de um projeto que atende às boas práticas, entre elas: Logs, Disponibilização de métricas, Configuração de ambientes, Performance, Velocidade, Fácil manutenção, Modularização de CSS;
- Criação/Manutenção de libs complexas e reutilizáveis em mais de um projeto (exemplo: design system);
- Implementação de uma nova página complexa do zero com muitas interações, filtros e regras de negócio.
Conclusão
Enfim, espero que este conteúdo tenha te auxiliado de alguma maneira ou ao menos fomentado a discussão. Apesar do escopo nebuloso do título de Frontend, da realidade de mudanças constantes e de empresas com diferentes necessidades.
É sempre bom lembrar que a caminhada é longa, contínua e que cada pessoa a realiza em seu ritmo.
Agradecimentos à Jessica Costa pelas contribuições e à staff de frontend da VAGAS.com pelos pitacos.
Referências
- A Senior Engineer’s CheckList
- A collection of engineering ladders for reference and inspiration
- Basecamp Handbook
- Como trabalhar como Front-End Developer, por Fellipe Azambuja, O Montanha
- Como trabalhar como Front-End Developer, por Raphael Fabeni
- Como trabalhar como Front-End Developer, por Fernanda Bernardo
- Como trabalhar como Front-End Developer, por Marcus Silva
- Como trabalhar como Front-End Developer, por Matheus Lima
- Como trabalhar como Front-End Developer, por Fernando Daciuk
- Concrete Solutions - Front-end Guide
- Cultura de design, produto e engenharia do Grupo ZAP
- Dicas para novos(as) mentorados(as)
- Dicas para novos(as) mentores(as)
- Glossier - Engineering Manager
- Júnior, Pleno, Sênior, Paladino e Rambo
- Leading Ideas: Buffer’s new Engineering Career Paths Framework
- Matriz de Competências
- Qual é a diferença entre hard skills e soft skills?
- Sou júnior, pleno ou sênior?
- Todos os motivos pelos quais eu sempre fui chamada de treteira no trabalho.