Por qué utilizar Git en tu organización
Pasar de un sistema de control de versiones centralizado a Git cambia la forma en que tu equipo de desarrollo crea software. Y si tu empresa depende de su software para aplicaciones críticas, la modificación del flujo de trabajo de desarrollo afecta a toda la empresa.
Git para desarrolladores
Flujo de trabajo de rama de función
Una de las mayores ventajas de Git son sus capacidades de ramificación. A diferencia de los sistemas de control de versiones centralizados, las ramas de Git son baratas y fáciles de fusionar. Esto facilita el flujo de trabajo de ramas de función tan popular entre muchos usuarios de Git.
Las ramas de función proporcionan un entorno aislado para cada cambio en tu código base. Cuando un desarrollador quiere empezar a trabajar en algo, sin importar lo grande o pequeño sea, crea una nueva rama. Esto garantiza que la rama principal siempre contenga código de calidad para producción.
El uso de ramas de función no solo es más fiable que editar directamente el código de producción, sino que además proporciona ventajas organizativas. Te permite representar el trabajo de desarrollo con la misma granularidad que tu backlog ágil. Por ejemplo, puedes implementar una política en la que cada ticket de Jira se aborde en su propia rama de función.
Material relacionado
Chuleta de Git
VER LA SOLUCIÓN
Aprende a usar Git con Bitbucket Cloud
Desarrollo distribuido
En SVN, cada desarrollador obtiene una copia de trabajo que apunta a un único repositorio central. No obstante, Git es un sistema de control de versiones distribuido. En lugar de una copia de trabajo, cada desarrollador obtiene su propio repositorio local con un historial completo de confirmaciones.
Disponer de un historial local completo agiliza el funcionamiento de Git, ya que no necesitas una conexión de red para crear confirmaciones, inspeccionar versiones anteriores de un archivo o comparar diferencias entre confirmaciones.
El desarrollo distribuido también facilita el escalado de tu equipo de ingeniería. Si alguien provoca que la rama de producción en SVN deje de funcionar, otros desarrolladores no pueden añadir sus cambios hasta que la rama se corrija. Con Git, este tipo de bloqueo no existe. Todos pueden seguir con su actividad en sus propios repositorios locales.
Además, de manera similar a las ramas de función, el desarrollo distribuido crea un entorno más fiable. Incluso si un desarrollador borra su propio repositorio, puede clonar el de otra persona y empezar de nuevo.
Solicitudes de incorporación de cambios
Muchas herramientas de gestión de código fuente, como Bitbucket, mejoran la funcionalidad básica de Git con solicitudes de incorporación de cambios. Una solicitud de incorporación de cambios es una forma de pedirle a otro desarrollador que fusione una de tus ramas en su repositorio. Esto no solo permite a los responsables del proyecto realizar un seguimiento de los cambios más fácilmente, sino que además permite a los desarrolladores iniciar debates sobre su trabajo antes de integrarlo con el resto del código base.
Dado que son esencialmente un hilo de comentarios adjunto a una rama de funciones, las solicitudes de incorporación de cambios son muy versátiles. Cuando un desarrollador se queda atascado con un problema complejo, puede iniciar una solicitud de incorporación de cambios para pedir ayuda al resto del equipo. Por otra parte, los desarrolladores júnior pueden estar seguros de que no están destruyendo todo el proyecto al tratar las solicitudes de incorporación de cambios como una revisión formal del código.
Comunidad
En muchos círculos, Git se ha convertido en el sistema de control de versiones esperado para nuevos proyectos. Si tu equipo usa Git, lo más probable es que no tengas que formar a los nuevos empleados sobre tu flujo de trabajo, porque ya estarán familiarizados con el desarrollo distribuido.
Además, Git es muy popular entre los proyectos de código abierto. Esto significa que es fácil aprovechar las bibliotecas de terceros y animar a otros a bifurcar tu propio código fuente abierto.
Ciclo de publicación más rápido
El resultado final de las ramas de función, el desarrollo distribuido, las solicitudes de incorporación de cambios y una comunidad estable es un ciclo de publicación más rápido. Estas capacidades facilitan un flujo de trabajo ágil en el que se anima a los desarrolladores a compartir cambios más pequeños con mayor frecuencia. A su vez, los cambios pueden aplicarse a través de la canalización de implementación más rápido que con las publicaciones monolíticas comunes con los sistemas de control de versiones centralizados.
Como es de esperar, Git funciona muy bien con entornos de integración continua y entrega continua. Con los hooks de Git puedes ejecutar scripts cuando ocurren ciertos eventos dentro de un repositorio, lo que te permite automatizar la implementación a tu gusto. Incluso puedes compilar o implementar código de ramas específicas en distintos servidores.
Por ejemplo, es posible que quieras configurar Git para implementar la confirmación más reciente de la rama de desarrollo en un servidor de prueba cada vez que alguien fusione una solicitud de incorporación de cambios en él. La combinación de este tipo de automatización de compilación con la revisión por pares significa que puedes confiar al máximo en tu código a medida que pasa del entorno de desarrollo al entorno de ensayo y a la producción.
Git para marketing
Para entender cómo el cambio a Git afecta a las actividades de marketing de tu empresa, imagina que tu equipo de desarrollo tiene tres cambios distintos programados para llevarse a cabo en las próximas semanas:
- El equipo está terminando una función innovadora en la que ha estado trabajando durante los últimos 6 meses.
- Mary está implementando una función más pequeña que no está relacionada y solo afecta a los clientes existentes.
- Rick está realizando algunas actualizaciones muy necesarias en la interfaz de usuario.
Si utilizas un flujo de trabajo de desarrollo tradicional que se basa en un VCS centralizado, es probable que todos estos cambios se acumulen en una sola publicación. El equipo de marketing solo puede hacer un anuncio que se centre principalmente en la función innovador y, de hecho, el potencial de marketing de las otras dos actualizaciones se ignora.
El ciclo de desarrollo más corto que facilita Git hace que sea mucho más fácil dividirlas en publicaciones individuales. Esto les da a los expertos en marketing más de qué hablar y con más frecuencia. En la situación anterior, el equipo de marketing puede crear tres campañas que giren en torno a cada función y, por lo tanto, dirigirse a segmentos de mercado muy específicos.
Por ejemplo, podrían preparar un gran envío de solicitudes de incorporación de cambios para la función innovadora, una entrada de blog corporativo y un blurb de boletín informativo para la función de Mary, así como algunas entradas de invitado sobre la teoría de Rick en cuanto a la experiencia de usuario subyacente para enviarlas a blogs de diseño externos. Todas estas actividades se pueden sincronizar con una publicación independiente.
Git para gestión de productos
Las ventajas de Git para la gestión de productos son prácticamente las mismas que para el marketing. Las publicaciones más frecuentes se traducen en comentarios más frecuentes de los clientes y actualizaciones más rápidas en respuesta a esos comentarios. En lugar de esperar a la próxima publicación dentro de 8 semanas, puedes enviar una solución a los clientes tan pronto como sus desarrolladores puedan escribir el código.
El flujo de trabajo de la rama de función también proporciona flexibilidad cuando cambian las prioridades. Por ejemplo, si estás a mitad de un ciclo de publicación y quieres posponer una función en lugar de otra en la que el tiempo es crítico, no hay problema. Esa función inicial puede permanecer en su propia rama hasta que el equipo de ingeniería tenga tiempo de volver a ella.
Esta misma funcionalidad facilita la gestión de proyectos de innovación, pruebas beta y prototipos rápidos como códigos base independientes.
Git para diseñadores
Las ramas de función se prestan a la creación rápida de prototipos. Tanto si tus diseñadores de experiencia o interfaz de usuario quieran implementar un flujo de usuario completamente nuevo como si simplemente quieren reemplazar algunos iconos, al extraer una nueva rama conseguirán un entorno de espacio aislado con el que experimentar. De este modo, los diseñadores podrán ver qué aspecto tendrán los cambios en una copia de trabajo real del producto sin temor a que la funcionalidad deje de funcionar.
La encapsulación de cambios en la interfaz de usuario como esta facilita la presentación de actualizaciones a otras partes interesadas. Por ejemplo, si el director de ingeniería quiere ver en qué ha estado trabajando el equipo de diseño, tan solo tiene que decirle al director que extraiga la rama correspondiente.
Las solicitudes de incorporación de cambios llevan esto un paso más allá y proporcionan un lugar formal para que las partes interesadas debatan sobre la nueva interfaz. Los diseñadores pueden hacer los cambios necesarios, y las confirmaciones resultantes aparecerán en la solicitud de incorporación de cambios. Esto anima a todos a participar en el proceso de iteración.
Quizás la mejor parte de la creación de prototipos con ramas es que es tan fácil fusionar los cambios en la producción como desecharlos. No hay presión por hacer ninguna de las dos cosas. Esto anima a los diseñadores y desarrolladores de interfaces de usuario a experimentar y, al mismo tiempo, garantizar que solo las mejores ideas lleguen al cliente.
Git para atención al cliente
Los equipos de atención al cliente y éxito del cliente suelen tener una perspectiva distinta de las actualizaciones que los gestores de productos. Cuando un cliente los llama, por lo general tienen algún tipo de problema. Si ese problema está causado por el software de tu empresa, es necesario enviar una corrección del error lo antes posible.
El ciclo de desarrollo optimizado de Git evita posponer las correcciones de errores hasta la siguiente publicación monolítica. Un desarrollador puede solucionar el problema aplicando un parche directamente en producción. Las correcciones más rápidas equivalen a clientes más satisfechos y menos tickets de asistencia repetidos. En lugar de quedarse atascado con un "Lo siento, nos ocuparemos de esto", el equipo de atención al cliente puede comenzar respondiendo con "¡Ya lo hemos arreglado!".
Git para recursos humanos
Hasta cierto punto, tu flujo de trabajo de desarrollo de software determina a quién contratas. Siempre ayuda contratar a ingenieros que estén familiarizados con tus tecnologías y flujos de trabajo, pero el uso de Git también proporciona otras ventajas.
Los empleados se sienten atraídos por las empresas que ofrecen oportunidades de crecimiento profesional, y entender cómo aprovechar Git tanto en organizaciones grandes como en pequeñas es una bendición para cualquier programador. Al elegir Git como tu sistema de control de versiones, estás tomando la decisión de atraer a desarrolladores con visión de futuro.
Git para gestores de presupuestos
Git se basa en la eficiencia. Para los desarrolladores, lo elimina todo, desde el tiempo perdido pasando confirmaciones a través de una conexión de red hasta las horas de trabajo necesarias para integrar los cambios en un sistema de control de versiones centralizado. Incluso hace un mejor uso de los desarrolladores júnior al brindarles un entorno seguro para trabajar. Todo esto afecta a los resultados de tu departamento de ingeniería.
Sin embargo, no olvides que estas eficiencias también se extienden fuera de tu equipo de desarrollo. Evitan que el equipo de marketing invierta energía en material publicitario para funciones que no son populares. Permiten a los diseñadores probar nuevas interfaces en el producto real con pocos gastos. Te permiten reaccionar a las quejas de los clientes de inmediato.
Ser ágil consiste en descubrir qué funciona lo más rápido posible, incrementar las labores que tienen éxito y eliminar las que no lo tienen. Git sirve como multiplicador de todas tus actividades empresariales y garantiza que cada departamento haga su trabajo con más eficiencia.
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.