miércoles, 21 de agosto de 2013

Porqué lo pasé bien programando

Hace muchos años que ya no desarrollo software ni programo sistemas, mi carrera profesional hace ya bastante tiempo me llevó más por la línea de gestión de equipos humanos y gerenciamiento de áreas de sistemas, y creo que sin duda todo ello ha contribuido a mi crecimiento como persona y como profesional. Sin embargo, aquella época en la que me tocó abordar proyectos de programación por mi cuenta o con equipos muy pequeños, quedo grabada en mi recuerdo como uno de los períodos en que mejor lo pasé trabajando.

Me gustaría recordar con Uds. una de estas experiencias, e indagar en las razones por las cuales entonces disfruté el trabajar en estos proyectos, y las enseñanzas que estos me dejaron.

La experiencia que voy a relatar ocurre durante la segunda mitad de los años 80, mientras trabajaba en la gerencia de desarrollo tecnológico en Sonda. En este grupo, para entonces a cargo de Hermann von Borries, gran ingeniero y amigo, y uno de los mejores programadores con los que me ha tocado trabajar, abordamos diversos proyectos innovadores de desarrollo de herramientas de software, que fueron la base para la construcción de diversos sistemas de información que Sonda comercializó entre los años 80 y 90.




Por entonces, nuestro grupo apoyaba el desarrollo de una plataforma base para implementar sistemas transaccionales para sucursales bancarias, incluyendo desde los terminales de los cajeros hasta los servidores para la autorización de las transacciones, mercado para entonces dominado por IBM. Esto porque Sonda se había puesto como objetivo proveer una solución para bancos basada en los sistemas computacionales de Digital Equipment Corporation, compañía de la cual era distribuidor exclusivo y cuyos computadores comercializó con gran éxito.

Dentro de las múltiples componentes de software que requirió esta iniciativa, una de ellas correspondió al desarrollo de un "middleware" que permitiera la interconexión e intercambio de mensajes entre los terminales de caja implementados usando computadores personales y los sistemas centrales que procesaban las transacciones activadas desde las cajas.  Esta aplicación debía operar en los computadores VAX con sistema operativo VMS, y la comunicación con las cajas se basaba en el protocolo DECnet, propietario de Digital.

Requisitos esenciales a lograr eran un alto rendimiento, coherente con el procesamiento de transacciones en línea en un entorno bancario, y diversas funcionalidades de configuración, administración y soporte para los administradores de sistema. Otro requisito era asegurar la continuidad de aplicaciones que habían sido previamente desarrolladas usando un sistema de comunicaciones basada en protocolo SNA/SDLC.

Para lograr lo anterior fue necesario investigar las capacidades del sistema operativo VMS a nivel de programación de sistema, que permitieran entre otros: alto rendimiento, mediante el uso de áreas de memoria compartida entre procesos; sincronización entre tareas, mediante colas de mensajes;   interfaz de administración, mediante un intérprete de comandos, y facilidades de traza y registro para altos volúmenes transaccionales, mediante el uso de archivos circulares y escritura a nivel de bloques.

El sistema lo programamos en FORTRAN, un lenguaje de programación cuyo origen fue el desarrollo de modelos matemáticos, algoritmos y cálculo numérico, y no precisamente la programación a nivel de sistemas. Pero ello no fue un obstáculo mayor y, al contrario, el conocimiento previo del lenguaje fue una ventaja (casi todos los ingenieros usamos FORTRAN alguna vez en la universidad).

Fue un momento importante cuando vimos materializados nuestros esfuerzos con un sistema que funcionaba de hecho muy eficientemente, y que nos permitió comunicar las cajas y otros tipos de terminales, con aplicaciones centrales procesadoras de las transacciones. El sistema lo bautizamos con el nombre MIRROR, siguiendo la analogía del reflejo óptico en un espejo que permite hacer llegar la luz a un lugar específico, de la misma forma nuestro sistema permitía que los mensajes recibidos desde un origen pudieran ser re-dirigidos, mediante reglas parametrizables, a una aplicación determinada en el computador local o a otro computador en otra ubicación, construyendo de esa manera una red de procesamiento distribuido.

Algunos años después re-hicimos el sistema para ambientes Unix y Windows, en ese caso, programado en lenguaje C, sobre protocolo TCP/IP y utilizando las características propias de esos sistemas operativos, generándose así un producto que funcionaba en una variedad de ambientes con similares formas de operación y administración, y que, de hecho, fue utilizado en múltiples proyectos de Sonda tanto en nuestro país como en el exterior, y que todavía figura operando en mas de alguna instalación por allí.

Recordando esta experiencia trato de identificar las razones de porqué ha quedado grabada en mi memoria con un grato recuerdo, y se me ocurren algunas:
  • Cuando acometimos el diseño del sistema teníamos una idea bastante precisa de adonde queríamos llegar, pero en el camino fuimos imaginando e incorporando nuevos conceptos y funcionalidades. Este proceso creativo, donde tuvimos amplia libertad, fue probablemente parte de porqué esto fue muy entretenido.
  • Los múltiples desafíos que teníamos que cumplir nos obligaron a buscar soluciones particulares y a investigar y aprender sobre capacidades del sistema operativo que podíamos usar en nuestro beneficio.
  • La programación, es un acto solitario, que requiere espacios de tranquilidad y concentración, y en ese estado se puede alcanzar altos niveles de productividad. La concentración puede llegar a ser tal, que no es raro que la solución a un problema surja en espacios inesperados, como la ducha o  incluso durante el sueño.
  • Por último, ver funcionando lo que alguna vez imaginamos representa una satisfacción difícil de expresar. 
Cuando converso con ingenieros y programadores que han producido módulos relevantes de sistemas o sistemas enteros ellos solos o como parte de equipos mas bien pequeños, con gran libertad para abordarlos, y que además disfrutan de su trabajo, veo que estos módulos o sistemas suelen tener menor cantidad de errores y mejor desempeño en general. 

Todo esto además ha sido ampliamente estudiado. El clásico texto Software Engineering Economics de Barry Boehm publicado en 1981, ya indicaba que la capacidad del equipo de trabajo era por lejos el factor de mayor incidencia en la productividad del desarrollo de software.

Considerando todo lo anterior mi conclusión es que es clave identificar y potenciar estos talentos, dándoles posibilidad de crecimiento y desarrollo en la línea de especialización técnica. Sin embargo, en la generalidad de los casos esto no es así.  En la gran mayoría de las empresas a nivel nacional, el trabajo netamente técnico, como el de los programadores, no tiene líneas de desarrollo profesional que apunten a su perfeccionamiento y excelencia, mas bien al revés, los buenos profesionales que quieren crecer, deben forzosamente alejarse de eso que hacen bien para pasar a labores de dirección o gestión. A veces esta transición es exitosa, a veces no tanto, y es probable que en algunos casos, talentos  técnicos importantes se desaprovechen. 

Esto, por cierto, es totalmente distinto en países desarrollados como Estados Unidos y Europa, donde los especialistas técnicos talentosos y motivados son altamente valorados y tienen líneas de desarrollo profesional que potencian sus capacidades. 

Como siempre, en nuestro país han habido y hay excepciones, pero son pocas, y de momento, solo confirman la regla. 

viernes, 16 de agosto de 2013

Way2ride. Pago de taxis mediante el celular.

A propósito de pagos móviles, Verifone - probablemente el mayor fabricante de terminales de pago a nivel mundial - acaba de anunciar Way2ride, un servicio de pago de taxis mediante el teléfono celular, en cual la experiencia de uso es literalmente, pago con un "tap".

El servicio está inicialmente disponible en la ciudad de Nueva York, con una cobertura inicial cercana a los 7500 taxis, y con planes de extenderlo a otras ciudades de EEUU y del mundo.

El siguiente video muestra la experiencia de uso:


La aplicación está inicialmente disponible para IOS y Android, y requiere un enrolamiento previo en el sitio www.way2ride.com.

Los usuarios se enrolan con su email, y definen la o las cuentas que pueden utilizar para pagar, el porcentaje de propina a aplicar, y como se desea recibir el recibo del pago, entre otras cosas. Luego, pueden cambiar sus selecciones directamente desde la aplicación móvil.

La aplicación permite solicitar un taxi, y estimar el costo del recorrido previamente.

Una vez dentro de un taxi habilitado con Way2ride, el usuario simplemente selecciona la opción "I'm in a taxi",  y acerca su celular al terminal disponible en el auto, con lo cual el sistema establece la relación con el celular para el posterior pago de la cuenta.

Terminada la carrera, el usuario simplemente sale del auto, y el cargo se realiza automáticamente. El recibo del pago puede recibirse directamente en el celular, y también puede ser consultado en el sitio web.

La aplicación incluso considera la posibilidad de que el usuario avise si es que se le quedó algo en el auto, de modo que la central actúe para ver la posibilidad de recuperar lo perdido.

En este caso vemos una aplicación de pagos móviles para un propósito específico, donde se han pensado todos los detalles para hacer una experiencia de uso muy simple y conveniente para el usuario. Ya la experiencia similar de Starbucks demostró que una aplicación bien pensada, aunque su uso sea limitado, puede ser altamente exitosa.



Un elemento novedoso de esta aplicación es que para comunicar el celular con el terminal utiliza una tecnología patentada, que intercambia información encriptada mediante señales de audio de alta frecuencia utilizando los parlantes y micrófonos de ambos equipos. Esta tecnología es una alternativa a la tecnología de radio frecuencia Near Field Communications, NFC, con la ventaja que puede utilizarse en la mayoría de los Smartphones disponibles actualmente en el mercado, que todavía no incluyen NFC.

Las posibilidades de esta tecnología son múltiples, y el hecho que Verifone, un importante actor del mundo de los medios de pago, haya optado por ella no es un hecho menor. Probablemente veremos en el futuro nuevos dispositivos de Verifone equipados con esta tecnología, los que podrán interactuar con teléfonos celulares para realizar pagos u otras operaciones.

miércoles, 7 de agosto de 2013

La promesa de la billetera móvil. ¿Porqué ha costado tanto?

Un artículo llegó a mi inbox recientemente con un título que llamó de inmediato mi atención: "Todavía estoy esperando que mi teléfono reemplace a mi billetera". Lo escribe Jenna Wortham, cronista de tecnología del New York Times, que con la mirada de un consumidor más, se refiere a la promesa no cumplida aún de que los celulares reemplazarían a las tarjetas al momento de realizar transacciones de pago.

La visión presentada por Jenna coincide en varios puntos con la mía propia, y me gustaría compartirla con Uds.

A Jenna el tema le viene a la mente un día excepcionalmente caluroso, en el que, buscando salir lo mas liviana posible, se percata de que está dispuesta a dejar en casa entre otras cosas su abultada billetera, pero en ningún caso su celular. Viene entones a su memoria la atractiva promesa de la aparición inminente de una billetera móvil residente en su celular, que con un simple movimiento ("tap and go") permitiera pagar en cafeterías, restaurantes, transportes, y toda variedad de establecimientos comerciales.

La pregunta que se hace Jenna es la misma que se vienen haciendo numerosos analistas del mercado desde hace bastante tiempo: ¿porqué, a pesar del evidente desarrollo de la mayoría de las componentes tecnológicas que podrían hacer esto posible, estas no han pasado mas allá de diversos proyectos piloto realizadas en distintos lugares del mundo, sin que ninguno de ellos hasta ahora logre consolidarse como una solución masiva?.

El artículo pasa revista a varias de las iniciativas de pagos móviles que se han anunciado en el último tiempo en EEUU, no siendo en ningún caso una lista exhaustiva. Entre las mencionadas están: Square, Google Wallet, Visa Paywave y Isis entre otras.  Destaca la exitosa aplicación de compra móvil de Starbucks, que se descarga al móvil y permite que este opere como una tarjeta recargable para pagar en dicha cadena, pero indica que es un modelo cerrado y que sólo se puede utilizar en dicha cadena, es decir, no es un medio de pago de uso amplio.

Aventurando explicaciones sobre el origen de la dificultad para la adopción masiva de los pagos móviles coincido con Jenna en las siguientes:

Primero, esta parece ser una solución en busca de un problema. No resulta obvio que pagar con el teléfono celular sea más simple o más rápido que hacerlo con una tarjeta de crédito o debito tradicional. Supone una secuencia de operaciones entre el celular y el punto de venta, sujeta además en muchos casos a posibles problemas de operación producto de la no siempre óptima calidad de las comunicaciones móviles. Una transacción con todas esas dificultades no es lo que alguien quiere experimentar mientras está pagando en una caja con una fila de gente esperando detrás, durante el horario punta.

Hay un escenario de uso en que sí es posible identificar una ventaja: aquel donde la compra o el pago se realiza en forma remota y el celular es el medio tecnológico que mas probablemente estará a mano para llevar a cabo la operación (y en muchas ocasiones es el único).

La segunda razón dice relación con los participantes de este mercado: las redes de medios de pago tradicionales se basan en la operación colaborativa de una serie de actores de la industria que han establecido acuerdos que hacen posible que las transacciones se realicen de forma similar en cualquier lugar del mundo.  En el mundo de los pagos móviles, dichos acuerdos no se han establecido aún, producto principalmente de que cada uno de los posibles participantes quiere obtener el máximo control y fracción de las utilidades de este negocio. En efecto aquí aparecen nuevos actores, tales como los operadores móviles, las empresas fabricantes de teléfonos, las compañías de software como Apple y Google, nuevos operadores de pago como Paypal, en fin... Esto actores se suman a los protagonistas tradicionales de las redes de medios de pago, como son los bancos y las redes internacionales Visa y Mastercard entre otras, y todos ellos quieren una tajada de la torta.

Clinkle Wallet (*)
Como si fuera poco el lograr los acuerdos anteriores, además hay que convencer a los comercios de invertir en los cambios tecnológicos en sus sistemas de punto de venta para soportar estas nuevas tecnologías en las transacciones de pago. Estas son inversiones importantes, que es difícil que los comercios lleven adelante a menos que estén convencidos de los beneficios de su adopción.

No obstante las dificultades ya mencionadas, el artículo menciona que a pesar de ello la corriente de innovación en torno a este tema no se detiene, y llama la atención que siguen apareciendo nuevos "startups" con generosos financiamientos, que apuntan en la misma dirección de desarrollo de pagos utilizando dispositivos móviles.

Jenna concluye en su artículo que habrá que seguir esperando. Mientras tanto no le queda otra cosa, para salir liviana en un día de calor, que asegurar con un elástico su tarjeta de crédito y su licencia de conducir a su celular, aunque reconoce -un poco decepcionada- que esto no es lo que tenía en mente cuando imaginaba pagar con su celular.






(*) Clinkle es un startup reciente que está desarrollando una nueva solución de pagos móviles.

jueves, 1 de agosto de 2013

Uso de tableros de control como apoyo a la gestión. Un recurso que podría ser mas explotado.

Una frase habitual en nuestros días dice que "lo que no se mide no se puede mejorar", y alude a que para llevar a cabo cualquier proceso de mejoramiento es necesario establecer objetivos concretos, tener formas de medirlos, establecer un punto de referencia con la medición del estado actual, y mantener la medición en forma continua para ir viendo el progreso en pos del objetivo a cumplir.

Este es el principio básico del control de gestión que las empresas, cada vez mas frecuentemente, han ido incorporando como parte de sus herramientas de administración. De hecho, cada vez es más usual que existan en las empresas, departamentos o gerencias de Control de Gestión, que tienen como objetivo preparar los principales informes que resumen la situación y desempeño.
Asimismo, las tecnologías de información han desarrollado una variedad de herramientas de apoyo a estos procesos, facilitando las tareas de capturar los datos, procesarlos y presentarlos en informes y tableros de control de modo de dejarlos a disposición de los usuarios para su consulta.

Sin embargo, el uso efectivo de estas técnicas y herramientas está todavía muy por debajo de su potencial. Lo más común es que el uso de los conceptos de tableros de control de gestión y las herramientas asociadas sea algo usualmente restringido a las áreas encargadas en la empresa de preparar los informes para la alta gerencia o el directorio, y como consecuencia, el uso de estas herramientas en el resto de las gerencias usualmente está poco desarrollado.

En las empresas actuales, la gran mayoría de los procesos que se llevan a cabo están soportados por sistemas de información o algún soporte informático estructurado o no estructurado, y por lo tanto, se genera en estos sistemas todos los días una gran cantidad de información relacionada con el funcionamiento de estos procesos. Es tal la cantidad de información que generamos a cada momento que últimamente se ha acuñado un nuevo término: "big data" para hacer referencia al desafío que representa el aprovechar esta información para tomar mejores decisiones.

La disponibilidad cada vez mayor de información, junto con la capacidad de las herramientas tecnológicas disponibles para trabajarla, abren la posibilidad para que en todas las gerencias o áreas de una empresa se pueda implementar procesos de gestión controlados y medidos mediante indicadores claves de desempeño (KPIs). Estos indicadores, llevados ahora a nivel de cada gerencia, permiten a los responsables de los procesos poder medir su desempeño, fijar metas y objetivos de mejoramiento, revisar su progreso, y detectar a tiempo posibles problemas activando planes para su solución.

Si una gerencia o área quiere incorporar estas prácticas, lo primero que debe hacer es reconocer sus objetivos estratégicos y los procesos que los sustentan, luego para cada uno de estos procesos identificar o definir los KPIs que miden el desempeño del proceso y el cumplimiento de los objetivos. Usualmente se definirán metas a lograr en un cierto período en relación a los indicadores que no estén en los niveles adecuados y que requieran ser mejorados.

A continuación se deben identificar las fuentes de información desde donde se obtienen los datos para calcular los KPIs, y finalmente todo esto se puede implementar mediante herramientas que automáticamente obtienen los datos de origen, hacen los cálculos y transformaciones necesarias y dejan la información disponible en reportes o pantallas de consulta.

Disponer de estos mecanismos, actualizados diariamente y en forma automática, permite a las gerencias tener un pulso mucho mas directo de lo que está ocurriendo en sus procesos y como eso afecta a los objetivos que se han planteado. De hecho, estos tableros pasan usualmente a transformarse en una herramienta de uso habitual, tal como lo son actualmente el correo electrónico y el Excel. Una vez que eso ocurre, de ahí en adelante es un camino sin retorno, y lo que sigue es un proceso de mejora continua de estos indicadores y los mecanismos para acceder a ellos.

En la actual "era de la información" esto se ha transformado en una necesidad ineludible.



Y para los que les gustan los clásicos de la música, aquí les dejo uno re-visitado, pero con su interprete original: