Introdução

“Ou você morre como herói, ou vive o bastante para se tornar o vilão” - Harvey Dent

Acho que a maioria dos meu conhecidos próximos(está no cabeçalho do meu site também), sabe que sou um grande fã do Batman, um ser humano “comum”, mas que é capaz de ajudar e fazer o bem para milhares de pessoas, usando apenas sua força de vontade(e algum dinheiro).

Estátua do Batman Eu carregando uma das minhas estátuas do morcego

Quem são os heróis em desenvolvimento de software?

Heróis são aqueles que estão sempre vigiando, são os primeiros a responder chamados urgentes, arrumando o sistema na madrugada quando necessário, eles salvam o dia das empresas.

Parece ótimo, não? Mas não é bem assim, heróis são sintomáticos, o Batman só existe pois a policia de Gotham é corrupta, os Devs heróis só existem pois o sistema é falho.

O problema com os heróis

Não me entenda errado, é sempre bom, ter pessoas de confiança em sua equipe, para resolver problemas em vários horários, o que não pode acontecer, é isso ser a regra e não a exceção.

O problema para o herói

O Dev herói pode se sentir bem e valorizado por ter salvado o dia, prevenido uma perda de dinheiro para a empresa e isso tem realmente valor, mas com o tempo, o herói se cansa, ser herói é algo exaustivo.

Muitas vezes o herói acaba recebendo o seu “Batphone”, onde ele será chamado pelo seu gerente para resolver uma crise, atrapalhando assim sua vida social.

Em um curto período esse Dev irá desanimar do seu trabalho, poucas pessoas gostam de trabalhar apagando incêndio, sinceramente, não conheço ninguém que fique realmente feliz em ser acordado de madrugada para corrigir um bug.

O problema para a empresa

Para a empresa existem vários problemas com esse tipo de “cultura”, o primeiro e mais óbvio, é a dependência do herói, se na sua equipe tem um herói, com o tempo você se tornará refém dele, o que acontece se esse Dev estiver doente? Ou se ele decidir mudar de emprego?

Outro grande problema, é que o fato de sempre ter um herói na manga faz com que sua equipe se torne “preguiçosa”, pois ele sabem que sempre terão alguém para corrigir os erros deles e salvar o dia.

Mas o principal fator, sem dúvidas, é que isto incentiva uma cultura de “resolução de crise”, onde seus Devs estão mais focados em resolver problemas do que previni-los, um herói age de forma pontual no problema, mas ele não ataca sua causa raiz.

Criar uma cultura com foco em prevenir problemas é muito mais interessante do que uma focada em resolvê-los, deste modo seu time, além de trabalhar mais feliz, terá mais tempo para inovar, tempo para fazer um trabalho melhor, sabemos que um Dev entrega um código tão bom, quanto o tempo que ele tem para desenvolver.

Costumo brincar que para cada dez linhas de código escritas durante uma crise, ou uma hora extra que está gerando burnout na equipe, mais dez terão que ser escritas em um futuro próximo para corrigir os débitos técnicos gerados.

Como resolver essa situação?

Acredito que o melhor modo de resolver isto é começar a procurar a causa raiz dos problemas, fazer um post-mortem de qualidade, está faltando testes? As máquinas não estão escalando como deveriam? Os erros não estão sendo tratados? A comunicação entre os serviços está falha?

Uma vez descoberta a causa raiz, é preciso separar tempo para que o time posso melhorar esta situação.

Outro modo de melhorar isto, é “rotacionar” seu herói, você está em um time, você tem a Liga da Justiça completa, não apenas o Batman, isso vai fazer com que seus Devs se sintam menos cansados, pois não será sempre a mesma pessoa que irá salvar o dia, isto também é um modo de disseminar conhecimento, afinal, todos deveriam ter a habilidade de colaborar em “incêndios”.

Parece simples não é mesmo? Mas não é, muitos gestores não conseguem, ou não acreditam no valor, de separar um tempo para que a equipe atue na melhoria da causa raiz do problema.

Conclusão

Crises vão acontecer, isto é quase inevitável, mas cabe ao gestor do seu time organizar e conscientizar as pessoas sobre a importância, como preveni-las e ajudar a equipe a desenvolver estratégias para facilitar a resolução, como por exemplo, manter logs mais detalhados ou erros mais descritivos.

Se hoje você tem um herói na sua equipe, ou você é o herói, seria interessante você começar a pensar em como fazer com que este papel seja menos recorrente.