Pular para o conteúdo
Desenvolvimento de produto · 9 min de leitura

Como resgatar um projeto de software que está dando errado (e quando recomeçar do zero)

Gleb Sosnovskiy

Tech lead

Para resgatar um projeto de software que está dando errado, pare as funcionalidades novas, recupere o acesso ao código e às contas e encomende uma auditoria independente que diga o que fica, o que se conserta e o que se reescreve. Na maioria dos casos, consertar o código existente é mais rápido e mais barato do que recomeçar do zero.

Reescrever só compensa quando a base bloqueia qualquer mudança importante. Mesmo assim, raramente é preciso fazer tudo de uma vez.

Este guia percorre um resgate passo a passo: como reconhecer um projeto que está fracassando, o que fazer na primeira semana, como funciona uma auditoria e como decidir entre consertar e reescrever.

Principais pontos

  • Primeiro, pare as funcionalidades novas. Cada funcionalidade construída sobre uma base instável encarece o resgate.
  • Antes de qualquer outra coisa, garanta o acesso ao repositório, aos servidores, ao domínio e às contas nas lojas de aplicativos.
  • Uma auditoria dá um veredito honesto sobre o que fica, o que se conserta e o que se reescreve, e um preço baseado no código real.
  • Reescrever tudo raramente é a melhor opção; em geral é melhor substituir as partes mais fracas por etapas.
  • Depois do lançamento, defina propriedade, marcos e documentação para que o produto nunca mais dependa de uma só pessoa.

Como saber se um projeto de software está fracassando?

Projetos raramente fracassam em um dia. Eles saem do rumo aos poucos, e cada sinal isolado é fácil de justificar. Juntos, fica difícil ignorá-los:

  • Os prazos são adiados sem parar, cada vez por um motivo novo.
  • Cada correção quebra outra coisa, e os mesmos bugs voltam.
  • Ninguém consegue dizer com clareza quando o produto vai ser lançado.
  • O desenvolvedor ou a agência demora a responder ou para de responder.
  • Você não tem acesso ao código, aos servidores nem às contas.
  • Desenvolvedores novos dizem que não conseguem trabalhar com o código “sem reescrevê-lo antes”.

Um desses sinais é um alerta. Três ou mais costumam significar que o projeto precisa de um resgate, não de mais um prazo.

Por exemplo, uma startup cujo freelancer parou de responder e é o único que tem a senha do servidor precisa de um resgate, mesmo que o código em si esteja bom.

O que fazer primeiro quando um projeto dá errado?

A primeira semana é a base de todo o resto. Antes de qualquer trabalho técnico, vêm quatro passos:

  • Pausar as funcionalidades novas. Continuar construindo sobre uma base instável encarece cada correção futura.
  • Garantir os acessos. Confirme que a sua empresa controla o código, os servidores, o domínio e cada serviço do qual o produto depende.
  • Registrar o que foi prometido e o que existe. Reúna a proposta, o contrato, os layouts e uma lista do que realmente funciona hoje.
  • Segurar pagamentos que não estejam ligados a trabalho entregue. Se os pagamentos são por marcos, pause o próximo até existir um plano claro.

Não comece procurando culpados. Quem levou o projeto a esse ponto e por que importa muito menos do que saber o que dá para fazer agora, quanto vai custar e quando o produto vai funcionar.

Como recuperar o acesso ao código, aos servidores e às contas?

Os acessos são o que mais falta aos fundadores justamente quando mais importam. Passe por cada item desta lista e anote quem o controla hoje:

  • O repositório de código com todo o histórico, não um arquivo zip da última versão.
  • As contas de hospedagem e de servidores, incluindo bancos de dados e backups.
  • O registrador do domínio e as configurações de DNS.
  • As contas de desenvolvedor nas lojas de aplicativos, se houver um app mobile.
  • Os serviços de terceiros: pagamentos, e-mail, analytics, mapas, APIs de IA.
  • Os arquivos de design e qualquer documentação existente.

Se o repositório estiver na conta de outra pessoa, peça a transferência. A documentação do GitHub explica como uma transferência mantém o histórico, as issues e os pull requests.

Se alguém não colaborar, recupere o que for possível do seu lado: domínio e hospedagem muitas vezes são pagos com o seu cartão ou registrados no seu e-mail, e esse é um caminho de volta.

Lista de contas e recursos que precisam ser recuperados no resgate de um projeto
Antes de qualquer trabalho técnico, descubra quem controla cada um destes itens.

O que uma auditoria de código cobre?

Uma auditoria é uma análise estruturada do produto como ele realmente é, não como o último fornecedor o descreveu. Uma auditoria útil cobre estas áreas:

  • Arquitetura. Como as partes se encaixam e se a estrutura aguenta as funcionalidades de que você precisa.
  • Qualidade do código. Legibilidade, duplicação e o risco de cada mudança.
  • Segurança. Riscos comuns, como os do OWASP Top 10, além de como segredos e dados pessoais são guardados.
  • Infraestrutura. Hospedagem, deploy, backups e monitoramento.
  • Testes e documentação. O que existe, o que falta e quanto custaria completar.

O resultado deve ser um veredito claro para cada parte do produto: manter, consertar ou reescrever, cada um com o seu motivo. Só então alguém consegue dar um preço que reflita o código como ele é.

Na Sakura, trabalhamos exatamente nessa ordem: primeiro a auditoria, depois o orçamento. É a única forma de não orçar um resgate com base em promessas que o código não cumpre.

Cinco passos de um resgate de projeto: acesso, auditoria, veredito, estabilização e lançamento, transição
Um resgate em cinco passos. A auditoria define o plano, e o plano define o preço.

O seu projeto está travado agora? Conte o que aconteceu. Vamos começar pelos acessos e pela auditoria e dizer com honestidade o que dá para salvar.

Consertar o código ou recomeçar do zero?

Na maioria das vezes, consertar. Código antigo que roda em produção carrega anos de pequenas correções para problemas reais, e uma reescrita joga tudo isso fora junto com as partes ruins.

Joel Spolsky explicou isso no conhecido ensaio Things You Should Never Do. Ele chamou reescrever o código do zero de “o pior erro estratégico que uma empresa de software pode cometer”, com a Netscape como exemplo: a reescrita levou quase três anos enquanto os concorrentes avançavam.

Há casos em que reescrever é a resposta honesta. Esta tabela mostra como avaliamos:

SinalA favor de consertarA favor de reescrever
Fluxos principaisFuncionam quase sempre, com bugsNão funcionam
ArquiteturaSuporta as funcionalidades previstasBloqueia qualquer mudança importante
SegurançaProblemas corrigíveisProblemas na própria estrutura
TecnologiaCom suporte e fácil de contratarAbandonada ou impossível de contratar
EscalaGrande, com usuários e dados reaisPequena, pouco uso real

Mesmo quando a reescrita vence, raramente é preciso fazê-la de uma vez. O padrão Strangler Fig, de Martin Fowler, descreve como substituir um sistema por partes: as peças novas crescem ao lado das antigas até que o código velho possa ser desligado.

Matriz de decisão: consertar ou reescrever um projeto de software que está fracassando
A maioria dos sinais aponta para consertar. Reescreva só o que bloqueia o produto, e faça isso por etapas.

Como trabalhar com a equipe anterior durante o resgate?

Se o desenvolvedor ou a agência anterior ainda estiver acessível, uma transição curta e tranquila economiza tempo e dinheiro. Peça três coisas: acesso a tudo, uma lista dos problemas conhecidos e uma conversa de uma hora sobre como o produto é publicado.

Mantenha a conversa nos fatos. As pessoas contam mais quando não se sentem acusadas, e os detalhes que elas lembram sobre o código valem mais do que qualquer discussão sobre quem é o culpado.

Se a equipe anterior não colaborar, não espere por ela. Recupere as contas que você controla, comece a auditoria com o que existe e registre por escrito o que foi pedido e quando.

Como sair do resgate e chegar ao lançamento?

Com o veredito em mãos, trabalhe em uma ordem rígida. Primeiro o lançamento, depois as melhorias:

  • Estabilizar. Corrija os bugs críticos que derrubam o produto, perdem dados ou bloqueiam pagamentos.
  • Concluir os fluxos do lançamento. Termine só o que o produto precisa para ir ao ar; o resto espera.
  • Configurar deploy e monitoramento. Para que publicar vire rotina e os problemas apareçam antes que os usuários os relatem.
  • Lançar. Os usuários reais vão mostrar quais dos problemas restantes importam de verdade.
  • Melhorar. Trabalhe o resto da lista conforme o impacto no negócio.

Versões semanais que você pode testar mantêm o resgate honesto. Depois que um projeto já saiu do rumo uma vez, é preciso ver o progresso toda semana, e não apenas ouvir falar dele.

Por exemplo, uma startup cuja agência perdeu vários prazos pode descobrir que a maior parte do produto funciona e que três fluxos quebrados bloqueiam o lançamento. Consertando esses três primeiro, o produto vai ao ar, e o resto do backlog é planejado com dados reais de uso.

Quanto custa resgatar um projeto?

Depende do que a auditoria encontrar, por isso um orçamento honesto vem depois da auditoria, e não antes. Quem orça um resgate sem olhar o código está chutando.

Depois da auditoria, o trabalho até o lançamento normalmente pode ser orçado com escopo fechado. Assim você recebe um valor claro para chegar à produção, separado das melhorias que vêm depois.

Se você estiver comparando propostas para o próprio resgate, valem as mesmas regras de qualquer projeto. O nosso guia sobre preço fechado ou por hora explica quando cada modelo funciona.

Como evitar passar por isso de novo?

Um projeto resgatado é a chance de colocar as proteções que faltaram da primeira vez:

  • Propriedade. O repositório, a hospedagem, o domínio e as contas nas lojas ficam registrados em nome da sua empresa.
  • Documentação. Ela é escrita durante o trabalho, para que o produto nunca mais dependa de uma só pessoa.
  • Marcos. Os pagamentos acompanham resultados verificáveis, como uma versão funcionando em um link de teste.
  • Um processo de mudanças. Requisitos novos são estimados e aprovados antes de alguém começar a trabalhar neles.
  • Suporte depois do lançamento. Um plano claro para correções e atualizações, como um plano de suporte mensal.

Se você for escolher uma equipe nova para a próxima etapa, o nosso guia sobre como escolher uma agência de desenvolvimento reúne as perguntas que revelam parceiros fracos antes da assinatura.

Se você quer que o seu produto volte a andar, mande um briefing curto. Vamos começar pelos acessos e pela auditoria, para que a situação fique clara antes de qualquer compromisso grande.

Perguntas frequentes

Dá para resgatar um projeto se o código é realmente ruim?

Na maioria das vezes, sim. Uma auditoria mostra se é mais barato consertar o código existente ou reescrever partes dele, e justifica cada recomendação.

E se não tivermos acesso ao servidor nem ao repositório?

Isso é comum. Comece pelas contas registradas em nome da sua empresa, como domínio e hospedagem, e peça à equipe anterior que transfira o resto.

Quanto tempo leva uma auditoria de código?

Depende do tamanho do produto e dos acessos disponíveis. O escopo e a duração da auditoria são combinados antes, para que você saiba quando esperar o veredito.

É melhor reescrever tudo?

Raramente. Reescrever tudo joga fora anos de correções e atrasa o lançamento; substituir as partes mais fracas por etapas costuma ser mais rápido e mais seguro.

Podemos continuar trabalhando com vocês depois do resgate?

Sim. O desenvolvimento e o suporte podem continuar com a mesma equipe, ou o projeto é entregue à sua própria equipe com toda a documentação.

Sobre o autor

Gleb Sosnovskiy

Tech lead da Sakura Agency. Lidera o desenvolvimento dos projetos web e mobile.

Não sabe bem do que precisa?

sakura