OK como guía, es su trabajo sacar los proyectos por la puerta. Por lo tanto, debe ser quien haga cumplir los estándares, las revisiones de código, solicite informes de progreso y todas esas cosas cuando los desarrolladores prefieran que los deje en paz. Estas cosas son solo requisitos de la administración y, a excepción de las revisiones de código, no aumentan las habilidades de los empleados.
Sin embargo, desea ayudarlos a crecer, lo cual es un gran atributo en un líder.
Las revisiones de código son sin duda un primer paso, te ayudarán a ver quién tiene menos habilidades estelares y necesita mejoras para tener incluso un rendimiento satisfactorio. Ayudarán a los desarrolladores a ver otras formas de hacer las cosas y comprender diferentes partes de la base del código en las que trabajaron personalmente. En mi opinión, las revisiones de código se realizan mejor en persona en una sala de conferencias con el desarrollador y el revisor (que debería ser otro desarrollador cuando sea posible, no siempre el líder, revisar el código de otro también es una habilidad que debe desarrollarse) y usted como Un moderador. Debe mantener notas sobre lo que se debe cambiar para identificar tendencias. Lo que realmente está buscando no son errores o cambios (se puede mejorar el código de todos), sino un fracaso constante para aprender de los errores. No le digas a la alta gerencia que estás guardando estas notas o te verás obligado a usarlas como medidas en el proceso de evaluación del desempeño que francamente frustra el propósito. Si varios desarrolladores están cometiendo los mismos errores, una sesión de entrenamiento o una entrada wiki sobre cómo hacer X puede estar en orden.
Ahora hacia el vicio creciente llegando al nivel mínimo. Primero, necesita saber qué conjuntos de habilidades tienen los desarrolladores y qué conjuntos de habilidades sería útil que tuvieran y qué podrían estar interesados en conocer. Debe hablar con ellos y revisar sus currículums y comprender lo que les gusta y no me gusta hacer
No le dé todas las tareas interesantes solo a los más hábiles. Eso no ayuda a los demás a ponerse al día sobre nuevos problemas y tecnologías. No puedes pasar de ser el chico más joven que solo realiza las tareas más pequeñas y menos importantes al chico mayor a menos que alguien se arriesgue y te asigne un trabajo más difícil. Dicho esto, los menos experimentados pueden necesitar ser asignados primero para emparejar el programa con un senior para obtener habilidades más avanzadas. La inclusión de los juniors en las revisiones de códigos también los expondrá a técnicas más avanzadas.
Primero deles la oportunidad de resolver el problema por sí mismos. Pero a veces las personas están estancadas y no saben por dónde comenzar (una habilidad que también necesita desarrollar, especialmente en los nuevos programadores) o qué hacer para resolver un problema.
Si les das un par de días para investigar algo y todavía no tienen una dirección sobre cómo van a hacer algo, entonces es posible que debas intervenir con algunas sugerencias. Si usted es técnico, puede darles algunas ideas sobre cómo resolver el problema. De lo contrario, una reunión con varias personas en las que se intercambian ideas puede ayudar si la persona está estancada. O pedirle a una persona con más experiencia que le dé algunas sugerencias. Lo que no quiere hacer es quitarles el problema y resolverlo usted mismo. Pero debe equilibrar la realización del proyecto con el ego del programador y, a veces, debe enviarlos en una dirección específica. Si tiene una mala solución y necesita ser reparada, lo peor que puede hacer es dársela a otra persona a menos que tenga la intención de despedir al programador.
He visto a malos programadores mimados, donde alguien más tiene que arreglar casi todo lo que hacen. Los otros programadores resienten esto y solo quieren a la persona fuera de sus vidas. Mimar a un mal programador hace que los buenos programadores se vayan. Tienes que encontrar la línea entre mimar y desarrollar habilidades. Si le das a alguien varias oportunidades y él o ella nunca mejora, entonces libéralo.
Para las personas mayores que ya son competentes en sus habilidades actuales, las cosas son más fáciles. Por lo general, solo tiene que darles la oportunidad de hacer algo nuevo y ellos intervienen y lo aprenden. Solo asegúrate de que las oportunidades interesantes se difundan y no todos vayan al programador Joe the Wonder que puede arreglar cualquier cosa. Quiere terminar con diez Joes, no solo uno.
Otra forma de desarrollar habilidades es tener una sesión de entrenamiento semanal de 1 hora. Haga que cada desarrollador sea responsable de un tema en particular. Esto los ayudará a mejorar en la comunicación, les hará investigar algo en profundidad y les dará a todos el beneficio de su investigación. Algunos temas deben asignarse a personas que no están familiarizadas con el tema para obligarlos a desarrollar un poco de conocimiento en ese tema y otros deben asignarse a personas que saben que son los expertos locales en ese tema. Los temas deben ser una combinación de cosas en las que necesita que las personas sean buenas en el futuro cercano o en este momento y una cierta cobertura de las nuevas tecnologías futuras que no utiliza en este momento, pero las personas están interesadas en aprender para ver si pueden ser útiles. Pero a todos, incluso a los más jóvenes, se les debe asignar un tema.
Dependiendo de cómo se factura el tiempo de sus desarrolladores (esto es más difícil en una situación de facturación del cliente), generalmente vale la pena que los desarrolladores tengan de 4 a 8 horas a la semana para trabajar en proyectos personales. Estarán emocionados de hacer esto. Las mejores personas querrán trabajar allí y aprenderán muchas cosas que serán útiles para el futuro. Es difícil para los contadores de frijoles entender la necesidad de esto, pero esta vez se pagará muchas veces en satisfacción de los empleados, nuevas funciones o software que nadie requirió (o que ayudarán a automatizar parte del trabajo pesado) y un desarrollo más rápido debido a Nuevas técnicas aprendidas. Algunos desarrolladores usarán este tiempo estrictamente para proyectos personales que no están relacionados con lo que haces (y eso es bueno, seguirán adquiriendo habilidades y contentos por la oportunidad), pero muchos otros lo usarán para resolver problemas persistentes que, debido a la naturaleza de cómo se gestionan los proyectos, nadie tuvo tiempo de arreglarlo de antemano. Entonces puede obtener refactorizaciones que beneficien a todos; algunas personas pueden escribir pruebas para mejorar la cobertura de las pruebas y facilitar la refactorización; otros pueden explorar algunas características nuevas que pueden hacer que su software sea más útil para sus clientes. En general, si puede persuadir a los contadores de frijoles, no hay forma de perder permitiéndoles esta libertad.
Tienes que aprender a equilibrar, dejando que las personas tengan un poco de tensión para sus habilidades y mantener el proyecto en marcha. Cuanto menos experiencia tenga el desarrollador, más alguien necesita verificar el progreso, especialmente en las primeras etapas, cuando cambiar de dirección es más fácil. Los inexpertos pueden luchar y tener miedo de hablar. Estas personas tienden a irse justo antes del lanzamiento y descubres que su parte del proyecto no está cerca de completarse. Tenga especial cuidado de verificar el progreso de cualquier persona que haya cambiado de trabajo con frecuencia (a menos que fuera un contratista, ya que esa es la naturaleza de la contratación).
Por lo general, se puede confiar en que los más experimentados le informarán cuando tengan problemas para encontrar la solución y necesiten ayuda de alguien con más conocimiento en el área o buscarán a esa persona y obtendrán la transferencia de conocimiento. Por lo tanto, no necesitan ser monitoreados tan de cerca en las fases iniciales del aprendizaje de un nuevo conjunto de habilidades para un proyecto. Encontrarán una manera de entregar el proyecto. Aquellos que tienen un historial de entrega generalmente se pueden dejar solos, excepto por los informes de progreso mínimos (por lo general, también debe informar a su gerencia y, por lo tanto, necesita algo de información).