Quando falamos em desenvolver software, penso em dois caminhos (pode haver mais):
- desenvolver de forma customizada
- criar um produto
Cada um deles tendo suas vantagens e desvantagens. Não falarei aqui (agora) sobre criar produtos de software, coisas de prateleira ou colocar um serviço no ar. Estou refletindo sobre o modelo em que trabalhei durante toda minha vida como desenvolvedor, seja freelancer ou em empresas: atender demandas específicas de clientes.
Para quem usa o software, ter sua necessidade específica atendida é o melhor dos mundos, ainda que o preço seja mais salgado. Mas não vejo muito sendo falado sobre como é isso do lado do desenvolvedor.
O que tenho observado são as empresas focando em realizar cada vez mais vendas e fechar novos contratos, sem muita preocupação com a capacidade da firma de dar vazão às tarefas assumidas, provocando sobrecarga nos desenvolvedores. No pior cenário, que comigo já aconteceu mais de uma vez, é a empresa fechar um contrato de longo tempo com o cliente e permitir que ele demande livremente, sem crivos de estimativa e priorização (a.k.a. métodos ágeis). Enquanto a carteira de clientes (e a receita) escala a certa velocidade, a quantidade de desenvolvedores permanece contante por longo tempo. No início são 5, dali a pouco 10, 20, … projetos de desenvolvimento contínuo, como se a empresa fosse o “setor de TI” de cada um desses clientes. O cliente quer, estrala os dedos e deve ser atendido.
Estou errado em pensar que esse (extremamente comum) modelo vai contra todos os princípios da boa gestão e até contra os mais conhecidos métodos ágeis de desenvolvimento de software? Cria um ambiente extremamente caótico, gera alta rotatividade, enfim, dane-se o peão. A empresa precisa mesmo assumir quantidades descomunais de trabalho para pagar contas e salários?
Chega de desabafos (eu sei que o relato foi “deveras específico”), a pergunta objetiva é: existe forma sustentável de escalar uma empresa que desenvolve software customizado? Já dando minha opinião, uma melhor aplicação dos métodos ágeis (no caso de contratos por tempo) ou a negociação por tarefa.
Caso não haja, creio que minha vocação seja trabalhar em produtos, e não em customizações de software. Porque deixar dezenas passarem pela porta de uma pequena equipe para pedirem o que querem, para quando querem, para mim não é gestão.