desarrollo

Control de Versiones Distribuido

Mi anterior apunte sobre contol de versiones tuvo buena aceptación, y recibí comentarios de gente que no es desarrolladora de software, lo que es bueno. Insisto en que el control de versiones es una herramienta que tiene aplicaciones fuera del mundo de la programación. Pero la vez anterior hablamos de sistemas centralizados, como Subversion (SVN) o CVS, los más populares. Pero esta vez les quiero invitar a que prueben los sistemas de control distribuidos, o DCVS por sus siglas en inglés.

Sistemas de Control de Versiones

Image via Wikipedia ¿Usaron alguna vez SCCS? ¿No? ¿Que tal RCS? ¿Tampoco? Bah, son ustedes muy jóvenes. Pero, usan un sistema de control de versiones, ¿verdad? Hoy es raro que un desarrollador no use un sistema de control de versiones como CVS o Subversion (conocido también como SVN). Lo que no me explico es ¡por qué no lo usa todo el mundo! Verán, mucha gente escribe un archivo word, *“aburrido*informe*para*elauditor.

Mantención del Software

Dijkstra se reía de que se hablara de mantención de software, como si el software fuera algo que se deteriora, oxida, o corroe. La verdad es que Dijkstra tiene razón en ese sentido, el software no se puede mantener, porque no es algo que se construye. Toda la metáfora de la construcción del software, que incluye arquitectos, constructures, procesos de construcción, o de que es algo que se fabrica, y por tanto se empaqueta, ensambla, distribuye, es limitante.

¿De que deuda me hablan?

¿Se imaginan tener que agregarle un nuevo dormitorio, y un jacuzzi al baño, a cada departamento de un edificio de 24 pisos, todo durante un fin de semana, y con los inquilinos dentro? Hace unos meses atrás hablé con ex profesor auxiliar de ingeniería de software, en una universidad tradicional. En esa ocasión me mostró un examen, donde se les pedía a los alumnos comentar la afirmación del Chaos Report sobre la alta tasa de fracaso de los proyectos de software.

Cuestión de evolución

“Talk is cheap, show me the code” – Linus Torvalds No hablo mucho de mi trabajo en este blog, es una política personal, pero voy a mencionar que hace unos meses tuve la oportunidad de implementar un servicio de misión crítica, en que todas las componentes están soportadas por productos opensource, desde el sistema operativo (RedHat), el middleware (JBoss) hasta la base de datos (Postgres). Creo que hicimos un buen trabajo con ayuda de nuestros proveedores tecnológicos, y establecimos de pasada las bases de la infraestructura básica de servicios (SOA) para nuestra compañía, la que guiará nuestros futuros desarrollos en los próximos años.

Desarrollar software es como hacer una película

Arte+Técnica+Logística Al igual que en el desarrollo de un filme, cuando construimos software tenemos una etapa de Pre-Producción, donde elaboramos el guión, esto es equivalente a la etapa de análisis de requerimientos y diseño. Luego viene la etapa de producción, que es cuando todo el equipo bajo la guia del director se preocupa de filmar las escenas y secuencias de la película. En desarrollo de software hacemos lo mismo, el jefe de proyecto coordina al equipo de programadores.