Trabalho em um projeto de software principalmente solo há mais de 5 anos. Era uma bagunça para começar (eu sou o terceiro ou quarto desenvolvedor a trabalhar nela), e embora seja menos bagunçada agora, ainda está incrivelmente desorganizada. A taxa de progresso em controlá-la é glacial e estou começando a me sentir desanimado com o estado em que está. Como realmente começo a consertá-lo?
Detalhes do projeto: é um programa de vendas escrito quase inteiramente no Visual Basic Classic (VB6) com um back-end do MySQL e um mecanismo de relatório escrito em C #. É um prazer trabalhar com o módulo de relatórios C #, ele foi escrito apenas nos últimos dois anos e antes que todos os relatórios fossem feitos no Crystal Reports 9 (sim, ainda temos alguns relatórios que dependem dele).
O programa em si, no entanto, é um desastre completo. Não há um total de 90k LOC e cerca de 10k linhas de comentários (a maioria não é documentação, mas o código antigo que foi comentado). 158 arquivos de formulário e 80 arquivos de módulo. Não tenho idéia de quantas delas são realmente usadas, porque alguns recursos do programa são simplesmente obsoletos e (algumas vezes) são anotados como tal sem que o código associado seja removido do programa. Eu acho que apenas 50% do código está em uso produtivo real.
Eu tenho medo de tocar muito no código só porque não tenho certeza se estou quebrando algo em que um cliente obscuro se baseia, isso aconteceu em mais ocasiões do que eu posso contar. É como se houvesse minas terrestres espalhadas por todo o código.
Não há realmente nenhuma estrutura para o projeto. Não é orientado a objetos, exceto nos poucos lugares em que tive a paciência de reformar até agora. Se você precisar obter dados em um formulário, instancia um objeto de banco de dados, declara sua consulta ali mesmo na função, executa-a e faz o que quiser com o conjunto de dados.
Quando comecei a trabalhar no projeto, não havia controle de origem em uso. Tentei incentivar as outras pessoas em que estava trabalhando a usá-lo, mas eu era o cara novo e minhas tentativas de convencer as pessoas a usarem o subversion quase que falharam. O desenvolvedor líder da empresa finalmente pegou um bug mercurial nos últimos dois anos e garantiu que todos os desenvolvedores usem o controle de origem em todos os projetos agora, então pelo menos isso é um progresso.
Acho que se eu pudesse trabalhar na reforma do projeto em tempo integral, seria capaz de fazer um progresso decente e talvez até ter uma estimativa de quanto tempo levaria para eu reformar completamente o projeto, mas ele está em uso ativo e estou constantemente sendo solicitado a apagar incêndios, corrigir bugs, adicionar recursos etc. etc.
Então, como começo a consertar esse projeto? Tente usar a ferramenta VB6 com outro idioma? Tentar e reescrever o programa no meu tempo livre? Ou isso é completamente inútil?
Atualizar
Após esse post, voltei ao projeto com zelo renovado, mas voltei à desesperança alguns meses depois de ver uma taxa de progresso tão lenta. Repeti esse ciclo mais duas ou três vezes ao longo do próximo ano.
Desde então, mudei para um trabalho diferente. Embora depois de tantos anos de vb6, e apenas experiência periférica com outras tecnologias, a pesquisa tenha sido difícil e eu tenha enfrentado muitas rejeições ao longo do caminho (cerca de uma dúzia de entrevistas ao longo de um ano). Meu conselho para outras pessoas nessa situação é considerar deixar apenas esse fator. Considere o dano que você pode causar à sua carreira permanecendo em uma posição sem saída como essa.