6/05/2009

Demostrando la utilidad de los mashups

No suelo hablar mucho de "mashups" en este blog, aunque es la actividad principal de la empresa en la que trabajo. Pero esta vez sí quería dedicar un artículo a una utilidad concreta de los mashups, la de las aplicaciones ad hoc.

Antes de nada, para los neófitos, un mashup podría definirse como una combinación de elementos visuales o de datos que crean una aplicación que se ve enriquecida por esa unión. Vamos, que 1+1 = 3. Los ejemplos clásicos, tipo "Google Maps + datos sobre crimen en Chicago = aplicación visual que me ayuda a ver qué zonas he de evitar a ciertas horas de la noche" han dejado paso a multitud de ideas muy útiles sobre para qué sirven los mashups (hasta ya hay un libro sobre "patrones de mashup" aunque la verdad es que de patrones tienen poco, no dejan de ser casos de uso donde un mashup tiene sentido y, personalmente, los podría resumir en tres o cuatro casos; aún así, lo que tiene de bueno este libro es la cantidad de ejemplos reales y no tan reales que muestra, está muy currado en esa parte).

En general, en mi empresa nos centramos en aplicaciones empresariales que utilizan mashups, y donde nos encontramos con accesos a muchas fuentes, con combinaciones muy complejas, en arquitecturas diversas (desde SOA hasta Web 2.0, pasando por entornos ETL).

Pero este artículo lo dedico al otro mundo de los mashups, del que se habla más, pero que no tengo claro que se esté implantando como se espera. Es el mundo de la generación rápida y casi espontánea de aplicaciones que toman datos de diferentes sitios para generar rápidamente información que me es útil a mí o a mi departamento, y para lo que no puedo esperar meses a que sistemas (o mi amigo Pepe que es un informático bueno bueno ;) ) me lo solucione. O yo o nadie.

Esto es algo que he hecho en algunas ocasiones, y quería contar aquí mis experiencias. No meteré ningún dato "comercial", pero sí la facilidad/dificultad que me llevó cada mashup.


Mashup #1: Automatización de Búsqueda de Apartamentos

Cuando hace más de dos años decidimos ir a vivir a Palo Alto, California, lo primero de todo era buscar un apartamento en un sitio con un dinamismo extremo. Hoy sale una oferta de apartamento, y antes de que quieras darte cuenta, cuando llamas ya está pillado.

Así que lo que hice fue utilizar una herramienta de automatización web que tenemos para ir a craigslist, el sitio de búsqueda de pisos (y de cualquier cosa) por antonomasia en esa zona de Estados Unidos para automatizar una búsqueda concreta sobre la fuente web, y generar un "feed" de información que me avisase de cuándo hay alguna oferta que me mereciera la pena por situación, tamaño del apartamento y precio.

Tiempo requerido: me llevó, si no recuerdo mal, unas cuatro, cinco horas crear la aplicación, generar el feed y planificar la tarea (en aquella época no teníamos planificador de tareas, así que utilicé el de windows XP). Resultado: saber cada hora "qué había de nuevo".



Mashup #2: Gestión de Asignación Técnica de Cuentas

Uno de mis roles como responsable de preventa es el tener información actualizada de las cuentas de cada Preventa (Gerente Técnico de Cuentas). La mayor parte de esta información se puede encontrar en nuestro CRM (Salesforce.com), pero:

1. Mi empresa está en tres regiones diferentes (America y Asia Pacífico, EMEA, Iberia y Latinoamérica), por lo que tengo que acceder tres veces a Salesforce. Un rollo, vamos.
2. Salesforce.com no me da información sobre preventa, por lo que necesito tener una lista interna en mi portátil, que se desactualiza cada dos por tres.

Así que decidí seguir perdiendo el tiempo, y creé un mashup que básicamente hacía lo siguiente:

  1. Automatizar el acceso a Salesforce.com para que me devolviese la lista de oportunidades de los dos últimos años fiscales.

  2. Hacer un "mashup" de esa automatización con las claves de cada región, para que me devolviese todas las oportunidades de cada región a la vez.

  3. Juntarno con el fichero Excel que utilizo para "mis cosas de preventa". El atributo de unión es el nombre de cuenta (el nombre de cada compañía con la que estamos trabajando), por lo que, como puede que yo lo haya escrito de manera algo diferente a como aparece en Salesforce.com, utilizo similitud textual (fuzzy join) para que si el nombre en Salesforce.com es "TuEmpresa" y yo lo tengo en mi excel como "Ty Enpresa", el sistema se dé cuenta de que es la misma oportunidad.

Esto me da como resultado una lista actualizada de todas las cuentas, y me marca aquellas que todavía no han sido asignadas a ningún preventa. Utilizando un planificador de tareas, todos los lunes tengo una lista esperándome. Si a esa lista añado nuevos libros con tablas dinámicas (aprovechando que ahora sé mucho de eso tras leer este libro ;) ), tengo una serie de estadísticas semanas que me ayudan a gestionar mi departamento un poquito mejor cada vez.

Tiempo requerido para tener el mashup listo: un par de horas, donde lo único más técnico es saber que lo de la similitud textual existe ;)



Mashup #3: Generación Automática de Resumen de Informes Semanales

Cada semana, los componentes del equipo me envían un informe de las tareas realizadas en formato excel. Hasta hace poco, consolidaba manualmente todos los ficheros para sacar datos como el tiempo agregado de cada oportunidad en total y en el último trimestre, etc. A lo tonto, me tiraba un par de horas todos los lunes, y aunque me vino bien para mejorar mis destrezas sumatorias ;) la verdad es que me quitaba mucho tiempo, y con un equipo en crecimiento, esto no es escalable. Así que hice lo siguiente:

  1. Generé manualmente ficheros CSV (valores separados por coma) de cada fichero excel que me envían (algo que ahora sé que se puede automatizar con una macro, pero tengo que ver cómo ;) ). Esto me lleva 5 minutos, y me permite utilizar una característica de nuestro producto de mashup muy chula, que permite guardar todos los CSV en un directorio, y él hace una unión automática de todos los resultados, en lugar de tener que combinar cada fichero por separado.
  2. Combino estos datos con el fichero de resumen de la semana anterior, añadiendo unas funciones matemáticas de "suma, resta y multiplicación" para actualizar los tiempos dedicados a cada actividad, desviaciones, etc.
  3. Una vez más, planifico una tarea para que cada lunes tenga los informes generados.
Tiempo requerido: una horita y media, y fusilado!

Además, juntado los dos últimos ejemplos, tengo otro mashup que me da, para cada oportunidad, la foto completa desde un punto de vista de preventa.


Mashup #4: Lista de mejoras para requisitos de producto

Otra de mis responsabilidades es la de mantener el documento de requisitos de producto, que básicamente es la lista de las peticiones realizadas por los diferentes departamentos, clientes, ... de mejora de producto. De esta lista sale el subconjunto de funcionalidades que se añaden finalmente a cada versión que sacamos.

Una de las fuentes de información más importantes para este tema es nuestra herramienta de "bug tracking", donde cualquier ingeniero o preventa de la empresa puede añadir peticiones de mejora. Hasta ahora, tenía que ir mejora a mejora, "copy-pasteando" a mi doc de requisitos. Y lo peor no es tanto el trabajo que conlleva, sino que, en un momento determinado, mi lista no estaba actualizada, por lo que podría no responder adecuadamente a alguna pregunta tanto procedente de otro departamento como del exterior.

Así que lo que he hecho es crear un proceso automático de acceso a la aplicación web de bug tracking para obtener todas las mejoras, y unirla con mi documento de requisitos. Esto, que parece tan simple, permite tener mi documento casi perfectamente actualizado, pues luego sólo me queda añadir las peticiones de clientes, marketing y ventas, que suelen ser de más alto nivel (y por lo tanto, menos ;) ). Ahora sólo me queda priorizar manualmente cada una de estas peticiones según nuestras necesidades y nuestra visión de producto.

En este caso, como véis, el resultado no es un proceso de automatización pura, pero el tiempo ahorrado es enorme. Seguro que se os ocurren formas de mejorarlo, con un poco más de tiempo.

Tiempo requerido: unas 4 horas


Como resumen: nada de lo que he contado aquí es magia, son aplicaciones muy simples, pero que sencillamente por resolver problemas concretos, no suelen ser adecuadamente priorizadas en un entorno corporativo (sistemas suele tener fuegos muy gordos a apagar antes que meterse en estos temitas), por lo que disponer de herramientas que permitan este trabajo puede ser algo a tener muy en cuenta. Y si además estas herramientas resuelven problemas más importantes a la empresa, el coste deja de ser un problema (me arregla lo gordo, y además permite que la gente haga sus propias cosas!).

Un último comentario, pero importante. Podréis leer en muchos sitios lo de "mashups for everyone", mashups para todos. Aunque es cierto que la mayor parte de lo que he escrito aquí podría ser realizado casi por cualquier tipo de usuario, que no os engañen con "hasta un usuario de negocio podría hacerlo" ;). Un mashup que combina información de muchas fuentes puede requerir un cierto conocimiento de técnicas básicas, medias o incluso avanzadas de gestión e integración de datos. Vamos, que sin llegar al extremo de "estos mashups han sido realizados por especialistas en un circuito cerrado", sí que es necesario tener en cuenta algunos aspectos no cotidianos.

¿Alguien tiene ideas sobre mashups? Compártelas!!!

6/02/2009

Visión y Aprendizaje en un nuevo blog

Mi mujer, Rosa García, optometrista y terapeuta visual, ha lanzado un nuevo blog que creo que puede ser de interés para todos aquellos que leéis Los Cuentos del Abuelo por los artículos sobre neurociencia, aprendizaje y comportamiento humano que escribo cada vez que tengo ocasión. El nuevo blog se centra en la Visión y el Aprendizaje, con artículos relacionados con el desarrollo visual, neurológico y motor del niño.

Para empezar, dos artículos muy interesantes. Uno, con un vídeo de Redes, el programa de Eduard Punset, que comenta el funcionamiento del cerebro de los bebés y cómo, investigando cómo funciona, estaremos más cerca de entender temas tan cruciales en nuestra sociedad como la salud mental, los problemas de aprendizaje, o las enfermedades adultas. Alguna cosa interesante que no sabía: los bebés no saben gestionar su "estrés", no saben deshacerse de su cortisol (los adultos sí podemos: nos tomamos una tila, llamamos a un amigo, ...). Por eso resulta tan difícil calmar a un niño que está realmente angustiado.

El segundo, describe de manera rápida y sencilla la evolución de la agudeza visual del niño desde que nace hasta que "ve perfectamente" (desde un punto de vista físico).

También aprovecho para comentaros que, aunque de una manera muy humilde, colaboraré en ese blog con algunos artículos sobre el tema del aprendizaje y el cerebro, tema que, para los que me leéis desde hace tiempo, sabéis que me interesa mucho.