Práticas e ferramentas para manter documentações atualizadas
Dentro da engenharia de software é muito comum a prática de se registrar todas ideias, razões, discussões, alterações, incidentes, etc, dos projetos. Isso é muito importante pra conseguir traduzir o que está (ou o que já esteve) em código para pessoas não técnicas, para os próximos desenvolvedores ou para você mesmo de daqui alguns meses.
Mas, na minha experiência, é sempre uma dor conseguir elaborar documentações coesas e atuais. Minha empresa atual usa o Notion e o Figma pra basicamente tudo dentro de Tech e Produto. Um projeto sempre nasce com as especificações e motivações muito claras, mas conforme o andamento das entregas, rapidamente o que está sendo feito já não está 100% de acordo com o que foi escrito. Não é novidade pra nenhum programador que a cada dia que passa o cliente quer algo diferente. Em um cenário de freela, por exemplo, onde existe um escopo definido e um ou poucos programadores, isso já não é um desafio tão grande. Mas quando se trata de equipes inteiras de desenvolvimento, com múltiplas reuniões e commits rolando por dia, a comunicação e organização facilmente viram uma várzea e é fácil só concluir "ah dane-se, o que vale é o que tá em prod".
Assim, sempre senti falta de, por exemplo, ferramentas que automatizem a geração de acordos de API ou práticas que incentivem/sistematizem a atualização de documentações por parte dos desenvolvedores conforme o código muda. Ao mesmo tempo, penso: "como decidir o que deve ou não ser documentado? O que deve ser uma documentação nova e o que deve ser uma atualização da existente? Como centralizar e organizar todas? Como fazer tudo isso sem que o time gaste tanto tempo com isso que prejudique o andamento das entregas?"
Quais ferramentas você ou sua empresa usa para manter o código e as documentações sincronizadas?