Eu me encontrei em uma situação difícil ultimamente. Estou trabalhando em um jogo com um colega de programação há quase 8 meses. Nós dois começamos a programar em agosto do ano passado, ele é um estudante do segundo ano do ensino médio, sou técnico de suporte de TI por profissão e sou um programador autodidata com vários livros e assinaturas on-line.
O problema que tenho visto constantemente é que, à medida que escrevemos um pedaço de código, muitas vezes ele é um pouco hackeado, tem muitas falhas e, se é um novo conceito para um de nós, cheio de soluções ingênuas. Está tudo bem, estamos aprendendo, espero que nosso código seja um pouco hackeado no início ou no segundo passe. O problema se apresenta quando se trata de realmente consertar e refatorar aqueles comportamentos cortados em conjunto.
Meu parceiro manterá seu comportamento recém-pavimentado, recusando-se descaradamente a ver qualquer erro no momento em que começar a funcionar. Reivindicando quase a perfeição de uma parte da estrutura que eu não posso nem tentar usar, mesmo que ela tenha comentários e métodos e campos adequadamente nomeados. Não importa o quanto eu tente, simplesmente não consigo fazê-lo ver as falhas óbvias que impedirão novas mudanças ou expansão do comportamento sem quebrá-lo completamente e tudo o que está tão intimamente ligado a eles pode estar na mesma classe. As soluções invadidas permanecem permanentemente invadidas, os projetos mal pensados permanecem como estavam quando foram concebidos e testados pela primeira vez.
Eu gasto tanto tempo cuidando do novo código quanto escrevendo sozinho, sou uma perda do que fazer. Meu parceiro perdeu esta noite e deixou claro que não importa o que, não importa a referência, não importa a prática comum, não importa a prova irrefutável, seu código permanecerá do jeito que ele fez pela primeira vez. Mesmo que livros inteiros tenham sido escritos sobre o motivo de você querer evitar fazer algo, ele se recusará a reconhecer a validade deles, alegando que é apenas a opinião de alguém.
Tenho interesse em nosso projeto, mas não tenho certeza se posso continuar trabalhando com meu parceiro. Parece que tenho três opções em aberto para mim.
- Pare de se preocupar com o funcionamento da base de código além do ponto de compilação e lide apenas com a tentativa de manter e analisar o comportamento que quase não avança. Esperando que uma vez que as coisas comecem a se deteriorar seriamente, ele verá isso e tentará fazer mais do que apenas colocar uma banda sobre o design fundamentalmente defeituoso.
- Mantenha os argumentos sem fim sobre questões que foram descobertas há uma década por outros indivíduos muito mais capazes.
- Pare de programar neste projeto, abandonando quase 10.000 linhas do meu código e inúmeras horas se arrastando pelo design e tente encontrar um novo projeto por conta própria.
Que abordagem posso adotar para determinar se vale a pena continuar com este projeto com essa pessoa? Ou que fatores devem influenciar minha decisão? Escrevemos muito código e não quero desistir disso, a menos que seja necessário.