Manejando a mi anticuado compañero de trabajo

28

Soy un programador bastante joven y trabajo en el departamento de TI de una empresa mediana. Tengo un compañero de trabajo y es un muy buen programador de Visual Basic 6. Y quiero decir muy bien. Honestamente. Puede entregar aplicaciones de trabajo, que contienen muy pocos errores, en el tiempo que necesito para tomar mi primera taza de café y arrancar mi máquina. Él es así de bueno.

La cosa es que estamos trabajando con un equipo y su estilo de trabajo es completamente anticuado. Él no cree en el software de versiones (si solo te aseguras de que tu código sea correcto, no necesitas todas esas tonterías). No cree en la implementación (puedo entregar un ejecutable que funcione. La forma en que se implementa es para que los administradores del sistema lo descubran). No cree en la abstracción. ('si desea crear una subrutina, continúe, pero no llame a ninguna subrutina desde esa subrutina. De ese modo, se vuelve desordenado y el código es difícil de seguir. De esta manera, todos pueden seguir cada paso del camino. 'o' sí, seguro que puedes usar esa biblioteca para hacer eso por ti, pero de esa manera no entiendes realmente lo que está sucediendo ') y ciertamente no cree en OOP. (trabajamos en VB.net)

Es tan bueno en lo que hace que puede entregar aplicaciones mucho más rápido que yo. Pero simplemente no funciona en un equipo. Nuestro otro miembro del equipo es callado y no le gusta hablar, aunque tiende a estar de acuerdo. Nuestro gerente cree que hago puntos válidos, pero no es un programador.

Me cuesta mucho mantener los programas que ha escrito, y no es un buen ambiente de equipo. ¿Qué crees que es lo mejor que puedo hacer?

Martijn
fuente
2
"'sí, seguro que puedes usar esa biblioteca para hacer eso por ti, pero de esa manera realmente no entiendes lo que está pasando'". Lo que quiere decir aquí es que ÉL no entiende lo que está pasando. Sí :) Parece que tiene miedo de aprender algo más para mejorar su productividad.
Damien Roche
77
Su compañero de trabajo no es anticuado, simplemente se perdió algunas lecciones importantes de programación 101. El control de versiones, la abstracción, etc., todo esto ha sido muy importante hace 20 años, así como hoy.
Jas
77
El término "anticuado" es un término bastante cargado y poco ilustrado. Tengo a alguien con quien trabajo que podría describirse en términos similares a los que usted ha utilizado. Sin embargo, él es considerablemente MÁS JOVEN que yo.
Bill
1
El punto sobre las bibliotecas es bastante válido. Realmente necesita comprender lo que hacen; por ejemplo, las cosas en bibliotecas que crean hilos o lanzan excepciones pueden hacer que su vida sea MUY miserable. Sin embargo, un vistazo rápido a su doco o código fuente suele ser adecuado para satisfacer la curiosidad. Este NO es un argumento para NO usar cosas en bibliotecas, es solo un argumento para saber lo que hacen (y luego usarlas felizmente en lugar de ignorarlas).
rapid_now

Respuestas:

25

Esto suena como uno de esos "Él es un buen tipo pero ..." donde sabes que la verdad está llegando. Y la verdad parece que no es realmente tan bueno como ingeniero. Un buen software no se trata solo de la velocidad de trabajo y desarrollo. También se trata de las otras cosas que mencionó: mantenibilidad, compatibilidad, abstracción (para eficiencia futura), etc.

Entonces, dicho esto, parece que tienes un desarrollador de problemas en tus manos. Lo que es peor para ti es que está probado y probablemente establecido en sus caminos. ¿Entonces que puedes hacer?

  • Trabaja a su alrededor.
  • Esfuércese por producir sus proyectos en un horario tan apretado como él.
  • Y si no puede, produzca un mejor resultado.
  • Con el tiempo, esos conceptos probados que él descarta comenzarán a dar sus frutos.

Por otro lado, si te ves obligado a trabajar a su manera, vete.

Nicole
fuente
Estoy de acuerdo con esto tanto como la respuesta de @pierre 303. Él dejará el sitio oscuro cuando parezca que tiene las herramientas hermosas que tienen los buenos.
Kortuk
3
Le toma muy poco codificarlo, pero su código es mantenible. Su pago se mostrará a medida que se mantenga el código. Un buen departamento está rastreando el tiempo dedicado a cosas como el mantenimiento y verá un menor tiempo dedicado a su código, lo que hace que valga un poco más de tiempo por adelantado.
Kortuk
+1 para demostración utilizando las buenas prácticas de trabajo en equipo.
Klaim
11

No intentes cambiar a tu colega. Lo estás describiendo como alguien capaz de entregar software de trabajo. Probablemente sea demasiado tarde para integrarlo en el equipo tampoco.

Entonces tienes dos opciones:

  • Adáptate a ti mismo. ¿Tal vez con el tiempo podrá convencerlo de la utilidad de un sistema de control de fuente? Tendrás que aumentar tu círculo de influencia . Cuanto más resistente sea al cambio, más tiempo necesitará.

  • Retírate de la team. Tienes muchos puntos para justificar esto. Tal vez deberías dejar que mantenga solo sus propias aplicaciones y dedicarte a cosas nuevas.

  • Retírate de la company. A veces, esta es la única solución.


fuente
44
303, creo que este es el mejor consejo, un chico nuevo que critique a un compañero de trabajo experimentado y muy competente con el gerente dará como resultado sentimientos muy negativos, con el tiempo puede adaptarse y ayudar a otros a adaptarse también. He tenido nuevas contrataciones que comienzan conmigo y piensan que saben algo que funciona mejor y van al jefe, mi jefe escuchará cualquier cosa, pero me enoja, ya que en 3 meses se dan cuenta de por qué lo estaba haciendo de la manera que lo hice. y se están quejando del cambio. Creo que es un nivel diferente, ya que SVN y OOP, pero se aplica la premisa básica.
Kortuk
3
Hay 3 tipos de personas en el mundo: los que entienden binario y los que no ...
Michael K
El truco es hacer que sea fácil de usar, y mostrar que hay beneficios sustanciales cuando realmente importa. Al igual que los cinturones de seguridad ...
No estoy de acuerdo. Algunas prácticas son buenas solo cuando trabajas solo, y este tipo parece estar lleno de ellas.
Boris Yankov
Volviendo a esta pregunta y esta respuesta, después de más de un año, la opción 3 resultó ser la solución adecuada
Martijn
6

Si yo fuera usted, establecería mi propio sistema de control de fuente ahora mismo. Comience a usarlo para todo lo que codifique y adminístrelo para que los otros miembros de su equipo tengan cuentas y puedan acceder a él. Sus otros compañeros de trabajo probablemente estarán entusiasmados con su uso.

Su colega que no cree en tales prácticas puede no ser fácil de persuadir. Sin embargo, cualquier código con el que se vea obligado a trabajar y que haya sido escrito por él debe ir al control de versiones para que pueda trabajar con él. Cuando necesite acceso a sus cambios, envíele un conjunto simple de instrucciones paso a paso sobre cómo extraer su código del repositorio.

No tienes que ser combativo o ir por encima de él para involucrarlo en procesos más modernos. A veces, simplemente seguir su propio camino y ser un líder con acción es más efectivo que tratar de convencer a alguien con palabras. Pequeños pasos. Si comienza a responder mejor al control de versiones, comience a refactorizar las subrutinas y a agregar pruebas unitarias para protegerse contra los cambios. Automatice las pruebas y muéstrele cómo puede acceder a los resultados tan pronto como se registre.

Muchas veces las personas simplemente son resistentes porque no les gusta el cambio. Pero si se les presentan los cambios de manera gradual y de manera que les sea fácil seguirlos, a menudo verán los beneficios muy rápidamente.

Sobre todo, que sea todo lo más simple posible para él (Keep It Simple Stupid). Permítale comenzar a seguir estas prácticas en sus propios términos. Pero no dejes que te arrastre hacia abajo.

Robert S Ciaccio
fuente
He tenido malas experiencias al 'tratar de brillar': un repositorio privado no ayuda mucho cuando no hay un concepto definitivo de 'revisión' (¿qué cambios tiene el compañero de trabajo para integrarse? A menudo, con personas que no usan CVS, es como 'esto función, pero no esos '). Lo mismo para las pruebas automatizadas: ¿de qué sirve una compilación que no se arregla por quien la rompe? refactorizas y escribes las pruebas, él defrauda y rompe las pruebas. de nuevo: tu palabra contra la de él, pero ahora tus pruebas 'fallan', lo que 'prueba' que no atrapan nada valioso. No puedes sobresalir contra tu equipo.
keppla
4

Seré sincero, no estás pintando una buena foto de él Métodos arcaicos, software difícil de mantener, terco a las nuevas formas de trabajo, contra la abstracción, etc.

Por lo que ha dicho, si él está produciendo software en gran medida libre de errores MÁS RÁPIDO que usted sin el uso de bibliotecas reutilizables y patrones de diseño dirigidos al desarrollo rápido de aplicaciones, entonces dice más sobre usted, que sobre él ...

... sobre él ... sí, encuentre una manera de NO trabajar con él y NO estar asociado con su trabajo. Parece que tiene una actitud egoísta típica hacia su trabajo. No puedes trabajar con alguien así, solo puedes observarlo trabajar y ordenar después de ellos (como lo eres actualmente).

Damien Roche
fuente
1
Puedo codificar mucho más rápido sin usar nada especial en proyectos pequeños, pero, demonios, mantienes una base de código bien diseñada mejor. Aquí es donde el buen diseño vale la pena. El diseño completo de la revisión de código de software se basa en el hecho de que lleva más tiempo en mantenimiento que en codificación para corregir errores.
Kortuk
pieza clave "en pequeños proyectos". Dudo mucho que estemos hablando de pequeños proyectos aquí (léase: esfuerzo de equipo)
Damien Roche
Totalmente en desacuerdo. Esto no dice nada sobre Walter, excepto que él sabe cuáles son todas estas buenas prácticas y cómo pueden beneficiar al equipo. no usar estas prácticas es de lo que se trata RAD, porque te ralentizan.
Ross
4

He visto esto antes ,

Y estoy casi dispuesto a apostar: este tipo de hombre solo parece "rápido" porque tiene un conjunto de "patrones" probados en su cabeza. El 99% de las aplicaciones de Line of Business son CRUD , cosas básicas.

Probablemente use una tonelada de Copiar y Pegar de su propio código existente (nada de malo en eso).

Pero..

En el momento en que encuentra algo remotamente complejo, se cae, ¿por qué? porque ya no se ajusta a ninguno de los "patrones" básicos.

Un pequeño reto ...

Crearía un proyecto adicional, uno complejo que realmente se beneficie de la OOP y la reutilización del código.

Luego muéstrele ese proyecto y pídale que lo implemente característica por característica.

Entonces apostaría a que su código seguramente será 10 veces más grande y 10 veces más feo si lo hubiera implementado a su manera.

Noche oscura
fuente
sí, de acuerdo, pero ¿qué puede hacer él al respecto?
Ross
¿Por qué pasar tiempo reimplementando un proyecto de juguete?
@Andersen porque algunos programas que no quieren escuchar la razón solo aceptan evidencia una vez que se presenta frente a ellos
Darknight
@Darknight, probablemente no, pero aún así, ¿por qué considerar dedicar tiempo a volver a implementar proyectos de juguetes que no se aplican a problemas de la vida real?
3

Mira esto desde el lado comercial.

Tomas más tiempo para producir código con errores. Produces menos ingresos, por lo tanto apestas.

Si, con el tiempo, puede revertir esto, entonces puede revertir esto.

Pero tal vez, solo tal vez, este programador anticuado realmente puede enseñarle un par de cosas sobre la producción de código rápidamente que es tan libre de errores. ¿Quizás sus técnicas no son tan antiguas como piensas?

Me parece sospechoso que alguien pueda producir un código tan bueno sin algunas prácticas muy buenas. Es posible que pueda aprender esas prácticas y aplicarlas a las "mejores prácticas" y cosas de moda que entienda.

ElGringoGrande
fuente
2

Si su gerente no es un programador, intente ponerlo en términos que él entienda.

  • Deberíamos usar sourecontrol porque si no lo hiciéramos, podríamos tener grandes problemas para recuperarnos

  • Me lleva x tiempo más tiempo porque se niega a seguir algunos procesos bastante básicos.

Por otro lado, asegúrese de no quedar demasiado atrapado en la perfección, es decir, esta es una mejor práctica que debemos seguir. Es probable que su compañero de trabajo tenga mucho que agregar, es posible que tenga que empujarlo lentamente en la dirección correcta.

MrEdmundo
fuente
"recuperando" == reversión.
2

Parece que tu compañero de trabajo nunca se ha desarrollado en un equipo. Ese tipo de compañero de gurú solitario no permite una buena dinámica de grupo. Por lo tanto, cuéntele a su superior y trate de discutir los pros y los contras con su compañero para hacerlo. Si pudieras hacerlo de la mejor manera, pero si él se niega, sube al mando

Guiman
fuente
55
subir la cadena de mando hace que los enemigos de cada persona sobre la que pisaste, y a menudo no resulte bien.
Kortuk
1

Hable con su gerente, así de simple como lo hizo aquí. Aquí hay potencial para el crecimiento: si su compañero de trabajo es bueno como usted dice que es, no debería llevarlo demasiado convincente para que comience a convertirse en usar el control de fuente y .Net con los conceptos adecuados de OO.

Otávio Décio
fuente
1
Eso es si quiere cambiar ...
Walter
3
Muchos gerentes que he tenido en el pasado no valoran que el nuevo tipo cambie algo que parece funcionar. Valoran un producto hecho rápidamente ya que no entienden completamente lo que está haciendo. Parece que tienes un jefe que no es técnico, lo cual es un gran perjuicio para tu sección, tal vez.
Kortuk
1
Si no lo hace, entonces es aún más importante que el gerente (suponiendo que haya uno) lo sepa.
Otávio Décio
@Kortuk: ese es un muy buen punto, y si eso es cierto, entonces el OP está en problemas reales.
Otávio Décio
Creo que si el OP intenta tomar medidas para intentar cambiar repentinamente estas cosas y obligarlas a pisar los dedos. Esto hace enemigos y podría dañar un ambiente de trabajo donde podría aprender mucho de su colega.
Kortuk
1

Hablaría con otros para tener una idea más amplia de cómo se ven las cosas en donde estás. Tal vez hay algunas separaciones allí para que su código no tenga que mezclarse demasiado con otros, ya que existe el potencial de segregarlo en su propia área de una manera que esto pueda manejarse, aunque esto es más para un nivel superior como un director o CIO para hacer en lugar de un desarrollador.

Es posible que desee hablar con él para ver qué tipo de sistemas más grandes ha construido, ya que hay algunos sistemas de grandes empresas que tienden a ser una gran cantidad de bloques de construcción donde el código de espagueti puede entrar en la tierra de "Oh, esa es la razón por la que OOP ¡puede ser buena!" aunque esto a veces toma el caso donde resulta bastante útil ver cómo esto puede ser algo útil tener en la caja de herramientas de uno.

La apatía puede ser otro sospechoso para ver si es por eso que rechazaría algunas cosas que consideraría casi fundamentales en términos de cómo tiendo a diseñar el código, pero tal vez haya recibido demasiada ayuda de Kool.

JB King
fuente
1

Desafíelo (en el buen sentido) para demostrarle lo contrario, muéstrele el lado genial de las herramientas y prácticas. No seas condescendiente.

Por ejemplo, tal vez no cree en el control de versiones como una ayuda, pero muéstrele cómo ramificar / fusionar y cómo puede trabajar en varias características experimentales sin necesidad de tener una gran cantidad de archivos.

Con respecto a la POO, muéstrele algunos patrones de diseño geniales / complejos, como el patrón de comando, el patrón de tareas y cómo puede ahorrarle tiempo valioso, y a todo su equipo.

Si no lo tiene interesado en lo más mínimo ... podría ser un caso perdido, pero de nuevo, tiene las herramientas para que su equipo y usted lo superen. Intente utilizar un software de repositorio que muestre / envíe mensajes de correo electrónico de confirmación que su gerente pueda ver, que brindarán transparencia a su gerente y dejarán a su compañero de trabajo fuera de la imagen (bitbucket.org tiene repositorios privados gratuitos con espacio ilimitado, si usa mercurial).

Al final, no trates de convencer con palabras, sino con acciones irrefutables, esa es la mejor manera de tratar con personas obstinadas en mi humilde opinión (la psicología inversa también funciona a veces, jajaja).

dukeofgaming
fuente
1

bueno, las técnicas que mencionas son obviamente buenas, pero también debes preguntarte si las estás impulsando como ideología. Encuentro que los programadores más jóvenes tienden a ser un poco evangélicos sobre lo que aprendieron en la universidad. recuerda que estas técnicas son buenas debido a resultados: el control de versiones permite el desarrollo concurrente, un seguimiento más claro del diseño, desarrollo, prueba, etapas de corrección de errores. Si sus proyectos realmente son a corto plazo, mucho de eso es simplemente inapropiado y terminará haciéndolo menos ágil. Simplemente no es el caso que las mejores prácticas significan usar todas las mejores prácticas posibles. La abstracción, por ejemplo, definitivamente puede ser más una responsabilidad que una ayuda, al menos algunas veces. el control de versiones tiene más sentido cuando tiene líneas de tiempo de desarrollo extendidas, código complejo, múltiples programadores: hay una especie de sinergia, que es difícil de lograr con poco a poco.

Creo que el lugar para comenzar es estar atento a la posible reutilización: a medida que pasan los proyectos, piense en puntos en común o en marcos más generales. tratar de salir adelante de los proyectos sería un movimiento poderoso y podría permitirle trabajar con más técnica ...

Markhahn
fuente
El control de versiones también proporciona el historial. Importante cuando la gente ya no está cerca.
0

Debe pedirle a su supervisor que haga una presentación para TODOS sobre por qué el software de "versionado" es bueno. No destaques a tu compañero de trabajo.

Soy un escéptico del software de control de fuente, porque veo que la gente lo usa mal todo el tiempo, como una forma de evitar el trabajo.

Mis compañeros de trabajo se están fusionando CONSTANTEMENTE, constantemente pisándose los pies de los demás. Pero una buena conferencia amistosa sobre sus beneficios sería algo agradable y estimularía las discusiones.

Ponk
fuente
1
pisar constantemente los pies de los demás es una señal de que el software está mal diseñado. No tiene nada que ver con el control de fuente, y puede empeorar realmente sin él.
deadalnix
@deadlnix Esa podría ser la razón también, pero creo que también se puede atribuir, en algunos casos, al uso excesivo de la ramificación cuando no es la solución adecuada.
Nicole