Simyl
simylflow
Inicio del curso
Módulo 2: Control de Código Fuente y Fundamentos de Git
Lección 3 de 5
15 min

Ramas y Pull Requests

La capa de colaboración de Git.

1Por Qué Existen las Ramas

Las ramas existen porque el trabajo de ingeniería real no ocurre en una sola secuencia lineal. En cualquier momento dado, un equipo de cinco personas podría tener tres funcionalidades en progreso, una corrección de error en revisión y un cambio de infraestructura esperando una ventana de despliegue. Sin ramas, todo ese trabajo colisionaría en un solo espacio de trabajo compartido: funcionalidades a medio terminar rompiéndose entre sí, una corrección de error enviándose accidentalmente con una funcionalidad incompleta, cambios de infraestructura enredándose con código de producto.

Una rama le da a cada flujo de trabajo su propio contexto aislado. Puedes romper cosas, experimentar, refactorizar agresivamente, y nada de eso afecta a tus compañeros de equipo hasta que explícitamente eliges fusionar. Este aislamiento es lo que hace posible el trabajo paralelo sin sobrecarga constante de coordinación.

Pero el aislamiento es solo la mitad del valor. Las ramas también reducen el costo de la experimentación. ¿Quieres probar un algoritmo diferente? Crea una rama, haz un prototipo, mide el rendimiento. Si es más rápido, fusiona. Si no lo es, elimina la rama. Costo total: cero daño a la base de código compartida, cero ruido en el historial de commits, cero reversiones necesarias. Los equipos que crean ramas libremente prueban más enfoques y encuentran mejores soluciones. Los equipos que tratan las ramas como algo pesado (o las omiten completamente haciendo commits a main) experimentan menos o experimentan peligrosamente.

2Pull Requests como Contratos Sociales

Un pull request es una propuesta: "Esto es lo que cambié, por qué lo hice, y me gustaría que alguien lo revisara antes de fusionarlo". Eso suena simple, pero representa un cambio fundamental de control de calidad implícito a explícito.

Sin PRs, la revisión de código es opcional, ad-hoc e inconsistente. Tal vez alguien revise tu código antes de que se envíe, tal vez no. Tal vez revisen parte de él. Tal vez lo revisen después de que ya esté en producción. Los PRs hacen de la revisión una puerta: el código no llega a main hasta que al menos otro ingeniero lo haya leído, entendido la intención y aprobado el enfoque.

Esto no se trata de atrapar errores (aunque lo hace). Se trata de responsabilidad compartida. Cuando un PR es revisado y aprobado, el cambio ya no es "el código de Sarah", es el código del equipo. El revisor está diciendo "Entiendo esto, estoy de acuerdo con el enfoque y me siento cómodo manteniéndolo". Esa responsabilidad distribuida significa que ningún ingeniero se convierte en un cuello de botella o un punto único de falla.

Los PRs también crean un registro de decisiones. La descripción explica el porqué, el diff muestra el qué, y los comentarios de revisión capturan las compensaciones consideradas. Tres meses después, cuando alguien pregunta "¿por qué lo construimos de esta manera?", el PR tiene la respuesta, incluyendo las alternativas que se discutieron y rechazaron.

3Revisión de Código como Conversación, No como Control de Acceso

La revisión de código sale mal cuando se convierte en un ritual de control de acceso: un ingeniero senior bloqueando fusiones con detalles de estilo mientras el equipo espera. Eso no es revisión; es un cuello de botella disfrazado de calidad.

La buena revisión de código es una conversación entre pares. El trabajo del revisor no es demostrar que sabe más, es preguntar "¿entendí tu intención?" y "¿consideraste este caso extremo?" Los mejores comentarios de revisión son preguntas, no directivas. "¿Qué pasa si esta lista está vacía?" enseña más que "Agrega una verificación de nulo aquí".

Tres principios que mantienen la revisión productiva:

  • Revisa el enfoque, no la sintaxis. Los linters atrapan el formato. Los humanos deben enfocarse en la lógica, la arquitectura y el nombramiento: cosas que las máquinas no pueden evaluar.
  • Responde en horas, no en días. Un PR esperando revisión durante 72 horas es trabajo bloqueado. Si no puedes revisar hoy, dilo: deja que alguien más lo tome.
  • Distingue entre bloqueante y no bloqueante. "Esto va a fallar en producción" es bloqueante. "Yo nombraría esta variable de manera diferente" es una sugerencia. Mézclalos y cada revisión se siente como una pelea.

La cultura de revisión también es una de las herramientas de incorporación más efectivas que tiene un equipo. Un nuevo ingeniero leyendo revisiones de PR aprende los patrones, preferencias y errores pasados del equipo más rápido de lo que cualquier documentación podría enseñarle. El archivo de revisiones es una guía de estilo viva.

Las ramas de larga duración son deuda técnica

Cada día que una rama vive separada de main, la fusión se vuelve más difícil. Las ramas deben vivir días, no semanas.

Conclusiones clave
  • Las ramas te permiten experimentar sin romper el trabajo compartido
  • Los PRs son cómo los equipos hacen explícita la revisión de código
  • Las ramas de larga duración son deuda: fusiona seguido
Errores comunes a evitar
  • Nombres de ramas como `fix-stuff` o `john-branch`
  • PRs que cambian 50 archivos de una sola vez