Monday, May 19, 2008

Por qué no es lo mismo una aplicación "de escuela" que una aplicación "del mundo real" - II

Además de lo ya comentado en la primera parte de este post, hay otro problema que afecta gravemente a la utilidad de lo que aprendemos en la escuela en el momento de incorporarnos al "mundo real" de la programación: las herramientas.

Utilizar solamente un compilador y un IDE para desarrollar una aplicación actualmente es como utilizar pico y pala para excavar los cimientos de un edificio, ignorando que existen máquinas escavadoras que facilitan el trabajo de los obreros y garantizan un mejor resultado en menos tiempo.

Control de versiones (CVS), gestión de tareas (Issue tracking, bug tracking, etc), pruebas unitarias, generación automática de los productos finales, integración continua, generación de documentación mediante wiki, son todas herramientas imprescindibles para un desarrollador profesional de las cuales nunca oí hablar.

Esta falta de preparación a nivel escolar trae como consecuencia que en muchos lugares estas herramientas sean consideradas innecesarias, o que mucho programadores no se sientan cómodos con ellas y por lo tanto no sean productivos.

A todos esos que como yo no recibieron una formación adecuada los invito a que sufran el proceso de aprendizaje. Cuesta acostumbrarse a utilizar todas estas herramientas que al principio parece que aumentan la carga de trabajo, pero créanme, cuando el proyecto entra en fases más avanzadas se aprecian las ventajas de haber hecho el esfuerzo.

Cuando aparece un bug "misterioso", ya no es tan misterioso cuando se puede comparar la versión que introdujo el bug con la versión anterior, sobre todo si cada revisión del código incluye sólo unos pocos cambios relacionados con una única tarea del sistema de administración de tareas.

Cuando se entrega más de una versión del mismo producto y aparece un bug en una de las versiones, ya no hay que decirle al cliente: "tienes que actualizar a la última versión porque no tenemos el código de la versión que tienes".

Cuando al iniciar el desarrollo de una aplicación se valoraron varias alternativas y se discutió muchísimo y al final se tomaron decisiones, no se pasará nuevamente por todas esas discusiones porque cuando alguien pregunte "por qué no se hizo así..." le podemos decir: mira ESTA página de la Wiki.

Cuando se han ocurrido buenas ideas que ha sido necesario posponer, no quedarán en el olvido, sino que sólo tendrás que ir al Issue Manager y ver las tareas pendientes con baja prioridad.

Y cuando alguien pregunta: ¿cuánto falta para terminar esto? no hay que mentirle ni inventar nada, sólo vas al Issue Manager y miras cuantas tareas faltan por completar, e incluso podrías discutir qué características dejar fuera para terminar antes sobre una base concreta, y no en el pasillo.

No comments: