¿Qué debe hacer si su hijo no adoptó su sugerencia? [cerrado]

30

Lidero un equipo de 3-4 desarrolladores junior. Mi trabajo, además de escribir código, es proporcionar supervisión y orientación para los juniors.

Pero, entiendo perfectamente cuánto aprecian los desarrolladores la autonomía en su trabajo, y no quiero destruir su motivación intrínseca al alimentarlos con mis pensamientos y mis algoritmos; Quiero que exploren el problema a su manera, que lo piensen ellos mismos y que solo vengan a mí cuando realmente se enfrenten a problemas insuperables.

Cuando acuden a mí, a veces tendría que proponer un algoritmo completamente diferente para resolver el problema porque su algoritmo no es lo suficientemente robusto (recuerde, soy el mayor y he visto más que ellos). Por supuesto, explicaría esto de una manera agradable para no herir sus sentimientos, y describiría gentilmente cómo mi solución es muy superior a la de ellos, sin tono condescendiente ni palabras de condena.

Pero aún así, a veces son reacios a aceptar mi sugerencia, en parte porque han invertido tanto en su propio algoritmo, o en parte por el temor de que el uso de un nuevo método implicaría más tiempo de aprendizaje y les haría parecer a la gerencia como si no van a ninguna parte Pero en el fondo de mi corazón sé muy bien que mi algoritmo es mucho mejor que el de ellos y que deberían adoptarlo.

¿Qué debo hacer si no adoptaron mi sugerencia? ¿Debería simplemente pedirles que sigan mi camino, o debería dejar que les golpeen la cabeza muchas veces más en la pared y esperar a que vuelvan a mí? Hacer lo primero me convierte en un dictador, pero hacerlo más tarde nos costaría un tiempo de desarrollo precioso e incurriría en un costo de reparación de errores. Estoy realmente en un dilema aquí.

Graviton
fuente
99
Los programadores son arrogantes. ¿Confía en que su solución es superior porque lo es o porque la desarrolló? Si realmente has superado a los desarrolladores junior por su método, entonces probablemente debería convertirse en un escenario de "hazlo a mi manera".
Plataforma
66
Hola Graviton, los problemas generales del lugar de trabajo como este no están en el tema aquí: es posible que le interese una próxima propuesta de sitio, Asuntos profesionales , donde esas preguntas profesionales generales serían sobre el tema.
27
@ MarkTrapp: ¿Le importaría ampliar su razonamiento por qué considera que el liderazgo del equipo de programadores está fuera de tema? Quizás, en lugar de cerrar esta pregunta, si existe un consenso, es mejor moverlo a StackOverflow, o dejarlo abierto y migrar más tarde a asuntos profesionales cuando esté disponible. En mi humilde opinión, creo que este es un tema de interés como desarrollador de software, y dado que la administración de programadores es exclusiva de la programación, considero que definitivamente es un tema. Gracias.
S.Robins
35
¿Por qué se cierran las preguntas más interesantes?
ThomasX
11
Podría estar de acuerdo en cerrar esto si se tratara simplemente de administrar a las personas que trabajan debajo de usted, pero la pregunta es sobre administrar el código de las personas que trabajan debajo de usted, lo que creo que está perfectamente bien para este sitio. Votado para volver a abrir.
Rachel

Respuestas:

28

Ayúdelos a comprender por qué deberían hacer su cambio sugerido. Y escúchelos si tienen una buena razón para no hacer el cambio. Discuta y llegue a un acuerdo sobre la base de lo que es mejor hacer.

Este enfoque es importante por las siguientes razones:

  • Desea que realicen el cambio debido a razones comerciales / técnicas sólidas. Es importante tener claro cuáles son (cualquiera recuerda que también podrías estar equivocado, así que sé humilde ...).
  • Realmente desea transmitir el razonamiento detrás de su sugerencia: de esa manera el destinatario aprenderá a resolver problemas similares por sí mismo en el futuro. También tendrá una mejor relación si sus juniors sienten que están aprendiendo algunas buenas ideas de usted.
  • No será respetado si usa su antigüedad y no puede demostrar que realmente tiene buenas razones.
  • Supuestamente, a su jefe le gustaría estar seguro de que está utilizando el tiempo de sus juniors de manera efectiva en cosas que crean valor real, no solo "haciéndolo a mi manera" por el simple hecho de hacerlo.

Si eres inteligente, también puedes hacer que respondan simplemente haciendo preguntas . Bien hecho, su junior llegará a la conclusión correcta (y, por lo tanto, estará mucho más dispuesto a implementarlo). Preguntas de ejemplo:

  • Su código supone el acceso a la base de datos de producción. ¿Cómo podríamos cambiar eso para que siga funcionando y JUnit pueda probarlo correctamente en un entorno de desarrollo desconectado? (respuesta potencial: ¡ah! deberíamos usar la inyección de dependencia ...)
  • ¿Qué sucederá si un atacante envía deliberadamente un SQL hábilmente construido en su formulario de entrada de datos en línea? (respuesta potencial: ¡ah! tal vez no deberíamos construir sentencias SQL concatenando texto no verificado de Internet)

EDITAR : si logra convencer a su hijo de que lo correcto es seguir su sugerencia, pero aún se muestran reticentes, aquí hay algunos consejos adicionales:

  • Explore por qué son reacios. Es posible que necesiten darse cuenta de que no importa si arroja el código, siempre que obtenga el resultado. O podría ser que se sienten presionados por el tiempo debido a algún plazo. Necesitas saber, de lo contrario no puedes ayudarlos .....
  • Puede señalar que pueden tratar el cambio como una forma de mejorar sus habilidades de refactorización. Una vez que las habilidades de refactorización son lo suficientemente buenas, debería poder rediseñar incluso una base de código bastante grande y compleja con relativa rapidez.
  • Debe enfatizar que todo estará en control de fuente, por lo que siempre pueden volver a una versión anterior si es necesario.
mikera
fuente
¡No vi tu respuesta cuando comencé a escribir la mía! Entonces +1 de mi parte, porque has capturado la esencia de lo que estaba escribiendo, solo que de manera más elegante y sucinta. ;-)
S.Robins
@mikera, están de acuerdo en que mi solución es mejor, solo que son reacios a soltar el código antiguo e invertir en el nuevo.
Graviton
No hay blanco o negro. las personas pueden ser groseras con cosas menores. son humanos, no robots. así que, aunque estoy de acuerdo en que es importante transmitir de manera clara y objetiva su punto de vista, trate de ser diplomático. Hay toda una literatura sobre cómo persuadir a las personas. Es una ciencia en sí misma. ver uno en.wikipedia.org/wiki/How_to_Win_Friends_and_Influence_People
siamii
8

Odiaba la actitud dominante de mi último líder de equipo, pero lo respeto por el hecho de que tenía un conocimiento técnico superior y me enseñó mucho sin darme conferencias. Lo más importante es que nunca me obligó a seguir su plan. Jugaría al abogado del Diablo con mi plan, obligándome a demostrar que mi plan era perfecto. Buscaría lagunas y esperaría mi explicación de por qué no es una laguna o es una solución menos costosa. Me preguntaría si hay soluciones alternativas y propondría algunas ideas si no tuviera ninguna. Tendría que evaluar sus ideas y que su plan no era óptimo o si estaba convencido de que mi plan era correcto o al menos tenía la misma relación riesgo-recompensa que la suya, él daría el visto bueno. Si fallaba con mi idea, tendría que probar su solución.

Tiene que haber una compensación entre la libertad y los plazos. No tiene el lujo de extender la fecha límite y no puede permitir que sus juniors la incumplan. Debes ser cortés pero firme con ellos, una vez que hayan probado su algoritmo y no lo hayan hecho funcionar, tienen el deber de escucharte. Demuestra con el ejemplo que sabes tus cosas. Pero, igualmente importante, hágales aprender, no les enseñe.

DPD
fuente
5

Si es un requisito, anótelo así. Si es solo una sugerencia, como notará, entonces deberían ser libres de hacerlo de otra manera. Algunas preguntas que haría:

  • ¿Tiene la autoridad para impulsar soluciones específicas?
  • ¿Cuál es el alcance de esa autoridad?
  • ¿Hay alguna solución mala o simplemente diferente?

Estoy seguro de que podría pedir más, pero los dos primeros se centran en su autoridad y el último en si realmente vale la pena insistir en el tema.

La siguiente respuesta tiene algunos puntos adicionales excelentes y agregaría aquí que debe tratarlo más como un proceso de colaboración en el que trabaja al menos algunos de estos con su "equipo" en lugar de simplemente dictarles. Aprenderán a medida que resuelven los problemas con usted más que solo decirles: "considere hacerlo de esta manera".

Brad Andrews
fuente
Tengo la autoridad, pero prefiero no usarla
Graviton
La autoridad es definitivamente una espada de dos filos. Es mejor tener el apoyo de tus compañeros, que su resentimiento. No participar en un proceso inclusivo a menudo conduce a desafíos de su autoridad más adelante, y si tiene que incluir a su propio gerente para respaldar su afirmación de autoridad, ha perdido cualquier posibilidad futura de involucrarse con éxito con tus juniors en circunstancias similares.
S.Robins
1
"La siguiente respuesta". No se puede esperar que las respuestas se muestren en ningún orden en particular. Use el enlace "enlace" para obtener una URL a la que pueda hacer referencia en su respuesta.
4

El aprendizaje realmente solo ocurre donde ocurren fallas, porque las fallas son motivadoras y proporcionan claves de memoria para recordar en el futuro. Esto es esencialmente lo que llamamos experiencia, y una buena experiencia en el lugar de trabajo vendrá de haber fallado y aprendido de los fracasos. Si sus juniors fueran capaces de hacer todo bien la primera vez, o no estarían aprendiendo nada, o no serían juniors.

Si tiene demasiados juniors estropeando las cosas, tal vez su empresa haya tenido un personal incorrecto, con demasiados desarrolladores junior, donde las limitaciones de tiempo requieren personas con más experiencia para minimizar sus riesgos, pero incluso entonces puede tener problemas y retrasos, ya que los desarrolladores senior cometen errores para aprender también.

Sus jóvenes necesitarán aprender y ganar experiencia para poder hacer frente en un entorno donde los plazos son ajustados. Como líder de equipo, es su trabajo dar un ejemplo e inspirar a sus juniors a trabajar de manera eficiente, sin embargo, la realidad es que debe dejar de lado las preocupaciones de orgullo personal y las preocupaciones por sus apretados horarios si desea que sus juniors realmente aprendan algo y, por lo tanto, debe permitir que fallen. Por lo tanto, es su trabajo hacer una llamada. A veces es necesario darle al joven el espacio para fallar, y luego llevarlo pacientemente a través de un proceso de revisión para mostrarles dónde pueden mejorar sus ideas. En otras ocasiones, debe poner el pie en el suelo, pero hágalo de una manera que le permita demostrar que hacerlo es por una necesidad genuina que no se refleja mal en las habilidades de su junior per se.

En cuanto a la cuestión de los plazos ajustados, aquí es donde debe programar y asignar su trabajo de acuerdo con las fortalezas y debilidades relativas dentro de su equipo. En última instancia, el dinero se detiene contigo. Cuando estás a cargo de otros, no estás allí para ser amigo de todos, estás allí para hacer un trabajo difícil en circunstancias difíciles. La forma en que mantiene a todos a su lado se reduce a hablar con las personas sobre sus inquietudes y problemas, haciendo un caso razonable de por qué necesita que los miembros de su equipo hagan algo de una manera particular.

Según mis propias experiencias personales, debe reservar una cantidad determinada de tiempo con su junior para discutir las fortalezas y debilidades de ambas ideas y luego buscar en colaboración la mejor solución que resuelva el problema en cuestión, incluso a riesgo de permitirse demostrar que está equivocado, y luego seguir adelante. Si ambos no pueden llegar a un consenso al final de su tiempo asignado, entonces en ese punto deben terminar la reunión con un resumen que tenga en cuenta las preocupaciones discutidas y que no se haya alcanzado un consenso. Independientemente del resultado de su reunión, agradece a su junior por el tiempo dedicado e indica que volverá con su decisión.dentro de poco. Después de una cuidadosa consideración de su discusión, tendrá la opción de asignar tiempo adicional para una discusión adicional, o instruir al junior para que continúe con el plan que haya acordado en función del resultado de su reunión.

Sí, el tiempo es valioso a veces, sin embargo, cuando eliges enfrentarte a juniors, debes aceptar que estás asumiendo la responsabilidad de invertir y fomentar su desarrollo profesional, y debes aceptar que, como resultado, lo hará por un tiempo al menos te costará tiempo.

S.Robins
fuente
4

Le preguntaría si realmente está presentando su sugerencia de una manera que no sea condescendiente. Cuando usas frases como:

mi solución es muy superior a la de ellos

y

En el fondo de mi corazón sé muy bien que mi algoritmo es mucho mejor que el de ellos y que deberían adoptarlo.

me hace pensar que podrías encontrarte con una actitud de "mi camino es superior". A nadie le gusta que le den esa actitud. Cuando lo recibí en el pasado, hice todo lo posible para utilizar un algoritmo diferente para demostrar que la persona estaba equivocada. Puede ser que tus juniors estén haciendo lo mismo.

Una mejor manera debería ser sentarse con la persona y discutir su algoritmo. Señale por qué no cree que funcionará y escuche las respuestas que le dan con una mente abierta. Vea si su algoritmo se puede modificar para que funcione correctamente.

Si lo que tiene junior definitivamente no funcionará, explíqueles por qué no funcionará. Qué partes son incorrectas o implicarán reescrituras más adelante o no se ajustan al modelo de negocio. Asegúrese de que entiendan bien sus razones. Luego explíqueles su algoritmo, señalando las piezas donde funcionaría y su código fallaría.

briddums
fuente
3

Antes que nada, ¿sabes la verdadera razón por la cual tu hijo no adoptó tu sugerencia?

A veces, ya sabes, un estudiante de tercer año puede escribir algo mejor que su superior debido a nuevas perspectivas y una educación CS más actualizada. Aunque como senior puedes haber visto más ejemplos del mundo real. Pero una mala trampa en la que a menudo veo que mis mayores a veces cae es olvidar que las mejores prácticas podrían cambiar con el tiempo. Sin embargo, estoy seguro de que esto no se aplica a usted, ya que se ha estado actualizando en sitios como estos. ;)

Sugeriría intentar acercarse a sus juniors sin ningún (o poco) "aura" de senior, tratar de hablar en términos nivelados con ellos, mostrar curiosidad en el código que han escrito. Haga preguntas, escuche sus respuestas. No pregunte de manera acusadora como:

"Su código es bastante inflexible, necesita cambiarlo a esto ..."

en cambio pregunta

"Me pregunto, ¿qué pasaría si alguien fuera ... ¿logra tu código manejar eso? ... Creo que un patrón de estrategia podría ayudar aquí. ¿Qué piensas?"

Creo que esto lo ayudará a entablar conversaciones más saludables con ellos que como un profesor / profesor que los mira como si lo supiera todo. También lo ayudará a ver mejor su razonamiento y sus perspectivas.

snowpolar
fuente
2

¿Controlas el acceso push al repositorio?

En código abierto, el acceso directo siempre está controlado por un controlador de acceso que se encarga de hacer cumplir la calidad. Si está monitoreando activamente los compromisos que están presionando, debe ser muy consciente de dónde pueden mejorar.

¿Pueden hackear o mejorar su código? Si tienen la oportunidad de ver las partes internas sobre cómo funciona su código, pueden aprender cómo adaptarse mejor a su estilo. Si empuja sus sugerencias sin aceptarlas con una mente abierta, entonces estarán menos inclinados a escuchar su opinión.

Hay algunas circunstancias en las que no hay una respuesta correcta (como las preferencias de estilo de codificación). En ese caso, intente establecer (o hacer cumplir) una política de toda la empresa para que comprendan que el estilo del código debe ser coherente con la base de código principal. Usar una guía de estilo ya establecida (como la guía de estilo de Microsofts para C #) es la mejor manera de hacerlo, especialmente para los nuevos desarrolladores del equipo.

Si está haciendo declaraciones generales sobre sus técnicas de codificación, existe una gran posibilidad de que no comprenda completamente el razonamiento detrás de sus elecciones. Solo el tono de tu pregunta te hace sonar arrogante. ¿Qué gana / sacrifica al acercar su enfoque a los desarrolladores más jóvenes?

La pregunta clave que debe hacerse es si sus sugerencias están orientadas a mantener / mejorar la calidad de la base de código o afirmar su dominio / superioridad sobre sus pares. El primero es un control de calidad simple y puede justificarse como tal, la escalera es perjudicial para la dinámica del equipo, sea o no su derecho.

De cualquier manera, si desea llevar su solución a sus pares, debe tener pruebas concretas de que es, de hecho, superior. Un aumento de magnitud en el rendimiento debería ser lo suficientemente fácil de mejorar, cualquier cosa menos no vale la pena (excepto las aplicaciones críticas de rendimiento). Obligar a su trabajo en los demás a justificar su sentido personal de superioridad terminará con el hecho de que se lo señale como el "viejo viejo y malhumorado".

Nota: Los mejores y más talentosos programadores con los que me he encontrado a lo largo de los años siempre parecían estar dispuestos a detenerse y explicar la historia detrás de donde originaron su enfoque.

Evan Plaice
fuente
2

Bueno, esto parece interesante y muy natural con los programadores jóvenes muy apegados al código que han escrito, tal vez hayan pasado bastante tiempo para llegar al mismo o lo eligieron de algún buen sitio (SO, de hecho, Hey Jon skeet escribió esto hombre!

No obstante, la cadena básica adjunta aquí es un archivo adjunto con el código que es donde necesitaría concentrarse y creo que necesitaría hacer un esfuerzo considerable para hacerles comprender que la ejecución y el resultado esperado son más importantes que su nombre. grabado en los repositorios de origen para introducir este código. Tendrá que dibujar líneas para explicar por qué su código es mejor y también es bueno en términos de mantenimiento para futuros trabajos.

Tenga en cuenta que algunas fallas son eminentes (se necesitan algunas angustias para cualquier apego), pero con un esfuerzo gradual, creo que vendrían y podrían apreciar mejor sus esfuerzos. Un poco de tiempo y pocas fallas es lo que creo que necesitarías. Forzarlo sobre ellos sería al revés pocas historias de éxito y luego el fin del mundo y la revuelta.

V4Vendetta
fuente
2

Todos tienen un estilo diferente. Si encuentra a 10 personas diferentes y les presenta un problema no trivial, le darán 10 enfoques diferentes utilizando 10 estilos diferentes de "estándares de codificación".

El punto es: elige las cosas que importan. Si un junior le presenta algo que no produce la solución correcta, lo hace de manera extremadamente ineficiente (+1 orden de magnitud, no una instrucción aquí o allá), o crea un agujero de seguridad, luego explique su problema y por qué. Si es un comentario de "Hubiera hecho esto", bueno, eso es genial, habrías hecho "eso" y ella hizo "otra cosa", pero el problema aún está resuelto lo suficiente (ver los puntos anteriores). Pase a la siguiente función o corrección.

Parte de aprender a ser un buen líder es aprender a reconocer lo que realmente importa y lo que realmente no. Además, se elimina como un posible cuello de botella para el rendimiento de su grupo si tienen que examinar todo a través de usted.

EDITAR: asegúrese de que sus sugerencias sean genuinas y no veladas. Una sugerencia es solo eso: una sugerencia que es libre de seguir o no. Si es un requisito, dígalo como tal.

luego
fuente
2

Como algunos de los otros han señalado, si realmente solo está probando a los desarrolladores junior con sugerencias y están formuladas como tales, entonces realmente no tiene muchos motivos para enojarse con ellos si no lo siguen porque pueden No veo muchas razones para hacerlo. Del mismo modo, realmente no puedes criticarlos por no seguir tu sugerencia porque no son una dirección real para hacer las cosas de cierta manera.

En lo que respecta a tratar de hacer que los desarrolladores junior hagan las cosas como preferirías hacerlas:

  • Controle su terminología, hacer una sugerencia no es lo mismo que hacer una recomendación que definitivamente no es lo mismo que proporcionar dirección . Use la terminología correspondiente para expresar su punto de vista y si cree que su forma de hacer algo es una mejor manera de hacerlo, dígales que es su recomendación hacerlo. Del mismo modo, si es absolutamente crítico que las cosas se hagan de una manera determinada (es decir, no puede soportar un retraso de tiempo), entonces sea franco y déles instrucciones sobre cómo debe hacerse.
  • Los desarrolladores junior todavía están pasando por el proceso de aprendizaje, independientemente de cómo esté redactando las cosas, siempre brinden algún tipo de razonamiento detrás de lo que les está diciendo a menos que haya una razón específica por la que no pueda hacerlo. Incluso en ese caso, la mayoría de la gente entenderá si dices algo como "Debe hacerse de esta manera, no me importa, pero la decisión ya está tomada". Tienden a ser bastante razonables.
  • Si realmente es solo una sugerencia, entonces asegúrese de que su idea sea realmente mejor que cómo lo hizo. Si no cree que sea así, siéntese con el desarrollador y haga una revisión de código y concepto para que puedan justificar su solución. Puede ser que una vez que empiecen a explicárselo a otra persona, y usted haga las preguntas correctas, verán una mejor manera y querrán recodificar las cosas por su cuenta.
  • No dude en los detalles si su solución es similar a la que sugirió originalmente, puede ser que tomaron en cuenta lo que les dijo e hicieron las cosas de manera ligeramente diferente o cambiaron su concepto original según su sugerencia.
rjzii
fuente
2

Esta es una introducción perfecta a las pruebas unitarias. Si sus desarrolladores junior tienen una solución, debería ser comprobable. Haga que produzcan una prueba unitaria para enfatizar su código. Luego revise la prueba de la unidad . Si puede mostrar agujeros en la prueba, entonces es fácil hacer que vuelvan a ejecutar la prueba y ver que su solución se rompe bajo presión.

Eso le permite mostrarles por qué su solución es mejor, le brinda una prueba unitaria que puede reutilizar cuando cambia el código y les brinda a los desarrolladores junior una valiosa experiencia de aprendizaje. Y quién sabe, puede descubrir que su solución está bien.

Spencer Rathbun
fuente
2

En algún momento tienes que estar a cargo. Parece que estás haciendo un esfuerzo por dejar que expresen sus opiniones. Tus sugerencias pueden no ser perfectas. Los otros desarrolladores pueden no entender / estar de acuerdo con usted. Probablemente no estén de acuerdo el uno con el otro. Si estás a cargo, no es una democracia. Ellos sabían eso cuando tomaron el trabajo.

Si no hay situaciones en las que deban seguirte, no mereces y no sirves para nada como su jefe. Cambie su rol en el equipo para que sea un recurso y no una autoridad si no planea usarlo. En algún momento, debe enviar el mejor código posible bajo las limitaciones de tiempo disponibles y no puede debatir, investigar y debatir nuevamente cada línea de código hasta el final de los tiempos.

Da las ordenes. Vive con las consecuencias. Aprender de la experiencia. El respeto es una calle de dos vías. Lo estás demostrando y no lo están.

JeffO
fuente
Votaría esto un millón de veces.
HLGEM