Suena a mandamiento pero es una simple necesidad de la realidad, el código no versionado se vuelve exponencialmente difícil de mantener y fácil de estropear. No hablo sólo del backup diario que uno debería hacer para no perderlos datos si falla el disco duro, eso también es importante aunque no lo hago todos los días.</p>

Pero volviendo al versionado, cuando las técnicas de SCM (software configuration management</a>) hacen referencia al código fuente, todas las consideraciones de control son impracticables sin una herramienta más o menos decente de control de versiones.</p>

Increiblemente, aún hoy en día esta simple práctica no es ampliamente usada por los estudiantes de informática. Tampoco tienen una introduccion a herramientas cuando hacen sus cursos básicos de programación y algoritmos. ¿Cuántas veces pasa que perdemos la versión fecha-de-hoy-6?</p>

El problema puede radicar en que en facultad los proyectos se diseñan, se programan y se prueban en una maratón de fin de semana, por lo que no suele ser necesario mantener el código realizado, ni agregarle nuevas funcionalidades o corregir errores. Por lo general los errores de codificación se puntúan y según tu cantidad salvás o perdés el curso y listo eso es todo.</p>

[caption id="" align="alignleft" width="221" caption="Código sin versionar se rompe e inutiliza  como dictámen romano."]<img title="Código sin versionar se rompe más fácilmente" src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/GreenwoodCem12Nov07BrokenStone.jpg/450px-GreenwoodCem12Nov07BrokenStone.jpg" alt="Código sin versionar se rompe más fácilmente" width="221" height="294" /></a>[/caption]

Hay varias Herramientas en la vuelta, no todas igual de buenas o populares:

SubVersioN</a> Copy Modify Merge (client-server)

Visual Source Safe</a> CheckIn CheckOut (preferiría no volverla a usar)

GIT</a> Relativamente nuevo para mí, sistema distribuido.

GeneXus Server</a> Quizás sin tanta robustez histórica como SVN, GXServer utiliza el mismo enfoque que SVN al control de código Genexus sólo que además aplica instancias de Pattern, lo cuál lo lleva al camino de Continuous Integration pero a medias.