Cómo trabajar con un desarrollador que siempre insiste en que su código es perfecto y nunca admite sus errores

Cualquier desarrollador que siempre insista en que su código es perfecto y nunca admite errores es un dinosaurio, ya sea que tenga 12 o 120 años. (Y eso es realmente insultante al noble dinosaurio).

Porque el desarrollo de software moderno ha demostrado una y otra vez que:

  • El desarrollo de software es un esfuerzo social, de equipo (como todo trabajo).
  • Todos se paran sobre los hombros de gigantes por definición.
  • De hecho, no existe tal cosa como el código “mi”.

Es un signo seguro de individualismo, el enemigo del buen desarrollo de software. ¿Promovido a gerente? ¿Estás bromeando? Debe ser sacado de la industria (controlada por los trabajadores).

Una vez tuve a esa persona en mi equipo, así que, después de agotar todas las oportunidades, se lo puse en contacto con mi gerente. ¿Sabes lo que hizo el gerente? Él … lo promovió a un líder de equipo. El tipo no tenía que hacer ninguna programación en esta capacidad, y resultó ser un gerente decente.

Entonces, esa broma “aquellos que no pueden hacer, enseñar, aquellos que no pueden enseñar, manejar” tienen un grano de verdad en ello.

Me gustan algunas respuestas, como “darle cuerda” y “hablar sobre el hecho de que se toma todo personalmente”.

Sin embargo, tienes otra opción. A menos que el problema sea con el CTO y siempre que él / ella sea accesible, puede acercarse al CTO y explicar los problemas.

Asegúrese de que, si lo hace, tenga a mano una gran cantidad de documentación y también de que nunca se haya sobrepasado los límites (es decir, ¿estaba hurgando en el código y vio algo o estaba arreglando algo que le dijeron y notó esto?) y que cada colega te cuide la espalda. Si tiene dudas sobre alguno de estos elementos, no vaya a la CTO, sino al superior técnico superior común después de haber sido referido por su cadena de mando (lo que podría ser bastante grande en algunas empresas). No hace falta decir que, de todos modos, es necesario asegurarse de todo lo anterior si es necesario escalarlo.

Ahora, la solución que voy a sugerir es poco ortodoxa, pero generalmente funciona: la persona que se le acerca debe mostrar que ellos mismos cometen errores de vez en cuando. Esto es extremadamente importante porque, en ese momento, si esta persona sigue diciendo que su código es perfecto, básicamente está insinuando que “yo soy mejor que usted” y eso nunca es una buena idea para los superiores. Esto significa que tendrá que ceder al menos un poco. Ahora, he notado bastante a menudo que en muchas de estas situaciones el problema real es la “inseguridad inversa” o, para decirlo de otra manera, un caso de “Síndrome del Impostor inverso”. Lo que esto significa es que él o ella se siente muy inseguro con el código, pensando que él / ella “se enganchará”, etc. y su respuesta es la autoinflación, es decir, “soy tan bueno que mi código es siempre perfecto”. Este no es siempre el caso, sí, pero es bastante común.

Si este fuera el caso, lo anterior debería funcionar bastante bien para atenuar la defensa lo suficiente como para poder hablar y corregir el código y la forma en que se siente.

Creo que hay una combinación de algunos problemas aquí.

Si tiene un jefe de tecnología o hay una cadena de mando, su trabajo es preocuparse por ello. Si no es así, ese es el verdadero problema y encontraría otro trabajo porque es un signo de organización deficiente.

También necesitas estándares de codificación o su salvaje oeste. Sin calibraciones ni estándares, no hay un punto de referencia ni una opinión “correcta o incorrecta”, solo una opinión. Si tiene esto y el código en la revisión infringe el estándar, es fácil, puede vincular o citar el documento en la solicitud de extracción. no haga esta convocatoria a una reunión o cree normas de código usted mismo y haga que el equipo lo acepte.

Si el equipo no está dispuesto a hacer la documentación necesaria para corregir el problema, entonces, colectivamente, “todos los demás compañeros de equipo” no tienen espacio para quejarse.

Si parte de su trabajo es hacer revisiones de código y no quiere pasar el código, entonces rechace la solicitud de extracción. Si todo el equipo niega su solicitud de atracción y él no cumple, eso es negligencia en el cumplimiento del deber, y está en él.

Tenga en cuenta que este problema se puede resolver de muchas maneras. Ninguno de ellos depende de lo que esta persona piense, o de su ego.

Así es como trataría con él o con alguien como él. Cuando señale un error, asegúrese de dar alternativas y la razón de estas alternativas. Tal vez el código no escala? Si no es así, explique por qué. Luego tendrá que explicarte por qué cree que se ampliará y si su respuesta no es suficiente, indícalo. Sólo usa la lógica. Así es como funciona una revisión de código. Si comienza a divagar sobre cómo no necesita escalar, anote su respuesta y siga adelante. Cualquier ingeniero que no esté dispuesto a aprender de los demás se limitará enormemente.

Si esa es realmente la actitud del desarrollador, entonces es probable que el gerente del desarrollador ya esté trabajando con ese desarrollador para mejorar las habilidades de colaboración (usted le ha dicho al gerente, ¿verdad?)

Si el problema es tan grave y no se puede mejorar, esperaría tener un nuevo compañero de trabajo después de un tiempo (asumiendo que trabajo en un país donde es posible dejar de lado a los empleados con problemas).

Si ESO no sucede, entonces el problema no es el desarrollador, es el administrador.

Me ha ocurrido esto más de una vez, incluido un problema relacionado de personas (todos, por supuesto, todos) que solo son unos bulldogs sobre sus ideas cada vez que tienen una oportunidad. Para dos situaciones, utilicé el humor para resaltar su infalibilidad en varias interacciones y reuniones de equipo hasta que fueran suyas. Esto permitió a todos hablar sobre lo que les molestaba. Esto liberó la tensión que las personas sintieron que viene de no poder sugerir cambios, pero también se les exige que lo hagan. También le permitió al dev cambiar su propio comportamiento en lugar de que se le ordenara. Los colocó en el lugar (a propósito) en lugares muy públicos con el equipo (nunca audiencias más amplias) y funcionará solo si entiende su cultura lo suficientemente bien como para ser fluido en humor y tiempo y cómo usarlo para corregir un poder desequilibrio.

Para un chico que vino de una cultura diferente que hizo esto, insistiría. Estaba acostumbrado a argumentar su punto a muerte y, por lo general, estaba convencido de sus méritos (era bueno, si tenía impedimentos sociales). Una vez que dejé en claro mi razonamiento, y era sensato, y que no me despediría, él lo consentiría. También ayudó que tuviera poder informal solo por mi experiencia y manera. Esta persona fue difícil para otras personas con quien trabajar y finalmente la rechazó en las revisiones de código (a personas con autoridad real) y fue despedida. También siguió transmitiendo quejas en retro que estaban dirigidas a personas que no le gustaban. Problema difícil de tener para un equipo, no hay soluciones fáciles.

No puede hacer nada, a menos que maneje el equipo; solo el gerente del equipo puede resolver esto.

El gerente debe estar de acuerdo con su evaluación.

Si el gerente no está de acuerdo con su evaluación, tiene que soportar la situación o buscar otro equipo u otro trabajo.

El gerente puede pedirle al empleado que sea más receptivo a las críticas. El gerente puede enviar al empleado en cursos de habilidades de comunicación. Si todo lo demás falla, el gerente puede avisar al empleado que su comportamiento no es aceptable y despedirlo si todas las demás opciones están agotadas.

Soy freelance y tengo poca experiencia trabajando con grandes equipos. Aunque daré mis ideas.

Cuando leí esto , me vino a la mente una pregunta: ¿hizo el trabajo?

Si es así, entonces probablemente deberías dejarlo solo. Establezca una tarea que pueda ir separada con el resto de su equipo, como tal vez hacer un solo módulo.

Será responsable solo de ese módulo único, escribirá las pruebas, los comentarios y se conectará a los apis. Una vez hecho ese módulo, déjalo en paz.

Si crees que esto podría impactar a tu equipo a largo plazo. Considere pedirle que pruebe si su código es lo suficientemente eficiente. Tal vez hacer algunas evaluaciones comparativas. Si él se niega, considera echarlo.

Si no, considera echarlo.

.

Mi conjetura es que él es demasiado perezoso para escribir un nuevo código repetitivo. Así que cualquier sugerencia o mejora que le hayas dicho, él te dirá que es posible o simplemente no es posible. Si él es lo suficientemente competente, te dirá por qué su camino es mejor o simplemente puede rendirse y estar de acuerdo contigo. Entonces, nuevamente, si él hace el trabajo, ¿para qué molestarse?

Esto es solo parte del trabajo. Si cree que el problema es lo suficientemente grave, debe informárselo al supervisor de la persona en privado. Si se le asigna trabajar en el código que han escrito, debe decidir objetivamente lo que necesita reescribir. No debes ser intimidado porque están enojados. Es un problema común que los programadores no estén de acuerdo sobre cómo deben hacerse las cosas. Si no causa un error, o no es la causa clara de una fecha límite perdida, la administración puede verlo como una cuestión de opinión. No lo veas como una justificación para ser rencoroso u hostil.

Idealmente, los sistemas deberían descomponerse recursivamente en subsistemas con interfaces mínimas. Los subsistemas de nivel más bajo deben ser pequeños (y lo más reutilizables posible). Una persona debe trabajar en cada subsistema de nivel más bajo a largo plazo. Entre muchos otros beneficios, esto minimizará la fricción causada por los desarrolladores que no les gustan las prácticas de los demás.

Hágale preguntas, que no puede responder sin admitir el problema con su código.

Cuando encuentres algún problema:

  1. ¿Qué pasará cuando nuestro jefe nos diga que necesitamos implementar X? ¿Tendremos que refactorizar tu código entonces?
  2. Tu código viola la convención X (Él probablemente dice algo sobre: ​​”Seguir todas las convenciones es estúpida, jada jada”), dices: “Ohh, ¿crees que eres más inteligente que un chico que inventó la convención X? Es extraño, ¿por qué no trabajas en la NASA, entonces?

Así es como lidié con ese tipo de persona, luego se volvió mucho más abierto a las discusiones.

El escape es bastante simple. Dile una vez, dile dos veces.

Hecho con esa parte? ¿Sigue siendo terco y arrogante?

Deje que su código (la forma en que lo hizo) vaya al equipo de Qualify Assurance entonces!

Algunas veces, algunas personas intentan escuchar solo cuando ven que su rendimiento está sufriendo.

Aquí es donde entra el equipo de pruebas.

Simplemente tire de un probador a un lado y bríndele instrucciones especiales para probar una característica particular y un caso de uso específico en el que cree que todo lo sabe.

Si los casos de uso son correctos, el software debería fallar espectacularmente. Asigne el error para saberlo todo y señálelo durante la revisión.

Por lo general eso debería sintonizar el saberlo todo.

¿Cómo puedo saber? Estaba en el extremo receptor de este tratamiento. Al final, me alegré de que todavía tuviera un trabajo.

Maldita sea, yo era simplemente horrible.

Todavía no estoy mejor, pero mucho más cauteloso y abierto para revisar comentarios.

Solo deja que su comportamiento humillante hacia tu crítica estalle en su cara.

Algunas personas solo pueden profundizar en lo que otros tienen que decir cuando pierden la esperanza.

Asegúrate de documentar todo lo relacionado con tus comentarios en caso de que intente culparte.

Un desarrollador realmente bueno siempre piensa que cualquier problema es con algo que pudo haber hecho mal o haberse perdido. No debería ser extremadamente difícil demostrarle que está equivocado. Si sigue confundiendo la dinámica del equipo, como parece que estás describiendo, díselo a las personas que están más arriba. Si la situación no mejora, él necesita irse o la moral del equipo podría sufrir. He dejado trabajos por situaciones como esta ..

Espera y verás. Ah y documento. Estas personas se romperán el cuello y les darán la oportunidad de hacerlo.