Inicié una serie de entrevistas a diferentes personas con las que tengo el gusto de trabajar y que me han enseñado mucho. En este caso, entrevisté a Leandro Caniglia de
Caesar Systems, con quién he trabajado en los últimos años como tester de
PetroVR.
Germán Braun (GB): ¿Puede describir, en pocas palabras, qué es desarrollar software?
Leandro Caniglia (LC): Desarrollar software es capturar conocimiento. Y como ese conocimiento se captura siguiendo una metáfora uniforme (la de tu software), la captura dá rápidamente paso a la creación de nuevo conocimiento.
GB: El desarrollo de software es en sí, un proceso complejo. Sin embargo, ¿dónde radica la mayor complejidad?
LC: La complejidad del software radica en el conflicto que hay entre la tolerancia a fallas que caracteriza a los seres biológicos y la exacerbante precisión de las computadoras, que tiene que ser estricta. A partir de ahí la complejidad suele crecer cuando los programadores escriben código robusto para defenderse de posible errores.
GB: ¿Podría enunciar algunos tips que se deberían tener en cuenta para desarrollar software de calidad?
LC: Las reglas son pocas y sencillas. La dificultad estriba en aplicarlas todas todo el tiempo. Las más importantes son:
i) La partición del trabajo en tareas cortas y bien definidas cuya realización no lleve mas que unas pocas decenas de líneas de código.
ii) La revisión activa de cada change set. En esta práctica el revisor no le sugiere al autor cómo mejorar el código, lo modifica y produce mejor código siempre que pueda y sin importar si el cambio es insignificante o profundo.
iii) Todo change set debe tener al menos un test que ejercite la parte relevante de la tarea. Los tests unitarios debe correr en menos de 100 ms (cada uno).
iv) Integración continua, previo a correr todos los tests unitarios.
v) Testing manual a cargo de un equipo de testers profesionales independiente de los programadores.
vi) Refactoring permanente. Todos tocan todo, incluso lo que anda.
GB: Existen diferentes lenguajes de programación que implementan diferentes paradigmas. ¿Cuál es el lenguaje de programación que utiliza? ¿Por qué?
LC: Smalltalk. Lo utilizo porque es el mejor y en el mercado en el que compite Caesar el que dá ventaja pierde.
GB: ¿Cuál es su opinión sobre el uso de metodología ágiles?
LC: Opino que las metodologías ágiles han iluminado el panorama del desarrollo de software y lo han enriquecido. Hoy en día los buenos equipos de desarrolladores están mejor preparados para gerenciar cualquier tipo de proyecto (de software o de la industria que fuere) que sus clientes más encumbrados.
GB: ¿Es necesario el testing de software? ¿Aporta valor al producto final?
LC: El testing de software es esencial. Todo aquel que quiera producir software debería tener un equipo de testers profesionales de tamaño comparable al de programadores. Para desarrollar software se puede prescindir de todo el mundo, menos de los programadores y los testers.
Sobre Leandro Caniglia
Leandro es
chief technologist en
Caesar Systems. También es fundador y presidente de la
FAST, la Fundación Argentina de Smalltalk.
¡Gracias Leandro!