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í.
fuente
Respuestas:
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:
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:
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:
fuente
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.
fuente
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:
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".
fuente
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.
fuente
Le preguntaría si realmente está presentando su sugerencia de una manera que no sea condescendiente. Cuando usas frases como:
y
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.
fuente
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.
fuente
¿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.
fuente
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.
fuente
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.
fuente
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:
fuente
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.
fuente
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.
fuente