Trabajo en una pequeña empresa de desarrollo como desarrollador principal. Tenemos otros dos desarrolladores, así como mi jefe, que es desarrollador, pero ya no hace gran parte de la codificación real.
El problema que estoy tratando de superar es multifacético. Todos tenemos una tendencia a trabajar en nuestros propios proyectos sin mucha colaboración entre nosotros. De hecho, yo (como el desarrollador más avanzado) pido la opinión / ayuda de los demás más que la mía, porque valoro la opinión de un ojo externo.
Quiero aumentar nuestra colaboración, y les he expresado eso. En gran parte porque me gustaría mostrarles algunas cosas sobre cómo convertirse en mejores desarrolladores y seguir mejores prácticas. Pero dados los tipos de personalidad de nuestros otros desarrolladores, creo que se sienten más cómodos trabajando solos.
He estado leyendo sobre la programación de pares, y he leído (en algunos foros) que no funciona bien cuando uno de los desarrolladores está más avanzado que los demás (que yo soy). Y, sin embargo, creo que es imperativo que comencemos a colaborar para que nuestro trabajo no sea tan dispares.
Mi pregunta es si alguien ha estado en una situación similar y qué funcionó para ellos.
Me doy cuenta de que esta no es una situación única para todos, pero estoy dispuesto a darle una oportunidad a múltiples enfoques.
Todos trabajamos en un área común, los desarrolladores no tienen oficinas / cubículos individuales.
fuente
Respuestas:
Como ya se ha discutido en otras respuestas por qué la programación de pares no es una solución para usted , analizaré lo que hemos experimentado actualmente y estoy satisfecho con los resultados.
En mi opinión, lo que puede hacer para aumentar la colaboración es tener dos personas juntas en cada proyecto. Cada uno de ellos trabaja en una parte diferente del proyecto, pero debido a que estas partes deben integrarse, los dos desarrolladores deben colaborar. Esto también requiere que los dos programadores discutan la arquitectura (capas e interfaces) del proyecto, y luego decidan asumir diferentes roles.
Y, si este enfoque limita la cantidad de proyectos que su empresa puede manejar a la vez, puede asignar a este par colaborador dos proyectos simultáneamente.
Recientemente experimentamos con este enfoque, haciendo que uno de ellos desarrolle modelos + integración con apis y el otro programador manejando vistas y controladores . Hemos encontrado las siguientes ventajas de esta configuración:
fuente
En mi opinión, la programación de pares no es la solución al problema que planteas.
Hay dos roles distintos en un par de programación. El observador está allí para revisar y retroalimentar el código escrito por el conductor . Si está tratando de transmitir ideas para mejorar las decisiones que toman sus programadores junior, me pregunto qué tan efectivo puede encontrar su capacidad para revisar críticamente el código que está escribiendo cuando desempeña el papel del conductor.
Sin esta dinámica, se pierde el beneficio de la programación de pares.
Como programador sénior, te sugiero que consideres un programa más fuerte de capacitación y desarrollo de empleados con tu jefe. Sus programadores junior deben recibir un marco para mejorar sus habilidades. Por lo general, puede utilizar métodos como las iluminaciones, escribir un documento de estándares de codificación, dividir las tareas autónomas de su propio trabajo y garantizar que existan procesos de revisión de código adecuados.
fuente
TL; DR : No creo que la programación de pares funcione para ti. En cambio, debe tratar de hacer que las personas se preocupen por la calidad a largo plazo de su código y hacer que quieran encontrar respuestas. Esto tiene que hacerse de manera informal.
Sobre cultura y calidad
Creo que este problema no se trata de la metodología de programación sino más bien de la cultura . En mi experiencia, es posible dirigir la cultura, pero rara vez al contarle a la gente. Es decir, tratar de forzar un cierto flujo de trabajo en las personas que no han evolucionado naturalmente o que están demasiado alejadas de la práctica existente tiene consecuencias negativas.
En otras palabras, no querrás parecerte al traje que suena con las últimas palabras de moda, incluso cuando finalmente lo eres. La mayoría de los programadores que conozco te etiquetarían mentalmente como ruido de fondo. No seas una abeja corporativa.
En mi opinión, la pregunta principal que debe hacerse es "¿estoy contento con la calidad y el valor comercial del código que publica mi organización?" y si la respuesta a eso es negativa, debe preguntar "¿cómo cambio esto?".
En última instancia, la calidad y el valor son definiciones humanas en las que solo usted u otra persona de su organización pueden (y deberían) pensar.
Programación de pares y microgestión
Entonces, a riesgo de sonar un poco hacia adelante y duro, me parece que leer sobre programación de pares realmente te hizo pensar en alguna forma de microgestión , o al revés. MM es una receta segura para alienar a la mayoría de las personas.
En defensa de la programación en pareja: la programación en pareja no se trata de un tipo que mira por encima del hombro de otro tipo. Eso es tan micro como la administración se pone. PP es sobre el uso de dos mentes a pensar en dos niveles al mismo tiempo - una persona con ofertas de alto nivel , y fotos grandes problemas mientras que el otro se encarga de la tuercas y tornillos necesarios para producir el código de trabajo. Y en mi humilde opinión, rara vez funciona bien si los dos participantes no están en condiciones de cambiar de lugar. Deben ser lo suficientemente similar-experiencia para tener un arsenal de conceptos similares profesional y un vocabulario profesional compartida (no estamos vinculados-mente - sin embargo , muhahaha).
Para su situación, diría que ya que es un equipo pequeño y es el único con experiencia real (eso es lo que me parece su publicación), programar la pareja o revisar la mayoría del código la mayor parte del tiempo No funciona Solo tienes 24 horas al día. En cambio, algunas soluciones que podría considerar:
Aliéntelos a participar en SO bajo la etiqueta de idioma apropiada, o a publicar algunos fragmentos de código para su revisión en Code Review SE. Comience un pequeño concurso informal sobre quién puede ganar la mayor cantidad de puntos SO por semana.
SO puede hacer maravillas para los desarrolladores novatos, ya que proporciona comentarios constantes y sigue los latidos de la comunidad.
Eche un vistazo a algunos de los códigos que ingresan y desafíelos informalmente con algunas preguntas sobre su evolución a largo plazo. La mayoría de los programadores principiantes simplemente no están acostumbrados a pensar en hacer que su código sea legible y mantenible. Una vez que tenga esos problemas en la cabeza, buscarán más información por su cuenta, de usted u otras fuentes.
fuente
No creo que la programación de pares sea algo que pueda ayudarlo en su entorno. No es que no ayude a mejorar la habilidad de los desarrolladores menos experimentados; incluso hay una pregunta de los programadores sobre la programación de pares con ingenieros de diferentes niveles de habilidad . Si bien existen beneficios como el intercambio de conocimientos y menos errores, la programación de pares requiere una mayor inversión de tiempo. Con un equipo de tres desarrolladores y solo cuatro personas que tienen experiencia / experiencia en desarrollo, parece difícil mantener una rutina de programación en pareja.
Creo que una mejor alternativa en su situación son las revisiones de código, especialmente si las adapta adecuadamente. Una revisión de código puede consistir en cualquier cosa, desde una persona que revisa un pequeño fragmento de código y proporciona comentarios a varias personas (incluso a todo el equipo) en una habitación durante una hora o dos para revisar el diseño y la implementación de un componente completo. Estos pueden variarse según sea apropiado para el trabajo que se realiza, especialmente en función del conocimiento, las experiencias y las necesidades del equipo. Todavía puede obtener el aspecto de compartir conocimientos al hacer que varias personas participen en la revisión con el fin de encontrar problemas, proporcionar sugerencias y obtener conocimiento al leer los resultados de la revisión para incorporar los comentarios en su propio trabajo, antes de que la revisen. .
fuente
Como estás invitando a la experiencia, esto es lo que hice. Elegí el enfoque de bajo riesgo y le pedí a alguien décadas más joven que yo que pasara un tiempo trabajando juntos. No etiquetamos la actividad. Nadie, excepto yo, sabía que estábamos probando una nueva técnica.
No sé exactamente qué detalles relacionar, pero el proceso funcionó muy bien. Quería ser guiado, lo cual era algo que no tenía ni idea de antemano. Entonces abrió la comunicación en ambas direcciones de una manera muy positiva.
Parece que podría enmarcar esto como una progresión lógica de lo que está haciendo actualmente.
fuente
Algunos meses después de plantear esta pregunta, debo decir que estoy contento con nuestros resultados. Pero no es exactamente el que acepté al principio. Tenga en cuenta que este es un equipo pequeño, por lo que esta solución no se ajustará a todos.
He descubierto que es mejor dejar que todos hagan su propio trabajo. Y con el tiempo hemos desarrollado una confianza recíproca en la que si nos encontramos con un problema, llamamos a los demás para que nos ayuden. No creo que nadie quiera trabajar con alguien que esté mirando por encima del hombro. De vez en cuando me siento detrás de alguien y a veces lo ayudo a resolver un problema sin ser solicitado. A veces no tengo nada que agregar, y tal vez los molesto un poco. Pero entienden que no estoy allí para insistirles. Principalmente estoy allí para tomar un descanso de lo que estoy haciendo e introducir un poco de colaboración.
Lo que he encontrado es que las personas CORRECTAS a lo largo del tiempo (en un equipo pequeño) retoman y sincronizan con lo que otros están haciendo. No hay necesidad de micro administrar o decirle a alguien lo que está haciendo mal todo el tiempo.
De vez en cuando, siéntese con alguien y resuelva un problema, ya sea que sea un experto o alguien que esté aprendiendo, o ambos. Explique por qué haría o no haría algo de una manera en lugar de otra. Las buenas ideas suelen ponerse al día, mientras que otras se quedan atrás. Y al final del día, tienes un grupo productivo y cohesivo de personas que pueden estar trabajando en diferentes cosas pero que comparten un propósito común.
fuente