Simyl
simylflow
Inicio del curso
Módulo 4: Prácticas de Equipo
Lección 2 de 5
11 min

Propiedad Colectiva del Código

Cualquiera puede cambiar cualquier código. Responsabilidad compartida de toda la base de código.

1¿Por qué Propiedad Colectiva?

En los modelos tradicionales, el código tiene propietarios. "Ese es el módulo de Alice." "Habla con Bob sobre la capa de base de datos." Esto crea problemas:

Cuellos de botella: Cuando Alice está de vacaciones, su módulo no puede cambiarse. Cuando Bob está ocupado, el trabajo de base de datos se acumula.

Silos: Las personas no entienden el código que no poseen. La integración se vuelve dolorosa.

Factor de autobús: Si Alice se va, el conocimiento se va con ella.

La propiedad colectiva significa que cualquiera en el equipo puede cambiar cualquier código. No hay territorios personales. El equipo es propietario de la base de código en conjunto.

Esto da miedo al principio. ¿No romperán las personas cosas que no entienden? ¿No se volverá inconsistente el código? ¿No surgirá el caos?

No si tienes las prácticas de apoyo.

El Equilibrio

La propiedad individual protege el código de cambios desinformados. La propiedad colectiva permite el flujo y el aprendizaje compartido. XP usa prácticas (pruebas, estándares, parejas) para obtener los beneficios de la propiedad colectiva sin el caos.

2Hacer que la Propiedad Colectiva Funcione

La propiedad colectiva requiere prácticas de apoyo:

Pruebas exhaustivas: Si rompes algo, las pruebas lo detectan inmediatamente. Esto hace que sea seguro para los no expertos cambiar código.

Programación en parejas: Al cambiar código desconocido, trabaja en pareja con alguien que lo conozca. El conocimiento se transfiere y los errores se detectan.

Estándares de codificación: Un estilo consistente significa que cualquiera puede leer cualquier código. No hay traducción entre "el estilo de Alice" y "el estilo de Bob."

Integración continua: Los cambios se integran inmediatamente. Si algo entra en conflicto o se rompe, lo sabes rápido.

Refactorización: Todos mejoran el código mientras trabajan. La base de código mejora, no empeora, con el tiempo.

Sin estas prácticas, la propiedad colectiva es caos. Con ellas, es liberadora.

3El Contraste: Propiedad Individual

La propiedad individual tiene su lugar. Proporciona:

  • Profundidad de experiencia: Los propietarios se convierten en verdaderos expertos en su dominio
  • Responsabilidad clara: Una persona es responsable
  • Decisiones más rápidas: No se necesita consenso

Pero los costos son altos:

  • Cuellos de botella: El propietario es un punto único de falla
  • Acaparamiento de conocimiento: Intencional o no, la experiencia se concentra
  • Comportamiento territorial: "No toques mi código"
  • Movilidad limitada: Las personas no pueden cambiar de enfoque fácilmente

XP dice que los costos superan los beneficios. La propiedad compartida con prácticas de apoyo supera a la propiedad individual.

Algunos equipos usan un híbrido: propietarios primarios y secundarios. El primario conoce mejor el código; el secundario está aprendiendo. Esto proporciona experiencia mientras reduce el riesgo de cuello de botella.

Buena Propiedad Colectiva

Un desarrollador necesita corregir un error en un módulo desconocido. Abre el código, lee las pruebas, trabaja en pareja con alguien que conoce el área, hace la corrección y ejecuta todas las pruebas. El conocimiento se difunde.

Cuello de Botella de Propiedad Individual

Se encuentra un error crítico en el módulo de Alice. Alice está de vacaciones. El equipo decide esperar hasta que regrese porque nadie más 'debería' tocar su código. El error permanece en producción durante una semana.

4Superar la Resistencia

Pasar a la propiedad colectiva puede ser difícil:

"¡Pero yo soy el experto!" Sigues siendo el experto. Trabajarás en pareja con otros cuando cambien tu código. Tu experiencia se difunde, no disminuye.

"La gente arruinará mi código." Las pruebas protegen contra errores. La revisión de código (o trabajar en parejas) detecta problemas. Y "tu" código no es realmente tuyo, es del equipo.

"No puedo mantenerme al día con todo el código." No tienes que hacerlo. Aprendes lo que necesitas cuando lo necesitas. Trabaja en pareja con expertos. Lee las pruebas. Sigue los estándares.

"Nuestro código es demasiado complejo para los no expertos." Eso es un mal olor del código, no un argumento de propiedad. El código complejo debe simplificarse. Hasta entonces, la programación en parejas protege contra cambios desinformados.

El cambio es tanto cultural como técnico. Requiere confianza, transparencia y una mentalidad de crecimiento.

5Pasos Prácticos

Pasar a la propiedad colectiva gradualmente:

Semana 1-2: Trabaja en parejas entre dominios. Haz que los expertos trabajen en pareja con no expertos en el código de cada uno.

Semana 3-4: Elimina las etiquetas de propiedad explícitas. Deja de decir "el módulo de Alice." Comienza a decir "el módulo de pagos."

Semana 5-6: Fomenta la polinización cruzada. Al asignar historias, pon intencionalmente a las personas en código desconocido (con apoyo de parejas).

Continuo: Celebra el intercambio de conocimiento. Reconoce cuando alguien aprende una nueva área o cuando un "propietario" transfiere conocimiento exitosamente.

Mide el factor de autobús: ¿Cuántas personas pueden trabajar significativamente en cada área de la base de código? Apunta a al menos 2, idealmente 3+.

Una verificación rápida del factor de autobús: para cada área principal del código, ¿quién podría corregir un error de producción allí a las 3 AM? Si la respuesta es una persona, tienes un problema.

Conclusiones clave
  • La propiedad colectiva elimina cuellos de botella y difunde el conocimiento
  • Requiere prácticas de apoyo: pruebas, parejas, estándares, CI
  • La propiedad individual proporciona experiencia a costa de cuellos de botella
  • El cambio cultural requiere confianza y una mentalidad de crecimiento
  • Mide el factor de autobús: ¿cuántas personas pueden trabajar en cada área?
Errores comunes a evitar
  • Propiedad colectiva sin pruebas (los cambios rompen cosas)
  • Propiedad colectiva sin parejas (los errores no se detectan)
  • Eliminación forzada de propiedad sin aceptación cultural
  • Confundir propiedad colectiva con falta de responsabilidad

Ejercicios prácticos