No hay día que no aprenda una cosa nueva de este apasionante mundo tecnológico. Esta vez, he aprendido la importancia del control de versiones en el mundo del desarrollo de software.
Seguro que para muchos de vosotros el tema de gestión de cambios es más que obvio, pero ¿no me diréis que no os resulta rarísimo que todavía sigan existiendo desarrolladores que no utilizan ningún sistema de control de versiones?
Releyendo la última encuesta de Stack Overflow, existe un 10% de los encuestados que no controlan los cambios de sus proyectos. En cambio, hay un 90% que si lo hace, siendo Git el control de versiones preferido por los desarrolladores.
Como diría Michael Knight, si fuera desarrollador “¡Git, te necesito!”. Esa es la conclusión a la que he llegado después de investigar sobre el control de versiones más popular.
Git es una herramienta que ayuda a facilitar el trabajo, pero hay que saber usarla
Francisco Guillén, desarrollador, emprendedor y de esos valientes que ha decidido dejar el código por unos meses para viajar por el mundo, me comentaba que los desarrolladores que ya llevan un tiempo en esta profesión han visto e incluso han hecho de todo.
Utilizar correctamente un control de versiones no siempre ha tenido la importancia que tiene en la actualidad. Paco me decía que hasta hace muy poco, las empresas no se tomaban en serio este tema. Reconoce haber participado en proyectos con CVS donde cambiaba los archivos .class directamente en producción. Pero él, no es el único que me lo ha comentado, era más que habitual cuando se trabajaba en equipos pequeños, con otros developers cerca y creyendo que se sabía lo que se hacía. Aunque eso de excusarse no va con Paco, reconoce que se hacía mal y todos los sabían. De hecho semanas o incluso días después, nadie tenía ni idea de qué había en producción. Sabía que llegaría ese momento de descompilar las clases para ver a qué correspondían.
Paco ha mencionado CVS, el “old school” de los sistemas de control de versiones. Me contaba que a día de hoy en su trabajo están divididos, no porque quieran los programadores, sino porque “es lo que toca”. Si estás en un proyecto antiguo, usas SVN, si estás en un proyecto nuevo, usas Git.
Curioso… desarrolladores separados por el control de versiones, independientemente de sus preferencias tecnológicas. Porque los proyectos en los que participan, así lo exigen. De hecho, ya lo hemos leído antes en la encuesta y lo podemos ver de nuevo, en las respuestas de ¿Cuál es tu sistema de control de versiones preferido: Subversion, Git u otro?. Sigue ganando Git como sistemas de control de versiones preferido.
Paco, también reconoce su preferencia a nivel personal por Git le gusta su sencillez del repositorio local y su filosofía de ramas para gestionar los cambios. Pero también es consciente que de nada sirve en el proyecto, si no tienes ni idea de cómo usarlo. Además destaca la importancia de tener un equipo a alguien “con cabeza”, que decida una buena política de versionado y ramas en función del producto, que vigile que esa política se cumple.
Si desde los inicios, cuentas con ese profesional clave, hubiéramos funcionado bien hasta con el CVS, concluye Paco.
“God save the Git”
Así es el titular que me dió el Clean Code en PHP, Óscar Vítores cuando le pregunté su opinión sobre este tema. Tiene claro que a día de hoy no podría concebir un desarrollo sin control de versiones, pero mucho menos sin Git.
Lo hemos hablado en anteriores post, la popularidad que se crea en el mundo del desarrollo, es algo más que un capricho o moda de los desarrolladores. Óscar me comentaba que ese 10% de los encuestados no controlen los cambios de sus proyectos, es más habitual de lo que pensamos. Existen en la actualidad, relevantes empresas que no utilizan ningún tipo de sistema versionado en sus proyectos porque están enmarcados en una cultura de resistencia al cambio.
Es muy interesante hablar con desarrolladores como Paco y Óscar y que hagan un análisis más allá de la tecnología, mencionando factores psicosociales como la resistencia al cambio. Ambos comparten lo gratificante que es romper con esa resistencia y observar cómo cambia la mentalidad. Pero todos sabemos que es muy costoso cognitivamente eso de desaprender para aprender (otra vez).
A parte de esta cuña psicológica, seguimos hablando de Git. Haciendo historia, su uso ha ido en aumento desde su nacimiento allá por el 2005, y ha conseguido pasar de mantener el código del kernel de Linux en sus inicios a ser el sistema de control de versiones más usado para el desarrollo de software.
Pero como me comentaba Óscar, Git no viene solo, alrededor de él, crece un ecosistema de herramientas y procesos que facilitan su uso en diferentes entornos de desarrollo. De entre todos ellos cabe destacar a GitHub como uno de los más influyentes, que consiguió expandir entre sus 9 millones de usuarios el uso de Git. Pudiendo publicar, colaborar y compartir sus proyectos en una amplia red social de desarrolladores. Está claro, nadie duda de la influencia de GitHub y ese famoso logo de Octocat.
¿Y de los demás sistemas de control de versiones? Óscar hace un análisis de su homólogo competidor Mercurial, con una presencia muy poco notable, pero que por lo menos da testimonio de su aparición cuando nacieron los sistemas distribuidos, y que pudo haber sido él, el que estuviera allí arriba, superado también por el sistema de Microsoft (TFS) que ocupa un relevante tercer puesto, gracias a sus plataformas de desarrollo. Eso sí, cabe recordar que da soporte a Git, con lo cual este podría seguir sumando adeptos.
Para finalizar la exposicion, Óscar habla de Subversión resistiendo la embestida en un honorable segundo lugar y con gran cuota uso. Esto viene a demostrar que lo que hoy es Git lo fue Subversión en su día (así como en su momento lo fue CVS), y muestra que la herencia de los antiguos sistemas está todavía bastante presente.
En la misma línea que comentaba Paco y para todos esos desarrolladores que ya tienen una experiencia demostrada en el ámbito del software, Óscar comparte que CVS no será difícil encontrarlo en empresas o proyectos con unos cuantos años de actividad. La etapa tecnológica que se cubrió ya ha cumplido dando paso a los nuevos sistemas como ya vemos en los desarrollos actuales y que en un futuro más cercano, será Git quien tome las riendas hasta el próximo relevo.
Conclusión
Para concluir todo este aprendizaje, Paco me hizo llegar “un juego” para comprender cómo funciona Git y Óscar me inspiró con su leitmotiv “Por favor, no programéis a pelo, versionar vuestro código, este os lo agradecerá”.