¿Cómo se comunica eficazmente en un pequeño equipo de desarrollo? [cerrado]


Trabajo en un equipo pequeño (4-5 desarrolladores) en un solo proyecto. Cada miembro de nuestro equipo está desarrollando una funcionalidad diferente de nuestro proyecto y son altamente independientes. De hecho, algunos miembros usan tecnologías que otros miembros no conocen. Todavía es un proyecto único y hay una gran cantidad de lógica de negocio común en él.

Además, la mayoría de los miembros desconocen completamente qué y cómo están haciendo los demás. De alguna manera, nos las arreglamos para evitar la replicación de código (créditos para nuestro líder de equipo, pero incluso él no es completamente consciente de lo que está sucediendo). Me pregunto, ¿qué es una buena práctica para mantener a todo el equipo en la pista de lo que está pasando. Por ejemplo, si alguien del equipo se retira o falta cuando se debe hacer una solución importante, es difícil para los demás manejarlo.

Tenemos una política para realizar revisiones de código, pero solo los líderes del equipo y un miembro del equipo participan en ella. Los otros miembros" regulares " no participan allí.

Además, tenemos un "newslist" para checkin-s comprometidos en el control de código fuente por nuestros miembros, pero esto parece demasiado aburrido para tratar y parece que nadie se está tomando el tiempo para leer lo que otros acaban de comprometer (y no es efectivo, para ser justos).

Entonces, me pregunto qué es una buena práctica en este asunto. ¿Qué experiencia tienes? ¿Hay alguna solución ?

EDITAR: Permítanme aclarar un poco. Nuestro equipo trabaja desde hace más de 2 años y el proyecto es casi 5 años. Por lo tanto, no podemos iniciar el desarrollo ágil, aunque podríamos algunas prácticas ágiles (como reuniones de pie, me parece muy útil de hecho).

Además, nuestro equipo es parte de una empresa más grande, por lo que hemos establecido prácticas de team building. Y no nos odiamos los unos a los otros :) - somos amigos, hablando de la vida social y las actividades. Las charlas profesionales es lo que nos falta.

Author: Nisarg Shah, 2010-02-23

8 answers

  • Las reuniones de pie cada día (mantenlas cortas) con todos presentes ayudan a todos a entender lo que están haciendo los demás. Esto también ayuda al gerente a sacar algo de la gestión del camino, ayuda a prevenir golpes, y pone un poco de presión sobre cada individuo sin que el gerente tenga que hacerlo. (Quieres que te hagan algo para que te veas bien delante de tus compañeros mañana por la mañana). Algunas metodologías como Scrum formalizar este.

  • Revise el código con diferentes miembros del equipo. ¿Es uno de los miembros del equipo que no es gerente más experimentado? Hacer que esta persona revise el código con otros sería bueno; él / ella compartiría su experiencia y sería otra persona (además del gerente) que sabe la mayor parte de lo que está pasando. No hay ninguna ley que diga que en una revisión por pares una persona debe ser mayor que la otra y ser la que declara el código correcto o incorrecto. Creo, sin embargo, que si dos "pares" están haciendo código revisión, solo deben emparejar-programa para empezar.

  • Si está tratando de escribir código de calidad, ciertos bits de código podrían prestarse a programación de pares. La gente de XP dice que deberías hacer esto todo el tiempo, pero creo que es más útil a veces y otras veces. Por ejemplo, cuando un desarrollador tiene más experiencia que el otro, esto ayuda con la tutoría. También, cuando hay un área específica donde desea que el conocimiento se difunda. (Solo una guy entiende una parte del sistema; la próxima vez que necesite revisión, pídale a ese individuo que lo haga con la otra persona escribiendo.) También, a veces una parte del sistema es realmente importante, y tenerlo diseñado correctamente es mucho más importante que las líneas de código por minuto. Este es un gran lugar para tener dos cabezas en el problema, y al final dos personas tienen un conocimiento íntimo de este código clave en lugar de uno.

  • Algo como una vez a la semana, tener a alguien presentar una breve charla durante el almuerzo sobre algo interesante que están haciendo. Esto puede generar una gran discusión, promover la confianza y el respeto mutuo, pero lo que nos interesa aquí es que promueva la conciencia.

  • Value, support y creen en el buen código. Algunas tiendas (los gerentes principalmente) no realmente creen en el buen código, y esto lleva a que la gente simplemente rompa el código (de mierda), incluso si los desarrolladores podrían hacer un gran código. La comunicación sobre el código es mucho más fácil si los desarrolladores están contentos con el código que están haciendo, si está implementando alguna nueva tecnología de vez en cuando, y si el trabajo de calidad ayuda a su carrera.

Y más sobre programación de pares. La parte clave de la programación de pares para esta discusión es que pair-progrmaming promueve código compartido y conocimiento cruzado. La razón por la que menciono los lugares específicos donde la programación en pares es particularmente útil es porque la política " vamos a hacer programación de pares" tiene éxito alrededor del 10% de las veces. El otro 90%, los defensores de la práctica no pueden dar una respuesta lo suficientemente buena cuando un gran gerente pregunta: "¿por qué todas estas personas están sentadas en los mismos escritorios?"Las ventajas de la programación por pares tienen que ser 200%+ que solo un programador hacerlo, porque estás usando dos personas. Hecho en el momento adecuado , la programación de pares puede aumentar la relación solución / dólar; en el momento equivocado puede disminuya.

 17
Author: Patrick Karcher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-23 21:24:57

Las técnicas ágiles como la programación en parejas y las reuniones diarias de stand-up son buenas formas formales de lograr que la comunicación suceda.

Pero parece que lo que realmente necesitas hacer es hacer que la gente hable entre sí. Los desarrolladores tienden a ser introvertidos, así que tienes que trabajar en esto. Almorcemos juntos. Miren por encima de los hombros del otro. Pida consejo el uno al otro (incluso cuando no lo necesite). Pregúntate unos a otros sobre esas tecnologías extrañas que no todo el mundo entiende. Reunir para pruebas de integración.

 7
Author: Kristopher Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-22 08:27:26

Estoy en una situación similar en mi lugar de trabajo. Algunos miembros del equipo son, como usted dijo, altamente independientes y no comparten ninguna visión o prácticas con otros miembros del equipo. Me parece que esto es muy poco profesional y en general hiriente para el equipo.

Por supuesto, es inevitable tener algunos miembros más competentes que otros, y, en el mundo de la programación, algunos miembros tendrán problemas para dejar de lado sus egos. Lo mejor que puedes hacer es tener reuniones programadas y revisiones de código en las que todos están involucrados. Tener un sitio central de documentación donde las personas puedan publicar ciertas técnicas que utilizan. Si averiguas algo que crees que puede ser útil para el resto del equipo, súbelo al sitio y envía un e-mail a todos. La comunicación es clave.

 3
Author: Aaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-23 20:50:45

Lo que podría ayudarte son los stand-ups diarios (de agile development). Solo toma un par de minutos y básicamente todos los miembros presentan a los demás el estado de su trabajo, los problemas con los que tratan y los planes para el mañana.

Creo que los stand-ups son un buen comienzo para ti. Puede encontrar más información, por ejemplo, en Martin Fowler-No es solo Ponerse de pie: Patrones de Reuniones Diarias de Stand-up
 3
Author: stej,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-23 20:52:41

En nuestro equipo, tenemos reuniones de progreso cada semana. Esto permite descubrir lo que hacen los demás y dónde se coloca cada uno en el panorama general.

A veces es seguido por un mini evento social cuando compartimos un pastel casero. El nombre de la persona que trae el pastel la próxima vez está escrito en las actas de la reunión de progreso.

 3
Author: mouviciel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-23 20:53:24

Trabajo en equipo

Vayan a hacer barbacoa juntos, jueguen futbolín, encuentren algo de actividad en equipo además del trabajo que les guste a todos. Eso enseñará a las personas a confiar entre sí en lugar de ser "independientes" y multiplicará por 10 el efecto de cualquier otra práctica útil en equipo, como scrum-meeting o programación en pareja.

 3
Author: Max Galkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-23 20:56:44

Aquí están algunos pensamientos de la parte superior de mi cabeza (pequeña empresa, tres programadores; solía trabajar en un equipo de unos 20).

  • Algún tipo de informe de progreso para que todos puedan ver en lo que todos los demás están trabajando. Las reuniones" En las que he estado trabajando " funcionan para algunas personas, pero no soy un fan de ellas - están demasiado regimentadas, y una reunión para sentarse con este propósito a menudo puede convertirse en una pérdida de tiempo y/o ser propenso a desaparecer por las ratholes. En mi trabajo actual tenemos un trabajo de cron que nos recuerda enviar nuestros correos electrónicos de progreso semanales: en estos se espera que digamos lo que hemos logrado, los próximos elementos en nuestra lista de tareas pendientes (con estimaciones cuando corresponda), cualquier problema que hayamos encontrado.
  • Notificaciones de confirmación selectivas . Muy pocas personas pagan más que un vistazo superficial a los correos de confirmación de toda la empresa (incluso en mi pequeño equipo), pero si puedes capacitar a cada desarrollador para monitorear solo los campos en los que están trabajando, probablemente puedan hacer un seguimiento de ello. (Usted no debería haber demasiada gente trabajando en la misma pieza de código a la vez, de todos modos. Demasiados cocineros y todo eso.)
  • Algún tipo de sistema de venta de entradas para proporcionar una lista de tareas pendientes puede ser útil. Sin embargo, debe tener muy claro cómo se administra esto, en particular cuáles son sus procesos para generar y cerrar tickets.
  • documentación Interna. Este es un problema difícil; algunos desarrolladores lo odian, algunos escriben demasiado y otros escriben lo suficiente. Al menos la mitad del problema está en indexación y presentación; no sirve de nada si la información que necesitas está enterrada a cinco capas de profundidad en un documento impenetrable titulado "Cuidado con el Leopardo". Soy un gran fan de los wikis para este propósito, ya que son muy fáciles de usar.
  • Por encima de un cierto tamaño de equipo, es posible que se convierta en un trabajo de tiempo completo para que alguien administre su documentación. En un lugar de trabajo anterior gastamos el dinero en un dispositivo de motor de búsqueda, rastreando continuamente nuestros sitios de intranet, lo cual fue maravilloso.
 3
Author: crazyscot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-23 21:30:28

Estamos en una situación similar (un proyecto largo y todos somos amigos), y tuvimos problemas similares. Las siguientes prácticas nos permitieron mejorar mucho:

  • Las reuniones de pie diarias son una necesidad. En mi experiencia un bien dirigido el standup diario es lo mejor para fomentar la comunicación entre los equipo. Todo el mundo sabe lo que todos los miembros del equipo están haciendo, y puede ayudar con cualquier problema.
  • Un wiki también es esencial. Usted puede poner prácticas estándar y tecnologías que se utilizan dentro del equipo. Tener a todos activamente participar, el líder asigna a todos los miembros del equipo algo para escribir y mantener en el wiki. Es particularmente eficaz cuando cada uno escribe sobre algo que le gusta o es interesar.
  • Trate de tener todo el equipo presente, o todos los miembros que son disponible, en reuniones donde se analizan requisitos/características, priorizados, etc. No importa si algunos de los miembros del equipo son no específicamente trabajando en esa área del proyecto. Esto dará contexto para todos y una visión más amplia del proyecto. Lo hará permitir (y alentar) que participen en estas discusiones de la proyecto como un todo, y no solo concentrarse en la parte que estamos trabajando. Esta práctica motivará mucha discusión, todos de nosotros cuando se nos da la oportunidad y el conocimiento (solo se necesita una muy pequeña cantidad) tener una opinión y me gusta comentar sobre todo todo dentro proyecto.
  • La práctica final que motiva un montón de "tienda" hablar, es que cada dos semanas algún miembro da una pequeña presentación sobre alguna tecnología o técnica. Generalmente incluye ejercicios prácticos, y tiempo discutir y hacer preguntas.
 1
Author: Gonzalo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-10 17:36:09