O sentimento de que as pessoas que desenvolvem não entregam
Esse sentimento não vai te levar a lugar nenhum. Se livre dele
Se você é PM, é bem provável que você já sentiu uma frustração sobre a velocidade com que as pessoas que desenvolvem colocam coisas em produção, não sentiu?
Pois eu já senti e não foi uma vez só. Eu sempre ficava com essa pergunta cabeça
“Por que demoram tanto para terminar? Parece tão simples!”
E esse sentimento mais me atrapalhava do que ajudava. Decidi então entender porque eu estava me sentindo assim e o que eu aprendi, eu conto para vocês agora.
Você está num time
A primeira coisa que precisamos entender para eliminar essas frustrações é entender que estamos num time. E se realmente estamos num time, todas as pessoas que ali estão, são responsáveis pelo resultado final.
Cada uma dessas pessoas com o seu papel bem específico e sua especialidade, mas todas buscando o mesmo objetivo. Sendo assim, se você sente que algo não está bom, o que você deveria fazer então é chamar as pessoas do seu time e conversar com elas para entender se realmente existe um problema.
Enquanto você não conversar com as pessoas e de fato entender o cenário, o contexto e os possíveis problemas que existem ali, ficar pensando na velocidade que as coisas andam só vai te desgastar com as próprias pessoas.
Desenvolvimento de software é uma ciência complexa
Eu iniciei minha carreira como desenvolvedor e posso dizer com firmeza: desenvolver software é algo bastante complexo.
Vários fatores colaboram para isso: código legado, arquitetura mal planejada, a linguagem de programação, o momento de vida do produto, a formação do time e assim vai.
Se você não conseguir entender todas as variáveis que estão impactando o desenvolvimento, vai continuar achando que são as pessoas que desenvolvem que são lentas e na grande maioria das vezes não são.
Tente entender mais sobre a tecnologia, sobre os problemas da arquitetura, sobre a organização do time e sobre as pessoas. Isso com certeza vai te ajudar a entender mais sobre o fluxo de desenvolvimento e tirar a culpa das pessoas.
A incerteza reina
Como estamos falando de algo complexo, sempre vamos ter um certo grau de incerteza. É uma característica de sistemas complexos, você não consegue controlar todas as variáveis e nem prever o que vai acontecer com elas, a não ser que você consiga prever o futuro!
Sendo assim, qualquer coisa pode acontecer. A arquitetura estava pior do que achamos que estava. Resolvemos fazer tudo de uma vez. Não conseguimos as credenciais a tempo. Pessoas saíram do time. Pessoas ficaram doentes. Times foram realocados. A programação era mais complexa do que a gente achava que era. O código não estava testado. O design ficou impossível de ser feito. E assim vai. Certamente há muitas outras variáveis que podem aparecer e impactar a velocidade do time.
Você não vai conseguir controlar o que vai acontecer. O máximo que você pode fazer é comunicar os acontecimentos e como eles vão impactar na entrega. Aliás, essa é uma das atribuições de uma PM. Para fazer isso, é importante saber a capacidade do time no tempo.
Todo time tem uma capacidade
Falar em velocidade em desenvolvimento de software nem me parece uma medida que sirva para algo. Me parece mais correto falar em capacidade do time.
No geral o time pode usar duas métricas simples para entender a capacidade: throughput e lead time (escrevi um texto sobre isso). Medindo o throughput por semana vai ajudar você como PM a gerar estimativas das entregas. Medir e controlar o Lead time, vai ajudar o time e entender a saúde do processo e conseguir aumentar a previsibilidade de quando algo ficará pronto (escrevi sobre isso nesse artigo).
De posse dessas informações, você como PM pode então projetar o impacto das entregas caso algo aconteça. Alguém entrou de férias, qual foi o impacto no throughput? O Lead time começou a subir, o que está acontecendo?
Dessa maneira você sai do achismo e o time consegue ainda entender melhor os problemas e como estão evoluindo no tempo.
Pode ser que as pessoas não estejam alinhadas
Quando contratamos alguém, fazemos o possível para que a pessoa contratada esteja alinhada com o desafio que temos, com o nosso modo de trabalho, com o mercado que a empresa está inserida e com a nossa cultura.
É bem plausível que, se o processo de contratação não for bem estruturado, que a pessoa contratada não esteja alinhada com o que estamos oferecendo para ela. Nesse momento, realmente a pessoa pode começar a não desempenhar aquilo que estamos esperando dela.
É nesse momento também que as pessoas do time e a gestora precisam conversar com essa pessoa e tentar ajudá-la a se alinhar, se ela estiver disposta é claro. Caso não dê certo e as coisas não melhorem, a gestora precisa desempenhar sua função e encerrar o contrato de trabalho.
Não fazer isso é negligenciar a própria pessoa, que vai continuar não evoluindo, pois não está alinhada e consequentemente não motivada, e a empresa, que vai continuar a ser impactada por alguém que não está alinhada com a cultura e com os objetivos.
No fim é sobre pessoas
Se você não consegue confiar nas pessoas do seu time, reveja bem se você está no lugar certo ou então tente fazer alguma coisa. Não existe time se não existe confiança. E se você confia de verdade, o sentimento de que as pessoas não estão dando o seu melhor não deveria existir, mas sim o sentimento de tentar entender o que está acontecendo e como você pode ajudar.
Entender se vocês estão organizados da melhor maneira, se todos entendem o que precisa ser feito e os problemas que o time as pessoas estão passando é o que vai fazer o time evoluir com o tempo. Você como membro do time, pode e deve cobrar as pessoas para que isso esteja acontecendo.
Acredite em mim, jogar a responsabilidade nas pessoas que desenvolvem não vai fazer sua vida melhor e inclusive vai fazer de você uma profissional medíocre. Tire de você o sentimento de que o desenvolvimento está lento e tente entender o que está acontecendo. E quando entender, ajude a resolver os problemas. Afinal você faz parte de um time, não?