lunes, 3 de marzo de 2008

Smalltalk vs. la ignorancia


Cuando era niño jugaba una versión del Trivia (juego de mesa estilo parchís, pero con preguntas y respuestas) que tenía una particularidad: si nadie sabía la respuesta, avanzaba en el tablero una ficha, normalmente negra, apodada “la ignorancia”. Yo odiaba que esa ficha llegara antes que nosotros, me sentía un tonto que no sabía nada.
Bueno, hace un par de semanas ocurrió un episodio que me hizo recordar esa etapa de mi vida, quisiera compartirlas con ustedes:

En una de sus charlas de negocio, uno de mis socios quedó consternado por una de las preguntas que le hizo uno de los socios de la empresa con la que se habría la posibilidad de asociarnos.
La charla fue más o menos como se había planificado, hasta ese momento: se presentó de una forma más bien poco profunda (así estaba pensada) nuestra forma de trabajar y nuestras tecnologías preferidas, así como las ventajas que veíamos, al menos para empresas medianas (pues creemos que las empresas grandes tienen compromisos -no fundados en razones tecnológicas, la mayoría de las veces-, que les impiden moverse en diferentes direcciones a las establecidas por lo que llamamos “el mainstream”, la corriente principal, la moda.
Volviendo al tema, la charla iba mas o menos bien, hasta que uno de los presentes interrumpió a mi socio y sin más soltó la pregunta: “¿Además de las ventajas de productividad, por qué deberíamos ofrecerle al Banco Galicia una solución en Smalltalk y Seaside, en lugar de hacerlo en .Net?”. Mi socio se quedó con la boca abierta. Después de todo, la charla había empezado aclarando que veíamos nuestra solución más bien para empresas medianas, y el Banco Galicia claramente no entra en esa escala.
En consecuencia, mi socio no tuvo una respuesta satisfactoria (ni ninguna respuesta, bah).
Y no es que no tengamos una, simplemente no queríamos darla: nos propusimos desde el primer día no defender una tecnología haciendo comparaciones con otras, sino a través de la ponderación de sus propias cualidades. Creemos que con eso alcanza para convencer a aquellos que busquen realmente una solución viable para su negocio.
Bien, pese a eso, yo me quedé con una espina clavada... creo que hay muy buenas razones para que un banco (El Galicia o cualquiera) pueda escoger una solución basada en Smalltalk para su negocio, voy a exponer las primeras tres que se me vienen a la mente:

  1. El principal propósito de Smalltalk es la simulación del mundo real. Es un ambiente donde el modelado de sistemas sumamente complejos se hace mucho más fácil que en cualquier otro. No es que en otros lenguajes u otras formas de ver el desarrollo de software no lo permita, es simplemente que en Smalltalk es mas sencillo, mas “natural”.
  2. Programar en Smalltalk es altamente productivo. Puedo demostrarlo en cualquier momento, pero detenerme en este detalle sería perder el foco del post (una búsqueda en google de “smalltalk productivity” arrojará literalmente miles de resultados. Cualquier negocio (bancario o de cualquier tipo) puede beneficiarse de esto. 
  3. Smalltalk se adapta con facilidad a los cambios constantes. Los sistemas bancarios son particularmente dinámicos y requieren adaptaciones frecuentemente, debido a cambios en la legislación (en nuestro país esto es cosa de todos los días), pero también a la adaptación a un mercado altamente competitivo. 

Sin embargo, y pese a la cantidad de cualidades y casos de éxito que hay, siempre existen los que se niegan a considerar siquiera la posibilidad de utilizar Smalltalk o cualquier otro lenguaje dinámico, siempre con las mismas excusas:

Soporte
Es un clásico de las empresas grandes, siempre dicen “vamos a ir con la tecnología tal, porque con ella tengo soporte y con la que ustedes proponen no”.
Bien, sobre esto... me genera bastante mal humor, siempre que lo dicen.
Una plataforma que cambia cada dos o tres años, y te fuerza a migrar cada vez a su nueva “solución”, no es soporte de calidad.
Una plataforma que crea algo totalmente distinto cada dos o tres años, y te fuerza a cambiar tu arquitectura para adaptarse a la nueva cosa, no es soporte de calidad.
Una plataforma donde los que te atienden son empleados de un callcenter que tienen un manual de instrucciones y no los creadores de la misma, no es soporte de calidad. Si encima tiene el soporte tercerizado en el tercer mundo (donde vivimos) y el soporte “de calidad” esta en el primero, es aún peor.
Productividad
Se sostiene una y otra vez que soluciones pre-hechas (tipo ensamblaje de componentes, etc.) permite alcanzar mejor productividad en los proyectos.
Psé... ni siquiera vale la pena detenerse aquí. Ya se sabe lo que pasa con las soluciones pre-hechas: no están realmente pensadas para el negocio que las requiere, sino para casos generales. Los componentes son caros y además tienen el código cerrado, por lo que entran en el ciclo de soporte lamentable mencionado en el punto 1.
Además, sostener que Smalltalk no es productivo es simplemente no tener idea de lo que se habla.
Falta de desarrolladores
Se sostiene que “todos programan Java o .Net, no hay programadores en el mercado para realizar un desarrollo que no se haga con una de estas plataformas”.
Este es un punto altamente cuestionable, sobre todo en Argentina, donde todas las carreras serias tienen formación en programación orientada a objetos y en Smalltalk.

¿Quien utiliza Smalltalk?
Por supuesto, los “casos de éxito” son importantes: nadie quiere arriesgarse a utilizar una herramienta sin que sea plenamente probada, y si bien es cuestionable en determinados ámbitos, es cierto que no se puede pedir a ningún negocio que tome un riesgo si no tiene una buena razón para hacerlo. Afortunadamente, hay empresas de primer linea mundial (y nacional) que utilizan Smalltalk para sus soluciones... y lo que es más importante, muchas de ellas lo hacen desde hace muchos años. Las siguientes empresas las encontré haciendo una investigación de 5’ con google, no son las únicas ni mucho menos, pero bastan como ejemplo: JPMorgan, Telecom, Repsol-YPF, Texas Instruments, Mercap SRL, Merrill Lynch, Swiss National Bank, y muchos más....


De cualquier forma, me quedó picando el tema y en futuros posts pienso hablar de cómo lograr calidad en el software usando Smalltalk (Squeak, en particular)

2 comentarios:

JuanjoE dijo...

A propósito de este tema, el otro día surgió otro tema que necesitaría un poco más de investigación, pero tiro el pensamiento.
Sería muy bueno tener una idea de la evolución de desarrolladores de distintas tecnologías.
hace 15 años es muy probable que el % más alto haya sido Cobol, hoy, es probable que sea Java. Lo que me gustaría saber es la participación de ST a lo largo del tiempo. No se por qué tengo la sensación de que el porcentaje debe ser bastante parejo.
Bueno, haría falta obtener la info...

martin dijo...

A la lista de Empresas e Instituciones que han realizado Desarrollos Exitosos con SamllTalk agrego uno:
- Gobierno de la Ciudad de Buenos Aires.

Saludos
Martín Díaz Cortez