Desenvolvimento

8 ago, 2017

8 pontos-chave para reescrever um software

Publicidade

Assim como uma refatoração grande, reescrever um software não é algo simples. Após vários anos, adquirimos experiência suficiente para indicar o que você deve considerar ao planejar e executar um processo para reescrever software.

1. As duas plataformas existirão juntas por um determinado período ou não?

Você planeja manter a versão de legado e a nova versão em produção? Caso positivo, por quanto tempo? Você deve evitar manter duas versões em produção por muito tempo devido aos custos operacionais e de oportunidade.

2. Quem trabalhará na reescrita do código e quem trabalhará na versão do legado?

Geralmente, os desenvolvedores preferem trabalhar em projetos “greenfield”. Você deve considerar isto ao planejar quem trabalhará na versão do legado e quem trabalhará na nova.

3. É inviável reescrever todas as funcionalidades ao mesmo tempo

Mapear cada funcionalidade entre a versão do legado e a nova é inviável. Dito isto, que funcionalidades devem ser as primeiras a serem reescritas?

Leve em consideração como os clientes atuais serão afetados por um produto com menos funcionalidades.

4. Reescrever o software diminuirá ou interromperá o lançamento de novas funcionalidades na versão do legado

É provável que você não lance novos recursos na versão legada durante o processo de reescrita do código. Assim como os usuários finais, os clientes internos (comercial, produtos, financeiro) não terão novas funcionalidades. Seus clientes internos e outras partes interessadas vão pressioná-lo para entregar novas funcionalidades.

Certifique-se que a comunicação antes e durante o processo de reescrita do software seja clara e que cada stakeholder esteja alinhado com as metas.

5. O processo deve ser secreto ou público?

Imagine que você é um cliente potencial de um produto de software. Você planeja comprá-lo, mas descobriu que uma versão completamente nova será lançada em três meses. Você compraria a versão do legado ou esperaria por três meses? Multiplique isso por dezenas ou centenas de potenciais compradores. O fornecedor pode perder muito dinheiro.

Por isso, se você é o fornecedor, deve pensar cuidadosamente sobre como e quando divulgar o lançamento da nova versão.

6. Migração de dados

O processo de reescrever um software não envolve apenas o desenvolvimento de funcionalidades. Você também precisa planejar a migração de dados. As pessoas costumam subestimar a complexidade e o esforço necessários para migrar dados da versão do legado para a nova versão.

Essa atividade não deve ser apenas mais uma tarefa em seu quadro, chamado “migração de dados”. É muito maior que isso.

Por exemplo, imagine que você precisa migrar as contas de seus usuários. Se a sua versão de legado é gerenciada por um terceiro, é provável que você não tenha acesso às senhas criptografadas dos usuários, portanto, não será possível migrá-las. Você terá de solicitar a cada usuário para redefinir a senha na nova versão. Isso também faz parte do processo de migração de dados.

7. Prepare-se para uma possível redução nas taxas de conversão

Você lançará uma nova versão com menos recursos. Quem garante que as taxas de conversão permanecerão as mesmas? As taxas de conversão são essenciais em algumas indústrias, como no e-Commerce.

Preferencialmente, você deve manter o suporte à versão legada e à nova por um tempo para que, no caso de redução drástica nas taxas de conversão, você tenha um plano de backup.

8. Planeje treinamento para os usuários internos

Este é outro ponto negligenciado. O plano de reescrever o software precisa ter uma fase de treinamento de usuários internos antes de disponibilizar seu novo produto em produção. Não subestime a importância deste item. Pode demorar algum tempo, pois seus usuários internos darão feedback sobre pontos que talvez precisem ser alterados.

Usuários internos podem ser encontrados em várias áreas, como help desk e vendas.

 

***

 

Este artigo foi originalmente publicado em: http://blog.plataformatec.com.br/2017/07/8-pontos-chaves-para-reescrever-um-software/