¿Por qué debo aprender a manejar versiones de mis proyectos?

Como mencioné anteriormente, hay procesos que todo desarrollador debe saber hacer, ya que la industria lo pide y en general ayuda a mantener la calidad de nuestro trabajo. Uno de estos procesos es llevar el manejo de versiones de software, pero la pregunta es ¿Por qué es un proceso importante?


1. Ayuda a mantener un historial de nuestro trabajo

Me gusta siempre poner el ejemplo cuando hablo de esto con las personas, de que a menudo cuando hacemos trabajos en equipo o por nuestra propia cuenta terminamos con muchas carpetas que nombramos: proyecto, proyecto 2, proyecto 2 final, proyecto 2 final final, proyecto 2 final este sí; y así sucesivamente. Creo que el problema de esto se explica por sí solo, si el proyecto es muy largo terminaré con muchas carpetas que tienen exactamente lo mismo y que simplemente muestran una evolución de mi proyecto a lo largo del tiempo.

Esta es una razón poderosa para utilizar sistemas de manejo de versiones, ya que en una sola carpeta tendré una estructura lógica o física que me ayude a mantener el proceso de creación de mi proyecto.

2. Facilita el trabajo en equipo

Otro problema que surge al trabajar proyectos es la manera en que comparto contenido entre miembros de un equipo, lo interesante de las ideas detrás de los sistemas de manejo de versiones es que han estado mucho tiempo en la industria; aunque aún hoy nos seguimos enviando correos con archivos .rar que incluyen los nuevos cambios que hicimos.

Muy a menudo va a pasar que los cambios serán tan sutiles que probablemente terminemos con versiones no funcionales de nuestro proyecto. Además rara vez somos lo suficiente cuidadosos para verificar que el código que terminamos publicando realmente funciona. Los VCS (version control software) nos dan una gran ayuda, ya que nos permiten unir los cambios de los distintos miembros del equipo de manera ordenada y nos asegura que siempre todos tendrán una versión actualizada del proyecto.

3. Permite aislar etapas del proceso de desarrollo

Sin importar la metodología que escojamos para desarrollar un proyecto, tenemos que asegurarnos de que nuestros procesos reflejen las etapas de dicha metodología. Utilizar VCS facilita tener aisladas la versión de producción, la versión estable y la versión de desarrollo, nos permite movernos entre estas versiones y de manera sencilla escalar nuestro proyecto entre versiones. Además permite que los ingenieros de pruebas puedan de mejor forma llevar control de los fallos que se encuentran en cada una de las versiones y mejorar así la calidad de nuestro producto.

4. “Fomenta las buenas prácticas”

Este punto lo pongo entre comillas, ya que de por si una buena practica de desarrollo implica llevar un control adecuado de las versiones de proyecto. Sin embargo procesos como integración continua (unir cambios constantemente a los repositorios del proyecto), el despliegue, las actualizaciones, el seguimiento y reporte de fallos, las migraciones; se hacen más fácilmente utilizando sistemas de manejo de versiones.

5. Es un requerimiento de la industria

Si ninguna de las razones anteriores es suficiente para hacerte querer aprender a manejar versiones de proyectos, lamento informarte que tendrás que aprender tarde o temprano, ya que la industria exige que todo desarrollador, ingeniero de despliegue, ingeniero de pruebas, auditor de procesos de desarrollo y cualquier persona involucrada en un proceso de desarrollo de software, sepa manejar al menos un VCS.


Preguntas y respuestas

¿Qué VCS existen?

Los vcs que conozco, son Git, Mercurial y Subversion, probablemente existan muchos más pero creo que con esos 3 encontrarás suficientes ventajas y desventajas como para escoger uno de acuerdo a tus necesidades

¿Cuál me recomiendas?

En lo personal me gusta mucho Git, es ampliamente usado en la industria, es muy fácil de manejar y sobre todo la abstracción que hace de las distintas etapas del proceso de desarrollo realmente te ayudan a mantener tu flujo de trabajo.

¿Cuesta dinero mantener las versiones de software?

Si, y no. Existen empresas como Github, Bitbucket, Google Code que nos permiten alojar nuestros proyectos de manera gratuita, con la única condición de que los repositorios son públicos, lo que significa que cualquiera puede ver nuestro código. Sin embargo estas empresas también tienen planes de pago que permiten mantener repositorios privados por un precio relativamente bajo. Además Github ofrece un plan para estudiantes que incluye muchas ofertas y planes entre ellos un microplan en github donde puedes mantener hasta 5 repositorios privados durante 2 años.

¿Ahora que?

Pues ve e investiga, lee, tómate un café y aprende a manejar versiones de software. Pronto estaré escribiendo más sobre los problemas que comúnmente nos encontraremos al llevar control de versiones a la práctica o lee algunos recursos en internet sobre cómo utilizar algunos sistemas de versiones

git

mercurial

subversion

Espero que aprendan mucho y les escribiré de nuevo algo que considere deberían saber pero que nadie nos dijo.