domingo, septiembre 27, 2009

Primer día en Lima


Ya son las 21:47, estoy aca, en el lobby del Hotel preparando los módulos que tengo que dar mañana, en el curso de Arquitectura y tomando la bebida digestiva Italo-Argentina por excelencia, exacto, un Fernet... y por raro que suene, no es Branca, es un Fernet de Italia que no recuerdo el nombre, y la verdad que no está tan mal.
Llegué alrededor de las 12 horario local, y en cuanto hice el check-in, de inmediato partí al Museo del Oro, me gustó muchísimo, estuve casi 2 horas recorriendo y escuchando el audio de todo el museo, quien venga a Lima, podría decirle que vale la pena pasar y ver las cosas que se hacian aca antes 500 antes de cristo y hasta los Incas. Obviamente luego de los Incas, 1500 d.c., ya no hay nada, malditos conquistadores! maldita iglesia! fucking reyes!!!! en fin, la verdad que eran una sociedad muy avanzada.
Luego partí para una feria de artesanos en miraflores, otro distrito donde compre un par de regalos para mis dos bombones que me esperan en Bs As, no veo la hora dárselos.
Realmente Lima me impresionó, mucha construcción, avenidas muy bien señalizadas, tambien la vi muy "americanizada" hay más cadenas yankies que en Bs As, desde dunkin donuts, kfs, pizza hut, radio shake, etc, etc... me sentía en Raleigh ;)
Con respecto a la gente, ya lo dije, por default los peruanos me caen muy bien y por ahora tuve una calida recepción, del hotel, mozos, texistas (que manejan tan mal como en Bs As) por ahora va todo de diez, mañana ya se viene el trabajo.

martes, septiembre 22, 2009

Viajando a Lima, Peru

El Domingo 27 de Septiembre estoy viajando a Lima para dar un curso de arquitectura interno de IBM por tres días. Un curso muy muy interesante que ya lo he dado junto con Rodrigo Baraibar en dos ocasiones en Bs As y ahora ya me salieron las alitas para darlo más solo, igualmente lo voy a dar con un arquitecto de Perú, pero creo que va a ser su primera vez. Básicamente el curso cubre todos los puntos de APIT pero con un enfoque más corporativo y con el framework de arquitectura propio de IBM, pero está muy bueno.
Como voy a estar tres días voy a estar dando charlas en universidades de Perú luego del curso, este es el detalle por si hay algún interesado que viva o esté por lima.
  • DIA: Lunes 28 de Setiembre, HORA: 18:30 - 19:30 horas, TEMA:ARQUITECTURA DE SOFTWARE, UNIVERSIDAD: San Martín de Porres
  • DIA: Martes 29 de Setiembre, HORA: 18:30 - 20:30 horas, TEMA: Enfoque IBM hacia SOA y Rational Team Concert, UNIVERSIDAD: UPC
  • DIA: Miercoles, 30 de Setiembre, HORA: 18:30 horas - 19:30 horas, TEMA: SOA (Calculo que voy a hablar de REST), UNIVERSIDAD: San Martín de Porres

Si bien yo quería hablar más de TDD, Ruby o Metodologías Agiles es lo que toco :) ya voy a ver como mechar en las charlas esos temas. Cuando tenga más detalle, dirección, sala, registración que calculo que será libre y gratuita, posteo.

También estoy viendo que hacer el domingo por ahora me recomendaron visitar el museo del oro como algo imperdible, alguna recomendación? Realmente tengo estoy muy entusismado por que Peru me genera muy lindos sentimientos (casí un pais hermano al mio) pero la verdad que conozco poco.

martes, septiembre 01, 2009

Introducción a REST

Hace un par de meses grabé un seminario web sobre REST para los SOA Webminars de IBM, una iniciativa para enseñar SOA en español. La verdad que me olvidé de publicarlo y es en 1 hora, o sea Martes 1 de Septiembre a las 15:00 (GMT-3).

Resumen de la charla:
En los últimos tiempos la simplicidad y portabilidad han tenido un peso importante en las decisiones de arquitectura y es aquí donde REST toma un papel fundamental en la integración de aplicaciones y en las Arquitecturas Orientadas a Servicios. En esta charla se explicarán los conceptos de REST y que ventajas posee a la hora de integrar aplicaciones dentro de una Arquitectura Orientadas a Servicios. Está orientada a Desarrolladores y Arquitectos de Aplicaciones e Integración.

Este es el link directo para participar y tambien para bajar verlo offline:

Aca pueden encontrar otros seminarios.

Los espero y si tienen feedback no duden en postear!

miércoles, agosto 26, 2009

Panel: Frameworks MVC - UBA SIS

El Viernes 28, a las 15hs vamos a estar en la UBA (AULA E24, PABELLÓN I de CIUDAD UNIVERSITARIA) con Esteban Lorenzano, charlando nuevamente de Ruby on Rails y Seaside, esta vez vamos a compartir un panel con otras personas que van a hablar de .NET y Seam. Acá hay mas información del Evento.
La verdad que puede llegar a resultar interesante, sobre todo si se llega entender que es lo mejor que ofrece cada framework y llegar a la conclusión de las buenas prácticas a seguir a la hora de desarrollar Web App y que el MVC no sirve para nada :) jeje, solo para molestar.
Con respecto a Rails, la implementación de MVC tampoco me cierra del todo, creo que la idea de Wicket es un poco más interesante, en fin, veremos que sale de este panel.
La otra duda que tengo es que se entiendo por MVC, pero eso lo veremos discutiendo calculo, yo por lo pronto voy a presentar el modelo de MVC de Rails (bien Struturado) y los principios del framework que me parece que es lo más interesante, seguramente me pelearé con Esteban por el uso o no de Templates (que los banco a bastante) y lo molestaré un poco con lo importante de tener urls RESTful :P
Los espero!

lunes, agosto 24, 2009

Adoptando TDD en una compañia

Luego de casi 6 años de usar TDD como desarrollador y teniendo excelentes resultados en los proyectos que trabajé, decidimos comenzar con la interesante y desafiante idea de propagar el uso de TDD para todos los proyectos de IBM, por supuesto contanto con apoyo ejecutivo y técnico para poder lograrlo. Esto digamos que no tiene ninguna cosa muy complicada, hay que:
  • capacitar
  • guiar y resolver problemas
  • proveer herramientas que faciliten la implementación
  • implementar y medir constantemente (muy importante!!!)
El temita con TDD es que es un cambio de enfoque de como uno viene trabajando y no podes capacitar de la misma manera al Senior que al Junior, y varias cosas más que los que están en el tema sabrán... el concepto clave es que TDD es una técnica de diseño que permite mejorar el diseño de las aplicaciones, mejora la productividad y permite tener menos defectos.
Con lo cual hemos definido 5 puntos que consideramos claves para el éxito de esta iniciativa, y que fueron los siguientes:
  1. Soporte de la gerencia: Partiendo de la base que no es una técnica sencilla de aprender se necesita tener disponibilidad de los profesionales para educarlos.
  2. Ser pacientes: Al comienzo durante la implementación de TDD puede disminuir la productividad del desarrollo, pero hay que saber en tender que seguramente los tiempos de Testing se van a achicar por menor cantidad de defectos, y que luego de 3 meses, la productividad va a mejorar rotundamente.
  3. Educación constante: Profesionales rotan, nunca hay que dejar de educar.
  4. Formar una comunidad: Esto refiere a que luego de la educación e implementación los profesionales puedan conectarse y compartir conocimientos especificos de TDD y se organicen para ayudarse entre si no estructurada a través de Blogs, Wikis, Coding Dojos, etc
  5. Definir y capacitar expertos: Estas personas tendrán la experiencia y los conocimientos de TDD para ayudar a profesionales y proyectos que recien comienzan, guiandolos en su adaptación.
Ya tuvimos el primer curso de TDD de un día completo, la verdad que nos fui muy bien, nos encantó hacerlo y tuvimos muy buen feedback. También tenemos pensado dar este curso 4 o 5 veces más en este año.
Una de las cosas que me encanta de este es el grupo que armamos con otros nerds de aca, Damian Garcia, Marcelo Mendoza, Bernardo Capra (desde Tandil) y Mauro Galvan Rainhart (anti-nerd).
Calculo que en otro post voy a contar un poco como encaramos el curso y obviamente como nos está yendo

jueves, junio 25, 2009

He vuelto, ahora desde Ubuntu 8.10

No estaba muerto, solo un poco ocupado con el trabajo y el poco tiempo libre que tenia se lo dedicaba a tunear este fantástico Sistema Operativo llamado Linux Ubuntu!
Desde el 2000 que intento que Linux sea mi Sistema Operativo (unico y primario) y realmente ahora lo pude lograr, digamos que yo soy un usuario intermedio y cómodo, quiero las cosas un poco servidas pero no me molesta tener que hackear de vez en cuando y con Ubuntu encontré el balance perfecto, afortunadamente toda la plataforma de productos corporativos de IBM funcionan perfecto (Lotus Notes, Sametime, etc) y la plataforma de desarrollo definida por la arquitectura de mi proyecto se banca perfectamente trabajar en Linux o cualquier otro SO, asi que desde Enero de este año, estoy con Linux Ubuntu (primero 8.04 y ahora 8.10). La verdad que es muy robusto y ninguna queja, bah en realidad si una sola y es el sonido, de vez en cuando hay que reiniciar por que el Player de Flash lo cuelga, pero evidentemente es un tema del SO.

Luego del cambio de laptop (pasé de T41 a T61) lo primero que hice es instalarlo, ya voy casi 8 meses y dudo que lo cambie en algún momento, realmente lo dudo muchisimo, y no solo eso sino que junto conmigo 10 nerds más de IBM se pasaron a Linux, lo cual hizo todo más fácil a la hora de resolver problemas, obviamente ya tenemos un wiki/blog/comunidad para facilitar el intercambio.
Voy a listar un par de aplicación que me ayudan bastante:
  • VirtualBox 3.0, lamentablemente tengo que tener un Windows para algunas presentaciones y planillas de calculo que no puedo editar con el Open Office y el PC Suite de Nokia, y tambien sirve para tener diferentes máquinas virtuales de Linux tambien.
  • GNOME DO, la descubrí no hace mucho, es dificil de explicar... pruebenla!
  • Avant Window Navigator, es el típico Dock de Mac para ver las ventanas, no consume recursos y es muy comodo al igual que varias funcionalidades del Compiz.
  • GTK Alternatives, es para configurar visualmente varios parametros de linux, sirve mucho para cuando tenes varias virtuals machine de java y otras nerdeadas.
Bueno, espero que sea un retorno con post más frecuentes!

lunes, marzo 09, 2009

Agile Open 2009

Durante el Viernes y el Sabado pasado estuve participando del Agile Open 09, un evento organizado por la Comunidad Latinoamericana de Metodologías Agiles que me gustó mucho por su dinamismo. Básicamente la idea era que el que quería, el viernes, proponga temas para discutir o presentar durante todo el sábado. Ahi fue donde propuse 3 temas:
  1. TDD y Arquitectura (algo parecido a lo que escribí en este post)
  2. Agile en equipos distribuidos con Rational Team Concert
  3. Metodologías Agiles en la Universidad
Despues la gente votó y esta fue la grilla final de temas.

Como pueden ver hubo temas muy interesantes y la mayoría para discutir filosofando un toque.
Yo el Sábado llegué a las 14, y pude participar solo de dos sesiones, y en una de ellas presenté el tema de TDD y Arquitectura y aca les dejo la presentación, tuve una buena recepción y se dieron lindas discusiones con participantes como Hernan Wilkinson, Abel Armoa (q no encuentro su blog), Jorge Silva, David Canteros y varias personas más que no se su nombre.
La verdad que la organización fue impecable, ojalá pueda seguir particpando de estos eventos, suman mucho.

martes, febrero 24, 2009

Un ingeniero perdido en la formalidad

Si bien el título del post suene negativo, la verdad que nada que ver, el resultado del viaje a Rio IV fue excelente, la verdad que me llevo un muy lindo recuerdo y conocimientos que creo que me van a servir para seguir ayudando a cumplir mi visión.

En pocas palabras, el por que del título, básicamente es buscarle un lado simpático a la sorpresa que me lleve al entender la diferencia entre las carreras de Licenciados e Ingenieros, si bien yo ya entendía que un rol (Ing) estaba más del lado de la industria y el otro (Lic) más en la investigación, realmente me sorprendió la distancia que hay entre ambos.
Hace tiempo que vengo interesado en la investigación, pero me dí cuenta que el tipo de investigación que pude ver de los cursos (principalmente en los últimos dos que tuve que dejar) está muy abstraido de la realidad y es prácticamente un modelo matemático. Yo no puedo juzgar absolutamente nada pero creo que estamos a años luz de poder llevar eso al campo industrial, definitivamente creo que si en algún momento emprendo un doctorado o algún tipo de investigación, definitivamente lo voy a hacer en un campo mucho más aplicado a la industria de lo contrario voy a fracasar.

Sobre los cursos que hice, "Contract-Based Development in Eiffel" y "Stringology", ambos muy diferentes pero me gustaron mucho, con respecto al primero vi un ejemplo claro de investigación aplicada, Meyer realmente es una eminencia en Informática y ha creado un muy lindo lenguaje que recomiendo al menos mirar, creo que los conceptos de DbC son un excelente complemento a TDD a la hora de especificar y asegurar el funcionamiento del software. El segundo, fue dado excelentemente por Yoan Pinzon, un doctor Colombiano que juro que en mi vida un profesor me pudo tener enganchado el 100x100 de las clases, tuvo una didactica increible. Aunque los temas fueron menos aplicables a mi realidad, básicamente hizo una reseña histórica de los diferentes algoritmos de búsqueda de Strings exacto y aproximado.

Bueno, eso es todo, creo que si puedo y los cursos me llaman la atención, voy a volver a la hermosa ciudad de Rio IV, aparte hubo muy buena onda de la gente que iba, me crucé con gente muy copada de Cba, E. Rios, Corrientes, San Juan y Uruguay que en algún momento nos volveremos a ver.

domingo, febrero 15, 2009

Partiendo para Rio Cuarto


En 30 minutos estoy saliendo para Rio Cuarto, Pcia. de Córdoba para particpar de la 16ª Escuela de Verano de Ciencias Informáticas, de la Universidad de Rio Cuarto junto a Nico Passerini. Creo que va a ser una muy linda experiencia y espero aprovechar de escuchar por 5 días a Mayer, que a proposito tiene un Ingles medio heavy (es Francés) el otro día me costó un poco, pero no se si fue por el mal sonido.
En fin, es una semana bastante a full donde se van a dar temas como:
Si, ya se, la imagen que puse no tiene nada que ver, pero la habia visto hace mucho y la quería poner. Estoy seguro que me voy a mantenerme alejado del Fernet... siempre lo digo el día despues de tomar, ayer me quedé hasta las 6AM jugando a la Play y compartiendo la bebida noble con amigos.

viernes, febrero 13, 2009

Por que existen los Arquitectos de Software?

Luego de dos semanas de mucho trabajo (por suerte lindo) llegué a una conclusión hablando con un colega....

"Yo creo que el rol del arquitecto se creo por la ineptitud de los PMs que dejaron de interesarse en los Sistemas (Solución que están construyendo) y el overhead metodológico causado por la poca confianza entre el cliente y el team del proyecto.... creo que si las metodologías agiles toman fuerza, los dos roles se pueden volver a unificar al mejor estilo Brooks"

ehhhhh dicho :) perdón pero estoy quemado

jueves, febrero 05, 2009

Meyer Confirmado

Este es el abstract
Teaching programming faces a host of challenges, due in particular to the unprecedented variety of student backgrounds and to the demands of the IT industry. Techniques that worked well in the seventies do not scale up to today's context. The "concepts or skills?" debate is more relevant than ever, especially in the ever more globalized world of software development.

For the past 6 years, we have taught introductory programming at ETH, based on an "outside-in" approach that makes it possible to introduce the reality of large software while emphasizing the principles of sound software development. This approach has resulted
in a forthcoming textbook ("Touch of Class: An Introduction to Programming Well
With Objects and Contracts", Springer-Verlag, May 2009). I will present the result of our experience, including metrics that we have systematically collected along the way, and draw conclusions regarding how to teach programming today. I will argue the task consists of
teaching twenty-six seminal concepts, and will explore one of them in depth.

lunes, enero 19, 2009

Bertrand Meyer en la Argentina!!!!!

Si, como leen, Bertrand alias "Design by Contract" o "Eiffel" Meyer estará en Febrero por la Argentina, primero paseando por Buenos Aires, donde estamos trando que de una conferencia en la UTN y luego en Rio Cuarto (Cba.) para participar de la 16ª Escuela de Verano de Ciencias Informáticas.
Realmente no tengo más que decir, sino esperar con muchas ansias para que se defina la fecha (una vez que la facu abra) y repasar un poco de Eiffel que justo estabamos hablando en el laburo de comenzar a verlo, sin saber que venía Meyer... realmente es una señal.

lunes, diciembre 15, 2008

Cerrando el año - Lo bueno

Estamos terminando el año y si bien no me gustan los balances pero tengo el blog un poco descuidado, voy a compartir mis buenos y malos momentos resumidamente.
Primero las buenas:
  • Como Padre este año siento que crecí muchísimo, ya Andrés comenzó a depender mucho más de mi y yo logre pasar muchos de los miedos de que la madre no esté. Ya dice que es hincha de All Boys (aloy), pide jugar el Futbol (ubol), juega a la play (apei), me llama a la noche cuando no se puede dormir (bue, eso no es tan bueno). Creo que lo que queda ahora en más va a ser genial, todavía tengo mucho por mejorar pero creo que estoy mucho mejor que antes.
  • Tuve mi primera release como Arquitecto formalmente nombrado y se pudo cumplir con el objetivo de la versión que llevamos a producción. Realmente no fue nada fácil, mucha política, gente nueva, revisiones de arquitecturas, presentaciones a más de 50 personas de todo el mundo por teléfono, desarrolladores alrededor del mundo, etc, etc, etc a veces es muy dificil ser arquitecto y buscar el tiempo para bajar a tierra y escribirse un par de test cases, pero de vez en cuando me dí el lujo de hacerlo :)
  • Ruby2Real, este año me pude dar el lujo de llevar a la realidad a Ruby, hicimos varias cosas en IBM y ya forma parte de la estrategia como para comenzar a vender servicios en dicha plataforma. Junto con Damian Garcia y Leandro Godon armamos planes de capacitación, capacitamos, creamos dos aplicaciones internas que todavía no se usan y un pequeño componente de autenticación interno que ya tiene varios downloads. La verdad que formar parte de un equipo de gente tan grosa como hay en IBM es genial.
  • Uno de los aspectos que más me involucré este año fue con el aprendizaje, evangelización e implementación de las metodologías ágiles. Ya saben que hace años que vengo molestando con el tema. Ya el año pasado tuve algunas experiencias dando cursos y implementandolas en sistemas pequeños internos. Pero este año, en el proyecto que estoy como Arquitecto, pude ir un paso más in convencer al Cliente de utilizarlas, ahora estamos a puntos de darle un moñito y trabajando muy duro para tener todo listo, ya voy a postear sobre esto.
  • Con respecto a las charlas que di/escuché que había propuesto a principio de año, en balance más del 70% se hicieron realidad, escuché charlas de rails, javascript, grails, etc Y tambien di charlas de continuations, ruby, rails, tdd, arquitectura, etc. Obviamente faltaron temas como earlang, SOA que ya me viene irritando un poco, pero bue.
  • Creo que APIT está impecable, se mejoró mucho en varios aspectos de la materia, los últimos aportes fueron de lo mejor, Esteban Lorenzano y Santiago Blanco, creo que si seguimos reclutando los cereblos de los alumnos van a explotar. Creo que en cuanto a transmitir los conceptos de Arquitectura yo tambien he mejorado, este año también di un curso de tres días muy importante de la carrera de Arquitectos en IBM y obviamente me sirve mucho para hacer sinergia con lo que damos en la UTN.
  • Comencé a tratar de stress!!! Creo que eso me permitió llegar vivo a fin de año :) Igualmente no estoy del todo bien, sigo el tratamiento que por sierto todavía tengo que llamar al doctor para coordinar la proxima sesión del MDS. Pero en conclusión pude seguir conociéndo, entender como funciona el stress (y muchas veces afectando mi salud) y pude tomar acción para evitar la parte negativa de este, haciendo deporte, saliendo más con mecha, etc, etc.
Creo que esto es todo por ahora, en breve se viene el post de lo malo :P

sábado, noviembre 29, 2008

Otro cuatrimestre, otro parcial

Como todos los cuatrimestres, aca está el parcial que tomamos en APIT, fue algo parecido al parcial del cuatrimestre pasado pero esta vez, utilizamos un BPM (simplificado) como base para tomar las decisiones arquitectónicas.

Obviamente el objetivo de este parcial es poder hacer pensar a los estudiantes como un arquitecto sin tener que estudiar de memoria, cosa que detesto. Está claro que fue complicado ya que con una sola clase de SOA e Integración, el BPM es uno de los conceptos más complicados.
Como pueden ver pudimos lograr unificar todos las unidades de la materia, el único tema que quedó afuera fueron las metodolgías que realmente son un punto fundamental en la materia.
Asi que comentearios, sugerencias?

domingo, octubre 19, 2008

TDD desde una perspectiva arquitectural

La semana pasada di una conferencia por teléfono para todos los arquitectos que trabajan para proyectos internos de IBM y que con planes de utilizar metodologías ágile y/o ya están utilizando. Fue una linda y desafiante experiencia debido a que había gente de muchas partes del mundo (USA, Francia, India, Sudamerica, etc), nunca había dado una charla técnica en inglés (sacando las presentaciones de arquitectura de la aplicación) y yo pongo un 4, creo que aprobé, pero tengo mucho que mejorar. Independientemente de esto, creo que lo más interesante que quiero comentar en el post es sobre las influencias que tiene TDD en lo arquitectural, esto es el resultado a una pequeña investigación que vengo haciendo para APIT sobre Arquitecturas y Metodologías Agiles. El contenido básicamente fue el siguiente.

Facts acerca de TDD
  • TDD se compone de, Unit Test, Test Automation, Test First y Enfoque iterativo con refactoring
  • TDD es una técnica de diseño y es utilizada por Desarrolladores (Código).
  • TDD incrementa la calidad en el código facilitando el cambio en el software
  • TDD reduce defectos y permite tener un testeo de regresion constante
  • El manejo de dependencias es la parte más dificil de TDD
Requerimientos no funcionales impactados por TDD
Como siempre digo, las decisiones arquitecturales habilitan los atributos de calidad, pero obviamente no siempre los garantizan, hay otros aspectos y decisiones que entran en juego y el arquitecto no siempre puede manejar. Pero inevitablemente, la Arquitectura es la principal responsable de garantizarlos, y como arquitectos debemos buscar las formas, y TDD es una de ellas, con lo cual considero que TDD permite lograr los siguientes atributos de calidad:
Maintainability: Siguiendo las guías de Feathers, primero haciendo fallar el test case y luego corregirlo, la mantenibilidad se vuelve un detalle, lo mismo pasa con lo simple que queda el código y con la no necesidad de perder tiempo en un debugger. No nos olvidemos del regression test aca.
Extensibility / Modifiability: Esto es básico, como excelente técnica de diseño, al tiempo de aplicarla la productividad aumenta y el código queda mucho mas simple.
Reliability: Tiene que ver con la robustez en lo que respecta a las reestructuraciones o cambios en la arquitectura, un codigo que se construyo utilizando TDD, difícilmente sea complicado de modificar a cambios inesperados
Geographic (including Localization): TDD es una excelente técnica de comunicación, para equipos distribuidos es fundamental, tener bien claro y definido cual es el comportamiento esperado, no se paga con mastercard
Time: Ya hablé de la Productividad que trae aparejada el Test First, aca hay un paper que habla de los estudios que aumenta la productividad, hasta que lo leí fue solo un feeling mio y personal, ahora se ve que está probado.

Decisiones Arquitectónicas para Soportar TDD
Ahora, como (re) diseñamos nuestra arquitectura para soportar el uso de TDD, bueno, lo encaré desde el punto de vista de "Tácticas y Principios de Diseño" y "Estilos Arquitectónicos y Diseño Estratégico":
Tácticas y Principios de Diseño
  • Separation of Concerns.
    Una correcta separación de módulos, permite un mejor manejo de la complejidad y también permite el reuso del lado de los Test Cases (que no es poco)
  • Separación de la interface de la implementación.
    Hace falta explicar esto? Bueno, principalmente es para el manejo de dependencias y el trabajo en paralelo

  • Design by Contract
    Dos técnicas complementarias en el bajo nivel, desde un punto de vista arquitectural, definir los pre/post conditions entre módulos es básico
  • Informacion hiding
    Previene cambios no deseados
  • Prevent Ripple Effects
    Con 8 tipos de dependencias entre módulos, nos ayuda a no tener dependencias ocultas entre módulos, esto es muy importante, muchas veces hay modulos que dependen en variables de contexto y está oculta, TDD ayuda a evitarlo.
Estilos Arquitectónicos y Diseño Estratégico
Mas allá de cosas específicas, hay estilos arquitectónicos que ayudan muchísimo al uso de TDD en aplicaciones empresariales, estos son algunos:
  • Inversion of Control/Dependency Injection
    Aca no hay nada que discutir, por excelencia permite permite el uso de TDD, sumado a esto la separación de interface de la implementación.
  • Hierarchical Layers
    Estilo super conocido, con un modelo sencillo de dependencias, permite el coverage de una layer solo mockeando una layer inferior. Obviamente este patrón tiene cosas malas aparejadas, como la dificultad por encontrar las abstracciones y la modificabilidad.
  • Domain Driven Design
    Un estilo muy interesante para dominios complejos, se lleva muy bien con el Dependency Injections y la Iteratividad.
  • Transaction Scripts
    Modelo sencillo, en donde se puede lograr una completa de cada servicios a testear.
Acá estuve hablando como 30 minutos, es un poco difícil plasmarlo en un post, pero obviamente es la parte más interesante de la charla (al menos para mi)

Quejas de otros profesionales para implementar TDD y como solucionarla
No siempre es fácil convencer el uso del TDD, hay muchas quejas que hay que afrontar, aca puse las que fui recolectando, en algún otro post voy a poner lo que dije verbalmente, así que por ahora se lo dejo a uds para que piensen :)
Project Managers
  • Toma mucho tiempo para escribir test y termina impactando en la productividad.
  • Me siento mal por dejar afuera del proyecto a Testers y gente de QA
Architects
  • No me importa TDD, es una técnica de bajo nivel para programadores
  • No es necesario to test drive el código, la arquitectura cubre todas las posibilidades
Application Developers
  • Toma mucho tiempo en correr los test cases
  • No es mi trabajo testear mi código
  • Pero compila!
  • A mi me pagan por escribir código, no para escribir tests
  • Las dependencias son difíciles de manejar y toman mucho tiempo
Esto es todo, espero que les guste y espero feedback! realmente quiero escribir un paper con esto

jueves, octubre 02, 2008

Visión Visión Visión

Y si, según mechi cada 3 palabras que digo, menciono la palabra "visión"4 veces, al igual que "abstracción" o sus derivadas. En fin, son dos palabras que me sientan muy bien y creo que son básicas en los dos laburos que más me gusta hacer, "Liderar" y "Arquitecturar".
Hace un tiempo en IBM, vengo cumpliendo un nuevo rol de liderazgo desde un aspecto técnico como líder de la práctica Web (Java, .NET, Notes, etc) con implicancias en todos los proyectos que usen dichas tecnologías, y esta semana estoy teniendo una serie de reuniones con todos los profesionales, son como 80. Lo que quiero compartir en este Blog es la visión que tengo sobre la organización que quiero armar. Está claro que se aceptan críticas, insultos, etc...
  • Quiero convertir a Argentina en un Centro de Excelencia para IBM de todo el mundo en lo que el desarrollo Web respecta. Le explico el contexto, IBM tiene 8 centros de desarrollo globales, uno de ellos es Argentina, y un poco la idea es de que cada uno se especialice en una o más plataformas como para que cualquier IBM mundial (USA, España, Francia, etc) pueda requerir servicios de desarrollo de software y poder particionar de acuerdo a la especialidad. Con lo cual si Argentina se especializa en Web, cualquier proyecto que IBM (en todo el mundo) venda a sus clientes, Argentina sería el principal referente, esto posibilidad tener una estructura paralela de investigación, innovación y generación de conocimientos financiada por IBM Mundial que podría ser más que interesaante. Osea un area de investigación para la generación de metodologías, frameworks, componentes, buenas prácticas, etc que permitirían diferenciarse en calidad y en productividad. Está claro que Argentina está muy bien parado en cuando a skills en RIA (JS/AJAX o FLEX) creo que por ahi debería venir la mano.
  • Quiero formar una "Organización que Aprende", obviamente focalizándome en los profesionales que la componen. No quiero hacer un post sobre esto, pero realmente estoy muy alineado con la idea de Peter Sengue, y sus 5 disciplinas. Sobre todo en el desarrollo de software que es una actividad que depende 80&% en la gente y 20 en vaya a saber quien. No concibo pensar en una organización con gente que realice tareas automáticas, prefiero tener menos personas y más programas. La capacidad y los procesos de selección de personal son claves, y realmente no importa el volumen sino la calidad de los profesionales.
  • Quiero fomentar el Ease @ Work. La idea es buscar un ambiente confortable de trabajo para generar los resultados deseados. No quiero perjuicios, quiero que los profesionales se sientan libres de hablar, sin perjuicios, sin pensar en el "que diran" cuando expresamos nuestras ideas. Es fundamental intentar concebir un ambiente de trabajo que fomente la creatividad, soy un apasionado de eso, cuando uno se siente confortable, sabiendo que solo se tiene que preocupar de su trabajo y los objetivos del equipo las posibilidades de fracasos son mínimas, como así tambien la capacidad de innovar es infita. Este es un concepto que vengo ideando y fue llevado a la practiva por Kent Beck, please google it.
  • Sigo insistiendo, el diferenciador de Argentina es la Calidad, y no el Costo. No podemos depender en la economía con picos tan bajos cada 10 años. Lamentablemente es asi, el costo es una variable ajena al software y la tenemos que dejar fluctuar, nunca depender del costo. Tenemos que focalizarnos en vender soluciones/servicios que dependan totalmente en la calidad, y que generen un valor agregado al negocio. Si logramos brindar servicios con calidad, vamos a ser siempre una potencia en el desarrollo de software, pero si solo pensamos en la paridad cambiaria, es muy "cortoplacista", hay que entender que por más que pensemos en el cambio, la inflación termina impactando tambien.
  • Y por último, el 5to item de visión que tengo para mi organización es en la innovación constante. La innovación a esta altura no se discute, obviamente esto es un cambio de mentalidad y dejar de pensar un poco en el corto plazo, pero esta claro que los proyectos son finitos y siempre se piensa a corto plazo, y es por eso que quiero pensar en formas de fomentar la innovación y que eso sirva como retroalimentación a los proyectos.
En fin, esa es la visión que quiero para la organización que estoy liderando... todavía estoy en proceso de comunicación y delineamiento de como llegar a cumplirla, pero estoy seguro que voy a ser muy feliz cuando lo haga y muchas personas van a verse beneficiadas.

lunes, septiembre 29, 2008

Empezando mal...

Me parece que tengo que tomarme unas vacaciones, relato los hechos...
1) Salgo de casa 7:45 rumbo al garaje, obvio que me mojo.... y me doy cuenta que me faltaron los papeles del auto, vuelvo, los agarro... tipo precavido (y mojado) tomo un paraguas que no tenía.
2) Salgo, no llueve más.... me subo al auto, y escucho quejas José (del estacionamiento) que la lluvia es todo culpa mía, que como lavo el auto cada tres meses siempre llueve, y si... lo lavé el sábado y era lógico que llueva, yo me lo busqué.
3) El tema es que salgo, en plaza serrano escucho un ruido feo así que vuelvo (exactamente di una vuelta manzana) y me voy al mecánico a 4 cuadras de casa, uno nuevo recomendado por el mismo José que se me quejó minutos atrás, y lo dejo ahí, no hay peor sensación que la que te deja un nuevo mecánico, por lo menos esta vez viene recomendado
4) Vuelvo cabizbajo para casa, mitad del camino y se vuelve a largar a llover (esta vez mal) y obvio el paraguas había quedado en el auto.

En fin, para que me levanté!!!! espero que la semana cambie, quien lea este post le pido por favor que me trate bien.

domingo, septiembre 28, 2008

Salimos el Jueves ? - PAMPA YAKUZA


El jueves pasado finalmente pude ir al último recital del ciclo, "Salimos el Jueves?" de la gran banda Pampa Yakuza. Realmente no puedo explicar las sensaciones que tuve en este recital 1 hora y media, fue realmente increible, si bien no puedo tener una opinión objetiva desde el punto de vista "musical" aunque podría decir que cada nota, de cada instrumento que salió desde el escenario lo pude sentir, como toda la gente (bastante) que estaba ahí.
Si tendría que decir cuales fueron los mejores mis mejores 5 recitales de mi vida, indiscutidamente los dos recitales de pampa están ahí, no hay discusión... los que faltan creo que sería uno de Los Fabulosos y Los Cafres gratuito que fue en Pampa y Figueroa Alcorta, en los Bs As Vivo que hacía chupete un par de años atrás o cuando Bersuit hizo su presentación de Libertinaje en mi querido club de Floresta (recuerdo atener la barra del recital con 17 años...) y uno de los piojos en el Pepsi del 06' creo.
Si realmente tienen ganas de escuchar una banda nueva, yo se las recomiendo... desde mi punto de vista tiene una onda may parecida a Bersuit, sumandole Reggae y bastante percusión es una banda puramente Argentina 100 x 100, se los aseguro no los va a desfraudar. El disco Orillas es el que más me gusta y el tema "Contra las cuerdas", con el que abrieron el jueves la rompe y podría decir que es el que más me gusta.
Aca les dejo un par de links para que escuchen temas, fotos, etc:
http://www.purevolume.com/pampayakuza
http://www.myspace.com/pampayakuza
http://www.fotolog.com/pampayakuza
http://es.youtube.com/pampayakuzavideos

lunes, septiembre 01, 2008

Esto es poesia - FEST Fluent Assertions Module

Si bien, cada día que me voy acercando a Ruby, Java me da más bronca, todavía creo mantener cierta objetividad como para ver cosas copadas que se van logrando en Java, y este es el caso de FEST Fluent Assertions Module, si bien no le llega ni a los talones a BDD, creo que se merecen un aplauso:

Ya lo había visto hace unos años, gracias a Java Lobby y me gustó bastante. Ahora en ASIT ya hace unos meses Gaby Benmergui, uno de mis nerds preferidos de IBM lo está utilizándolo con TestNG, espero ver sus frutos.

domingo, agosto 31, 2008

Me casé con una nerd - Segunda Entrega

Si bien tengo muchos hechos que lo demuestran, voy entregando de a poco....
Este es un chat que tenía por el Sametime con Mecha, obviamente junto con otros 20 y una call de por medio, aca se la ve enojada por que no le contesto o no la endiendo (vaya a saber que).

Eso si, se nota que está estudiando para Sistemas Operativos :)