Últimamente me he encontrado en una situación difícil. He estado trabajando en un juego con un compañero de programación durante casi 8 meses. Ambos comenzamos como recién llegados a la programación alrededor de agosto del año pasado, él es un estudiante de CS de segundo año, soy un técnico de soporte de TI de oficio y soy un programador autodidacta con multitud de libros y suscripciones en línea.
El problema que he estado viendo constantemente es que a medida que escribimos un fragmento de código, a menudo será un poco pirateado, tendrá muchas fallas y, si es un concepto nuevo para uno de nosotros, lleno de soluciones ingenuas. Esto está bien, estamos aprendiendo, espero que ambos códigos sean un poco pirateados juntos en la primera o segunda pasada. El problema se presenta cuando se trata de corregir y refactorizar esos comportamientos pirateados.
Mi compañero se aferrará a su comportamiento recién improvisado, negándose descaradamente a ver cualquier error en el momento en que comience a funcionar. Reclamando casi la perfección de una pieza de estructura que ni siquiera puedo tratar de usar, incluso si tenía comentarios y métodos y campos con el nombre apropiado. No importa cuánto lo intente, simplemente no puedo lograr que vea los defectos evidentemente obvios que evitarán cualquier cambio adicional o expansión del comportamiento sin romperlo por completo y todo lo que está tan estrechamente relacionado podría estar en la misma clase. Las soluciones pirateadas permanecen permanentemente pirateadas, los diseños mal pensados permanecen como estaban cuando se concibieron y probaron por primera vez.
Paso tanto tiempo cuidando niños del nuevo código como lo escribo yo mismo, no sé qué hacer. Mi compañero lo perdió esta noche y dejó en claro que no importa qué, sin importar el punto de referencia, sin importar la práctica común, sin importar la prueba irrefutable, su código se mantendrá de la forma en que lo hizo por primera vez. Incluso si se han escrito libros completos sobre por qué desea evitar hacer algo, él se negará a reconocer su validez alegando que es solo la opinión de alguien.
Tengo un interés personal en nuestro proyecto, sin embargo, no estoy seguro de poder seguir trabajando con mi pareja. Parece que tengo tres opciones abiertas para mí.
- Deje de preocuparse por el funcionamiento de la base de código más allá del punto de compilación, y solo trate de tratar de mantener y analizar el comportamiento que apenas cojea. Esperando que una vez que las cosas comiencen a romperse seriamente, él lo verá e intentará hacer más que simplemente poner una venda sobre el diseño fundamentalmente defectuoso.
- Mantenga los argumentos interminables sobre los problemas que han sido resueltos hace una década por otras personas mucho más capaces.
- Deje de programar en este proyecto, abandonando casi 10,000 líneas de mi código e incontables horas esclavizándose por el diseño e intente encontrar un nuevo proyecto por mi cuenta.
¿Qué enfoque puedo tomar para determinar si vale la pena continuar con este proyecto con esta persona? ¿O qué factores deberían influir en mi decisión? Hemos escrito mucho código y no quiero renunciar a esto a menos que sea necesario.