O que faz um “Engineering Team Leader”?

Leonardo Denardi
Ship It!
Published in
7 min readAug 5, 2019

Na área de Engenharia de software as oportunidades têm crescido na mesma velocidade em que novas empresas, principalmente startups, são criadas e viram unicórnios. Dentro destas oportunidades, há um crescimento expressivo de jobs para gestão e liderança de times de desenvolvimento, uma das vertentes da carreira em Y, na qual profissionais saem da carreira técnica para iniciar um tour de gestão de pessoas. Tenho atuado nos últimos 6 anos coordenando times de desenvolvimento de software, e nos últimos 15 com desenvolvimento de software.

Com esse volume de oportunidades, muitas pessoas têm dúvida se devem ou não seguir para uma carreira de gestão, e neste artigo quero compartilhar um pouco das principais responsabilidades e dos desafios desta job.

Separei em três grandes frentes, uma a Gestão dos processos, projetos e operação de desenvolvimento, que visa trabalhar mais com a questão de como o time se organiza e executa as atividades, além de métricas e indicadores. Outra é a Gestão de pessoas, desde a parte burocrática, até o desenvolvimento das pessoas e por fim a Gestão do software em si, observando mais as questões técnicas dos produtos que estão sendo desenvolvidos.

Gestão de Processos, Projetos e operações

Como gestor uma das principais responsabilidades é entender e organizar o processo de trabalho do time, para verificar se o fluxo das entregas está em um nível bom de maturidade e velocidade. Há várias formas de trabalho e metodologias, então o primeiro ponto é entender os benefícios de cada uma e saber qual aplicar dentro do seu time. Quando falo entender, é estudar e experimentar.

Todas podem ser relevantes dentro do seu contexto, então como dica não seja extremista nem para defender ou criticar qualquer uma delas.

Durante meus últimos 15 anos de trabalho com engenharia de software, todas foram úteis em algum determinado momento, e dependendo da formação e maturidade do time ela também pode variar. Alguns exemplos do que eu estou falando da parte de processos Cmmi, Scrum, Kanban, KMM e Lean.

Outro ponto importante dentro do tópico gestão de processos são as ferramentas de trabalho, desde gestão das atividades, tasks e backlog (como Jira e Trello por exemplo), mas também ferramentas como repositório de fontes (Git, SVN) e IDE’s de desenvolvimento. É fundamental conhecer e entender os benefícios de cada uma e fazer uma avaliação constante sobre o quanto elas estão ajudando ou atrapalhando a produtividade do time.

Entender das cerimônias (daily, planning, retro, review, alinhamentos entre times/áreas), que nada mais são do que momentos de organizar o fluxo de trabalho futuro citado no primeiro parágrafo e uma auto avaliação do que foi no passado, saber conduzi-las e manter o time produtivo dentro de cada uma delas é papel do Team Leader.

Outro item importante é a gestão do backlog e das evoluções de produto e de engenharia, conhecido como débitos técnicos. Saber priorizar testes e evolução de solução, em conjunto com a evolução natural de produto é papel do líder de engenharia.

Um dos itens mais importantes é saber analisar métricas, indicadores e fazer reports para vários níveis (executivo/estratégico, tático e operacional) também faz parte do dia a dia de um gestor de times de desenvolvimento.

Essas métricas ajudam a dar mais previsibilidade, ser mais certeiro no planejamento e a comunicar melhor o andamento das entregas, além de facilitar no entendimento de pontos de gargalo no fluxo de trabalho dos times.

Dentro do desenvolvimento e evolução de soluções, geralmente é necessário também preocupar-se e ser responsável pela operação desta solução em produção. Isso implica em monitorar o uso e a saúde da solução, gerenciar o backlog de erros e dúvidas que são criados pelos clientes, interagir com áreas como suporte, e Customer Success. Outro ponto importante é administrar o volume de tempo empregado em bugs que os clientes encontram versus o volume de testes que você investe antes de liberar uma solução,um está relacionado diretamente ao outro, e quanto antes você encontrar os bugs mais barato e bonito é.

Gestão de Pessoas

Como gestor de pessoas, o ponto principal é trabalhar bem o contexto de gestão de expectativas e motivação das pessoas; ser um facilitador, ajudando a transformar o dia a dia das pessoas do time em algo que alcance resultados para os indivíduos e para a empresa, de maneira estruturada e saudável. Saber ouvir, entender o propósito de cada um e conectar esse propósito aos objetivos da empresa e do time em que se atua.

A ferramenta principal para isso é o 1–1, que são conversas individuais que servem para falar sobre tudo, vida pessoal, profissional, expectativas, metas, gestão da performance, carreira, remuneração, dificuldades, etc.

Costumo dizer que é no 1–1 que toda a mágica acontece, onde relações de confiança são construídas, muitas informações são trocadas e confidências e o papel do Líder é ajudar na evolução das pessoas, no entendimento dos objetivos e na avaliação dos resultados e na performance do colaborador, sempre dando direcionamentos de qual caminho é o melhor a seguir para cada contexto.

Outra etapa fundamental é a gestão de metas ou performance, onde o gestor é o co responsável na criação destas metas e no repasse para o time de toda a missão. Conectar os objetivos estratégicos às metas de resultado e ao desenvolvimento do time, geralmente relacionado a itens que precisam ser desenvolvidos pelo indivíduo.

Avaliações recorrentes de como a performance de cada colaborador está indo, quão longe ou próximo o colaborador está do next level, são atribuições do líder de engenharia.

Também é papel do gestor atuar com hiring, ajudando no processo de entrevistas e seleção de candidatos, por vezes, fazendo hunting em plataformas como Linkedin, por vezes fazendo a gestão do budget para novos candidatos e substituições do quadro de vagas.

Outro ponto fundamental é a definição do perfil necessário para os profissionais que você precisa na sua equipe, quais habilidades, conhecimentos e experiências são necessários, atuando junto ao time de Talent Management na busca dos melhores candidatos a esta vaga.

Um item extremamente importante é a gestão de cargos e salários, que compreende promoções e reajustes. Cada empresa tem uma definição de como e quando isso ocorre, mas o papel do gestor é manter a trilha de cada uma das pessoas do time clara, falar sobre o momento atual e sobre o próximo nível, ajudando as pessoas a crescerem na carreira e também financeiramente.

E por fim, gestão do conhecimento do time, identificando se é necessária alguma capacitação ou treinamento para o time, se alguém precisa estudar uma nova tecnologia, ferramenta ou processo. Mantendo um mapa de conhecimento da equipe e uma gestão pró-ativa é importante para não ser pego de surpresa.

Além disso, também temos funções de gerir férias, afastamentos, ponto etc… apesar de ser de uma importância, no contexto geral são as atividades mais simples e operacionais na minha opinião.

Outro ponto importante é saber sobre legislação trabalhista, pelo menos o contexto básico dentro das relações trabalhistas, isso facilita para sanar dúvidas dos colaboradores como qual a maneira correta de proceder em determinadas situações.

Gestão de Software (produto e arquitetura)

Nesta parte, a grande contribuição de um gestor é desenvolver o time, influenciar e ser questionador em relação às estratégias e arquiteturas definidas/adotadas pelo time.

Ser o interlocutor com os demais times da empresa, caso tenham dependências, ajudando para que esta dependência não atrapalhe o processo de desenvolvimento.

Seja na manutenção ou evolução de um sistema existente ou no desenvolvimento de uma nova solução, o papel do gestor é encaixar as peças do quebra cabeça e ajudar na condução dessa estratégia.É necessário entender sobre tecnologias de desenvolvimento, arquiteturas de sistemas e o problema a ser resolvido.

No geral, participo de todas as discussões, por vezes perguntando coisas mais simples, garantindo que o time está cobrindo todo o necessário e às vezes fazendo perguntas antagônicas para fazer o time pensar de forma a validar a proposta.

Trazer experiências e exemplos do passado também ajudam nessa etapa.

Basicamente, um software deve atender ao propósito do que os clientes esperam, deve se comportar bem em execução, isso implica termos alertas e termômetros para saber se o funcionamento está adequado e também é importante ao desenvolver novas features, prever impactos possíveis no que já existe. Ou seja, desenvolver e manter estes alertas.

É fundamental ter uma suíte de testes automatizado com qualidade rodando para o legado e sendo evoluída junto com o software.

Ter uma avaliação do custo dessa solução em produção, bem como um provisionamento de crescimento para saber se o produto está precificado corretamente.

Como e se estão sendo usadas determinadas funcionalidades é um responsabilidade compartilhada com o PM e o Designer.

Por fim, ir para uma carreira de liderança, na área de engenharia de software requer um conhecimento técnico muito bom, mas o mais importante é saber e gostar de lidar com pessoas, ou seja, emoções, expectativas, anseios e propósitos que evoluem todos os dias. E o que mais me motiva no dia a dia é conseguir ajudar as pessoas a se descobrirem, se desenvolverem e crescerem na carreira e na vida pessoal.

--

--