Así se desarrolla en Smalltalk !?

Recopilado por Germán S. Arduino


De: "Diego Coronel"
Fecha: Vie May 24, 2002 7:12 pm
Asunto: RE: [objetos] Algo MUY interesante!

Aprovecho para contar algo que viene al caso:
Hace unos meses tuve el priviliegio de laburar con AleR en el modelo de un
sistema grande y complejo, el sistema además pertenecía a un domino
desconocido tanto para mi como para Ale: redes de telecomunicaciones.
Tras 2 o 3 meses de reuniones con varias áreas de la empresa, escuchar cosas
que no se entendían e impacientarme por ver que no nos iban a dar los
tiempos, me puse a presionar a Ale para que nos pongamos a definir clases,
objetos, tablas o lo que sea... y como era de esperar, no me daba ni pelota.
Un día a Ale se le ocurrió que ya era momento de arrancar. No sentamos en
una máquina, y en lugar de entrar al Class Browser, abrió un workspace y se
puso a escribir cosas completamente inocentes. No existía ni una sola clase
implementada y Ale me preguntaba algunas cositas funcionales mientras
tipeaba cosa como "argentia @'Córdoba' nodes put: Passport160". Repito no
habian ninguna clase todavía. Al principio tuve miedo, luego empecé a pensar
que Ale estaría tan viciado de ST que debía ver las cosas escritas con esa
sintaxis para poder entenderlas. Pero en realidad fue mucho peor!!!. Después
de escribir 1 o 2 páginas en el workspace de lo que supuestamente un sistema
terminado debía hacer, lo pintó todo y le dió DoIt. No voy a poner lo que
pensé en ese momento, pero obviamente el sistema se pincho (asi lo pensé yo)
al intentar evaluar lo primero que se encontró (creo que era "argentina").
Entonces ahi Ale creó una clase (supongamos Country), luego no encontró a
Córdoba y se creo otra clase State (o algo asi), luego fueron pinchando mas
cosas y el 80% de todo se escribía adentro del debugger!!. Sin adelantarnos
en nada (aramos dijo el mosquito:-) se fueron factorizando las clases,
creando nuevas y agregando métodos. POr ejemplo al cabo de un rato se
conlcuyó que un pais y una provincia tenían varias cosas en común y podían
heredar de una clase GeographicLocation. Pero quiero resaltar que sabiendo
de antemano que terminaríamos creando esas abstraciones, no lo hicimos. Me
refiero a que cualquiera que tiene experiencia en sistemas hubiera abstraido
GeographicLocation primero. Este ejemplo lo pongo porque es fácil de
explicar, pero el sistema tenía muchos casos mas complejos en donde se hizo
lo mismo.
Al cabo de unas 3 horas el sistema andaba, había unos 40 clases en donde
nada estaba al pedo, muchas cosas ya estaban estables porque habían sido
probadas decenas de veces. Realmente increíble, me dieron ganas de incendiar
los libros de UML, patterns, diseño, etc.. ... y porqué no también los de
Smalltalk!
Otra cosa importante es que haciendo eso ambos aprendimos sobre la realidad
que debíamos modelar. Hasta ese día teníamos carpetas llenas de minutas de
reuniones, graficos, planillas que nos daban los usuarios, diseños de BD que
pretendían algunos, etc., etc.. Todo eso sirve para entender, pero no es la
realidad, ni siquiera está viva. El ambiente nos hizo ver a nosotros varias
cosas de la realidad, y no al revés. Yo SIEMPRE laburé al revés, se suponía
que uno debía entender el dominio para luego resolverlo en un sistema. Era
común que yo saltara con ideas tipo "ponele una GeographicLocation!!",
porque yo creía entender de antemano la realidad, cuando en verdad, la
realidad era lo que estaba en el ambiente.

Diego

 


ArSol.biz 2004