Cargando...

Mejora la productividad de tu empresa con Git

Si tienes faena y no puedes leer, escucha nuestro Podcast o encuéntralo en Ivoox y Spotify.



Lo que me pasó no te tiene que pasar a ti

¿Por qué las empresas tienen que usar Git como sistema de control de versiones? te cuento un poco mi experiencia para que sepas de qué va esto. En la primera empresa de mercadeo digital a la que trabajé no tenían implementado un sistema de control de versiones, pues se hacía un lío al momento de desarrollar proyectos en equipo, de hecho, esto nunca sucedió, no había trabajo colaborativo.

En mi primer día laboral, donde te dan inducción sobre la empresa, te orientan sobre tus funciones y demás, llega el momento de mi primera tarea, me dice el líder de equipo que debo entregar para el día siguiente una plantilla web básica, donde las especificaciones no eran gran problema, por lo que esa misma noche la diseñé y como todo buen estudiante y autodidacta, estaba recién egresado de la carrera, quería demostrar que esas noches de desvelo funcionaron y que iba a brindar el mayor aporte posible, así que proactivamente procedí a subir el proyecto en un repositorio privado en GitHub, le proveí los accesos al supervisor y sucedió lo siguiente. Al arrancar mi segundo día, el supervisor me solicita el proyecto, esperando por su parte, que le pasara un comprimido por alguna pendrive o drive remoto, así que le dije que ya le había enviado el repositorio y sus accesos, a lo cual respondió que no tenía nada y que se lo pasara por el disco compartido en red, y puff, ahí me di cuenta que no estaban usando algún sistema de control de versiones y que peor aún, desconocían del concepto, algún que otro desarrollador ya había escuchado de Git, pero no lo había puesto en práctica.

Te cuento todo esto, porque fue estresante trabajar colaborativo, pero estar haciendo versionado manual de los proyectos, falta de orden y con herramientas tradicionales, a punto de quedar obsoletas. Es por ello, que si te identificas en cierta medida con la situación que pasé, te dejo por acá el modelo de propuesta que hice en esa empresa para intentar mejorar el ciclo de desarrollo o si no te falta ambición, por supuesto, para ganar un aumento o algún reconocimiento. Además, con todo la burocracia y cuellos de botella que existen en las empresas para ejecutar alguna propuesta se hace tardía, retrasando los procesos. Ahora en día hablamos de DevOps y de tecnologías Cloud, imagínate, que si no tienes una base como un sistema de control de versiones, no podrás hacer ese salto.


Nos dejamos de historias y vamos directo al grano

Con la implementación de un sistema de control de versiones, hará que la productividad aumente considerablemente, además de proporcionar grandes utilidades como conservar un histórico de cambios, estadísticas de cada proyecto a lo largo del tiempo y proporcionar seguridad de los datos. Solidifica el concepto de trabajo en equipo y elimina muchos problemas que se provocaban debido a las limitaciones del software tradicional. La herramienta clave para elevar el nivel de productividad, es Git.

Todavía, algunas empresas orientadas en el área de mercadeo, desarrollo de software y todo lo que tenga que ver con el área tecnológica, aún siguen utilizando protocolos y herramientas tradicionales, que solucionan sus operaciones, pero que no le proporcionan mayor productividad. Esto es debido a que quizá tienen la filosofía de que, si algo funciona mejor no tocarlo, donde la idea del cambio es un riesgo a cada momento, por lo que prefieren mantener la infraestructura tal y como está. La tecnología avanza a un ritmo acelerado, por lo que hay que ir actualizando modelos de procesos de ejecución del desarrollo e ir normando nuevas características, ya que la competencia entre las empresas nunca se detiene. A día de hoy, la utilización de protocolos como FTP ha quedado prácticamente obsoleta o al menos la mayoría de las empresas y desarrolladores con un vasto conocimiento al respecto de seguridad conocen o determinan que este protocolo de transferencia de archivos es muy inseguro, ya que no contiene ninguna métrica de cifrado de los datos, por lo que cualquier usuario auditando la red interna puede observar los datos que se pasan por el medio.


Tira el anzuelo con objetivos reales

Objetivo general

  • Implementar Git como un sistema de control de versiones a nivel empresarial.

Objetivos específicos

  • Remarcar los problemas que se presentan habitualmente en desarrollo de proyectos al no contar con un SCV.

  • Demostrar las bondades de un SCV y cómo este aumenta a gran escala la productividad.

  • Brindar un camino o ruta de aprendizaje en cuanto a un SCV.


Estado de las empreas sin un SCV

A continuación, en las empresas que no contienen un sistema de control de versiones, mantienen vigentes los siguientes escenarios:

  • Un proyecto web es desarrollado por un solo desarrollador.

  • Se publican los sitios por medio de una conexión FTP o SFTP.

  • Se modifican los sitios haciendo múltiples copias de seguridad.

  • Los sitios son estrictamente modificados por un mismo desarrollador al mismo tiempo.

  • Para la publicación de nuevos cambios, se sobrescribe el proyecto y en los mejores casos, sólo el fichero en cuestión.

  • Se mantienen muchas copias de seguridad por fecha, incluso redundando entre el calendario.

  • El único histórico de cambios son las copias por fecha, pero que acumulan el tamaño total del proyecto hasta ese punto.

  • No hay una forma fundamental para encontrar las diferencias de cambios entre una copia de seguridad y otra del mismo proyecto.

  • No existe ningún control sobre el desarrollo colaborativo.

  • No trabajan funcionalidades en paralelo de un proyecto base.

  • No existen una estructuración y mantenimiento de versiones.


Cuestionamientos

Estos son los problemas más comunes que suceden en las empresas que no implementan un SCV:

  • ¿Cómo hacemos para trabajar varios desarrolladores en un mismo archivo sin sobrescribir el desarrollo del otro?

  • ¿Cómo nos ponemos de acuerdo para editar código sin pisar el trabajo del otro, cómo evitamos que se borre o pierda parte del trabajo por algún error?

  • ¿Cómo retorno a una versión anterior de mi proyecto sino conservo una copia de seguridad?

  • ¿Cómo publicar los nuevos cambios y no sobrescribir todo el proyecto?


Ventajas que encontramos en Git

Compartición selectiva

  • Se permite decidir que parte del desarrollo compartir y con quien.

Velocidad

  • En caso de que Git se implemente como servicio local en la infraestructura física, el SCV se realizaría dentro de la propia red empresarial, ganando velocidad de acceso y escritura, así como eliminando el requisito de contar con una conexión a internet obligatoria.

Ramificación

  • Se pueden crear diferentes instancias del mismo proyecto para trabajar en paralelo (en entornos aislados) en distintos cambios sin que existan incidentes de redundancia y sobreescritura.

Convergencia

  • Aplicar una combinación sobre las diferentes instancias trabajadas en paralelo, logrando incluir o converger las distintas partes desarrolladas en el proyecto de forma sencilla y segura sin presentar conflictos.

Sandbox

  • Siempre se podrá acceder al proyecto base (raíz), aislado de las ramas, las demás instancias sobre el proyecto que está sufriendo cambios, por lo que la integridad de proyecto inicial no correrá riesgos.

Flujo de trabajo adaptable

  • Git admite un cúmulo de configuraciones que permiten dentro de su estructura, organizar el trabajo tal y como el desarrollador lo desee.

Seguridad

  • Una problemática que toda empresa se plantea, es: si tengo un SVC instalado localmente y se produce una caída de la tensión eléctrica que provoca el apagado de la infraestructura, ¿los datos se habrán corrompido en el proceso de escritura? No. La mayoría de los SCV cuentan con un sistema de cifrado y otros tipos de medidas se seguridad que se aplican para que los datos permanezcan lo más íntegros posibles. 

Coste, precio

  • Git es completamente gratis e ilimitado para proyectos públicos. Si se desea tener proyectos privados en línea, adquiriendo alguno de los planes de que ofrecen, los cuales están de 7 a 50 dólares mensuales, permitiendo crear 5 y 50 repositorios privados respectivamente. Existen muchas soluciones de software privativo, sin embargo, pocos de software libre. GitHub, GitLab y BitBucket son los mejores, también algunos hostings ofrecen este servicio. Si se contrata un plan para mantener los repositorios (proyectos web) en la nube, de paso se está invirtiendo en la seguridad y acceso.

Facilita el trabajo colaborativo

  • Distintos programadores pueden estar editando el mismo fichero, o versiones de distintas del mismo fichero; todos los cambios serán reflejados en el documento final.

Reduce considerablemente los tiempos de deploy (despliegue)

  • Los cambios que se suben son solamente los bloques de código que se agregaron o se eliminaron (no sobre escriben los archivos cambios, sino sólo los cambios), observando las diferencias del proyecto actualizado con respecto al historial de versiones.

Permite regresar a versiones anterior de forma sencilla y rápida

  • En caso de haber realizado cambios negativos en un proyecto en producción, volver a la versión estable es fácil.

Permite generar flujos de trabajo

  • Facilita el desarrollo y mantenimiento de proyectos de gran tamaño.

El ecosistema Git

  • Contiene muchas herramientas para ser aprovechadas, hasta el punto de lograr que con una actualización local, automatizar el proceso de despliegue al servidor donde cargará el proyecto, además que de forma intermedia resuelva test unitarios al proyecto, confirmando que los cambios estén correctos. Este deja muchísimo tiempo para cosas más productivas.

El clonado de repositorios actúa como Backups completas y proporciona una mejor auditoría de eventos de ramificación y fusión.


Razones para usar Git

  • Versionar el código

  • Aprender y experimentar

  • Contribuir

  • Trabajo en equipo

  • Estar informado

  • Visor de código

  • Mostrar habilidades de desarrollo.

    • GitHub mantiene un tablero de actividad, esto permite que los reclutadores se fijen en los proyectos que trabaja el desarrollador.

  • Registro de incidencias

    • Cada proyecto creado en GitHub incluye un sistema de seguimiento de problemas, esto permite abrir un ticket valorando el problema y encontrando soluciones.

  • Compatibilidad

    • Está en todas las plataformas (OS y entornos de desarrollo).

  • Información estadística de cómo se está desarrollando (autores, # versiones, cambios, etc.).

  • Integración con otras herramientas

    • Gestores de proyectos como Redmine o Taiga

    • Sistemas de integración continua como Travis o Circle CI

    • Sistemas de gestión de la calidad de un proyecto como SonaQube

  • Ahorro de ancho de banda

    • Cada vez que se publica una nueva versión del proyecto, este sólo envía los cambios, no todo el proyecto.

Ciclo de desarrollo con un sistema de control de versiones

Solución al problema

Cambiar la mentalidad de que el riesgo traerá solo malos resultados y tener clara la idea que la tecnología avanza muy rápido. Por otro lado, e importante, estar abierto a las nuevas metodologías de trabajo, con esto, implementando una solución eficaz como un sistema de control de versiones para gestionar los desarrollos de una manera más fiable a la tradicional y obsoleto para empresas con visión de avance.

Soluciones a FTP / SFTP

Contratar VPS (Virtual Prívate Server) en lugar de CPanels y capacitar a desarrolladores y administradores de sistema, para que manipulen una máquina o infraestructura en la nube, por lo que SSH será el protocolo que se usará reemplazando a FTP, proporcionando un canal de seguridad para la comunicación con el servidor.

SSH (Secure Shell) también está disponible en algunos CPanels, logrando al menos, administrar el directorio espejo que establece el proveedor.


Lo que más le interesa a la empresa, los costes

Las herramientas que se utilizarán son de software libre y código abierto, por lo que no tiene un coste monetario sobre el servicio. Desde las herramientas de consola hasta con interfaz gráfica.

Git es el actual sistema de control de versiones más usado desde pequeños a grandes proyectos, razones que hace que las empresas tomen acción y ventaja, debido a esto, también se han desarrollado herramientas que manipulan Git de una manera más sencilla y amigable, por lo que se han hecho privativos, lo que quiere decir que tienen versiones de pago.

Los costes para mantener online la gestión de muchos proyectos se habrá que consultar en plataformas como GitHub, GitLab y BitBucket.

Iniciando con Git, lo demás en cuanto a infraestructura y desarrollo, siempre será escalable.


Hoja de ruta para aprender Git

Control automatizado de versiones

  • ¿Qué es el control de versiones y por qué se debería usar?

  • Comprender los beneficios de usar un sistema automático de control de versiones.

  • Comprender los fundamentos básicos del funcionamiento de Git.

Configurando Git

  • ¿Cómo me preparo para utilizar Git?

  • Configurar Git la primera vez que se utilice.

  • Comprender los significados de los flags (parámetros) de configuración.

Creando repositorios

  • ¿Dónde almacena Git la información?

  • Crear un repositorio local de Git.

Rastreando cambios

  • ¿Cómo registro cambios en Git?

  • ¿Cómo reviso el estatus de mi repositorio de control de versiones?

  • ¿Cómo registro notas de los cambios que he hecho y por qué?

  • Agregar y modificar commits para uno o más ficheros.

  • Explicar dónde se almacena la información en cada etapa del flujo de trabajo de un commit de Git.

  • Destinguir entre mensajes descriptivos y no descriptivos de un commit.

Explorando el historial

  • ¿Cómo puedo identificar versiones anteriores de archivos?

  • ¿Cómo puedo revisar mis cambios?

  • ¿Cómo puedo recuperar versiones anteriores de archivos?

  • Explicar qué es el HEAD de un repositorio y cómo usarlo.

  • Identificar # de commit de Git y restaurar versiones anteriores de archivos.

Ignorando cosas

  • ¿Cómo puedo decirle a Git que ignore los archivos que no deseo rastrear?

  • Configurar Git para ignorar archivos específicos.

  • Explicar el por qué ignorar archivos puede ser útil.

Repositorios remotos en GitHub

  • ¿Cómo puedo compartir los cambios con otros en la web?

  • Explicar qué es un repositorio remoto y por qué es útil.

  • Hacer push y pull en un repositorio remoto.

Trabajos en colaboración

  • ¿Cómo puedo utilizar el SCV para colaborar con otros usuarios?

  • Clonar un repositorio remoto.

  • Colaborar en crear un repositorio común.

Conflictos

  • ¿Cómo hago cuándo mis cambios entran en conflicto con los de otro usuario?

  • Explicar qué son los conflictos y cuándo pueden ocurrir.

  • Resolver conflictos que resultan de una fusión.

La ciencia abierta        

  • ¿Cómo un SCV me puede ayudar a tener mi trabajo más abierto?

  • Explicar cómo el control de versiones nos ayuda a tener un cuaderno electrónico para todo nuestro trabajo computacional.

Licencia y hospedaje

  • ¿Qué información sobre licencias debería incluir en mi trabajo?

  • ¿Dónde debería alojar mi repositorio de control de versiones?

  • Explicar la importancia de agregar información sobre licencias. Escoger una licencia apropiada. (Swcarpentry GitHub.io, 2021)


Conclusiones

Se han conseguido definir los problemas que se presentan habitualmente al desarrollar software, más orientado a la web. Además, se ha descrito detalladamente una solución que provee muchas ventajas, implementando un sistema de control de versiones, dando a conocer distintos panoramas para abrazar las bondades de estas técnicas y optimizar la gestión de versiones, además de inducir una ruta de aprendizaje sobre esta tecnología, para brindar mayor productividad en un modelo empresarial.

Finalmente

Si no se utiliza un SCV, hay que empezar a hacerlo, porque los costes de desarrollo y mantenimiento de cada proyecto acabarán matando a la empresa.


Algunas referencias que puedes visitar

Git. (2021). Git SCM. Retrieved from https://git-scm.com/

Swcarpentry GitHub.io. (2021).

  • John Doe
    43 Sales$156,24 Totals
    62%
  • Rosy O'Dowell
    12 Leads$56,24 Totals
    32%

With supporting text below as a natural lead-in to additional content.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled.