Executando verificação de segurança...
1

Gerenciamento de projetos - O abismo entre a entrega e o entendimento

uma reflexão sobre processos

Ao longo dos meus curtos cinco anos de carreira como desenvolvedor, sempre me interessei muito pouco pela gestão. No início, eu não me importava com a forma como as tarefas chegavam até mim; na minha cabeça, eu era capaz de entregar qualquer demanda. E, de fato, eu entregava. Mas não demorou muito para eu perceber que não estava exatamente "entregando" o que era esperado; eu estava entregando apenas o meu entendimento — que, muitas vezes, era raso, insuficiente e gerava retrabalho.

A princípio, esse retrabalho vinha acompanhado de uma certa graça por conta dos mal-entendidos. Com o tempo e o ganho de experiência, o cenário mudou: os alinhamentos ficaram mais ásperos e os feedbacks negativos começaram a me incomodar. Como todo programador com síndrome do impostor, que tem a tendência a se achar insuficiente, eu internalizei aquilo como minha culpa e incompetência. Continuei estudando, me esforçando e absorvendo cada vez mais os projetos. Eventualmente, as demandas genéricas com pouca informação pararam de ser um problema, porque eu já dominava o negócio e sabia exatamente o que precisava ser feito. Voltei a me sentir confiante e habilidoso.

Até que troquei de empresa.

Ao me envolver em um projeto completamente novo, a crise voltou antes mesmo de eu entregar a primeira tarefa. Senti-me inseguro por assumir um cargo acima do anterior, com expectativas mais altas, e o medo de "não ser suficiente" me dominou enquanto eu tentava aprender o novo sistema. Mas, para minha surpresa, isso não aconteceu. Minhas entregas foram sólidas desde o primeiro momento. Eu cumpria prazos e mantinha a qualidade. O que mudou? Minha experiência finalmente tinha se tornado efetiva? O sistema era mais simples?

De fato, a experiência ajudou na transição, mas os projetos não eram simples. Pelo contrário: possuíam uma complexidade alta e exigiam muito cuidado. O que realmente me ajudou a ganhar confiança foi o processo de gestão.

Na minha primeira experiência, as demandas vinham diretamente do cliente: ele reclamava ou solicitava algo, e um card era jogado no meu backlog. Sem análise, sem discussão, apenas a pergunta: "Quanto tempo você leva para fazer isso?".

Já na segunda empresa, a organização era outra. Todas as tarefas passavam por um fluxo rigoroso (com exceção dos bugs, que tinham um caminho próprio):

Análise de Negócio: Descrevia-se a necessidade e o motivo dela existir.

Análise Funcional: Pessoas que entendiam profundamente o sistema traduziam a necessidade para a realidade técnica. Mockups genéricos davam lugar a desenhos baseados na identidade do produto, e as funções perdiam descrições vagas. O resultado eram detalhes claros: o que cada botão faria, como os registros seriam persistidos, restrições e exemplos de resultados esperados.

Só depois disso entrávamos em cena. Nas plannings, usávamos o famoso Planning Poker para votar os prazos. Com base na nossa própria estimativa, os gestores definiam o que entraria na sprint.

Quando o trabalho começava, ainda havia a análise técnica: nós escrevíamos o que precisávamos alterar para atender à demanda. Não com 100% de clareza — afinal, é difícil prever cada linha de código —, mas descrevíamos quais partes do sistema seriam modificadas e por quê. Dependendo da complexidade, fazíamos uma revisão técnica para garantir que não estávamos "alucinando". Só então partíamos para o desenvolvimento, seguido de testes e homologação.

Eu não havia notado que esse processo "mastigava" tanta informação para mim. Ele engessava um pouco da criatividade e limitava o espaço para inovações, sim, mas garantia que eu tivesse exatamente o que precisava para trabalhar. Minhas frustrações não eram mais com a minha capacidade técnica, mas com a arquitetura — por ser um projeto legado, eu, como todo iniciante emocionado, só queria saber de mexer com tecnologias modernas.

Moral da história: se o seu time está atrasando as entregas com frequência, antes de duvidar da capacidade técnica deles, revise o processo. Será que não está burocrático demais? Ou o oposto: será que não está genérico demais? As informações estão chegando ao desenvolvedor com a clareza necessária?

Seniores, geralmente, conseguem navegar na ambiguidade, mas juniores e plenos precisam de chão para caminhar. Às vezes, o sucesso do time não depende de mais código, mas de uma descrição funcional bem feita. ;]

Carregando publicação patrocinada...
1

No mundo do software, o conceito de "projeto" já me traz lembranças de algumas experiências.

Projeto tem começo meio e fim.

Projetos que chegaram pra mim onde eu fazia entregava e sumia são ok. Parecem construção de casa, ou uma reforma. O cliente pede uma raquinagen pontual, fica feliz e some.

Projetos dentro de uma empresa, com times separados pela hierarquia que conhecemos hoje, com gestores, pmo, time de produtos, devs, infra, dba. Esses são uma merda, ineficiência mascarada por faturamento alto.

Esse formato transforma desenvolvedor em "coding monkeys" ou "organismo que transforma café em código".

Ainda sonho em poder trabalhar em algum cenário onde aceitam a lei de Conway e aplicam Team Topologies. Trabalhei um período em um formato parecido e foi uma experiência muito boa. Como sempre, a gestão incompetente estragou tudo no final.

Software tende a ser vivo, que muda com o tempo, tratar como projeto não aceito como melhor opção na maioria dos casos.

Alguém postou aqui no tabnews anúncio de vaga da Embraer disfarçada de texto técnico.

Aquele cenário acredito que pede projeto. Uma vez entregue, com maestria, não tem evolução, no máximo correção de bugs. Qualquer melhoria, pede um projeto novo, ao invés de modificar o existente com puxadinhos como acontece na maioria das firmas.

O cenário que seu texto descreve, é de projeto com task bem definida vs projeto zoneado.

Na minha experiência, projetizar desenvolvimento de software é uma triste herança do modelo industrial, e não é a solução mais eficiente na maioria dos casos.