lunes, 21 de enero de 2013

Esquema de lectura práctico, eficiente y potente

Me he vuelto un cliente asiduo de Amazon desde que descubrí, hace poco más de un año, la practicidad de la versión electrónica del libro y su costo menor. Además de que soy minimalista con los artefactos que me rodean, me gusta coleccionar libros pero no quiero tener estantes de ellos, me gustan las peliculas pero no quiero tener muchas coberturas regadas u ordenadas por ahi. En ambos casos opte por el formato electrónico, siendo el PDF el más común para el caso de los libros y contando con un acervo de más de mil libros que he ido reuniendo al pasar de los años.

Realmente me di a la tarea de “recolectar” cuanto libro en PDF estuviera a mi alcance y de una u otra forma le he sacado provecho al extraer segmentos o realizar consultar de temas puntuales. Más no se me había dado el interés de leer los libros en su totalidad. Por otro lado, inicie hace poco más de tres años con Dropbox, desde mi punto de vista la mejor aplicación para respaldar y acceder desde cualquier lugar a mi información. Coloque obviamente en dropbox mi colección de libros. Al principio estaban estos disgregados en diferentes directorios por lo que me di a la tarea de clasificarlos empleando para ello una estructura de directorios de varios niveles. No fue tarea fácil pero termine con un árbol extenso donde residían los libros. Uno de los problemas que me encontré fue la falta de flexibilidad de mi esquema de organización ya que un libro podía caer perfectamente en dos o tres categorías pero no iba a comenzar a crear copias por lo que decidi establecer de manera rigida una sola categoría para cada uno.

Ya estaba mi Biblioteca, perfectamente localizable en mi equipo, categorizada, respaldada en Dropbox y, por ende, disponible desde cualquier navegador.

Hace un año me compre mi primer Android. Apantallado por las grandes capacidades que brindaban su sinfín de aplicaciones, surgió en mí la meta de leer, ahora si, los libros y generar un hábito continuo de lectura, tanto de cultura general como de mi área profesional. Instale Dropbox en mi celular y un lector (Reader Go) de PDF. Todo iba muy bien, solo que el celular no es el mejor dispositivo para una lectura prolongada de PDF’s (con EBooks no he tenido problema), por lo que a los pocos meses compre una tableta (android también), momento en que empezó una nueva problemática a la cual encontrar una alternativa viable de solución. Los libros, aunque accedidos del dropbox, no sincronizaban los avances entre los dispositivos; de manera que lo que leía en el celular en el camino no aparecía de forma “automática” en la tableta para continuar mi lectura en casa. Era una gran decepción. Probé varias alternativas, entre ellas, Mantano (pague la aplicación y una cuenta por un año), encontrando que efectivamente sincronizaba pero aumentaba la complejidad de la administración al tener que manejar dos copias del libro (por lo menos, una en mantano y la otra en Dropbox (porque no hay integración entre estos). Después de varias pruebas con varios productos (y varias compras), encontré Moon+. Excelente aplicación que sincroniza con dropbox el avance entre los dispositivos. Ahora ya podía acceder desde cada dispositivo el PDF y de forma automática me informaba de cualquier avance entre estos y se colocaba en dicha posición.  

Ya había resuelto el problema, podía leer en mi celular durante la jornada laboral y en la noches, sin problema, podría continuar leyendo en mi tableta DESDE LA ÚLTIMA POSICIÓN.

Finalmente, conforme empecé a leer y revisar los libros, encontré que debía realizar una mejor categorización y depuración de los metadatos ya que muchas veces estaban incompletos y me complicaban definir que leer o que buscar. Es cuando encontré Calibre, una aplicación “gratuita” que permite importar libros PDF; CHM y Office en una sola librería. Es internamente administrada por la aplicación en cuanto a su estructura de directorios de almacenamiento, lo cual he entendido es lo mejor. El que yo tenga que dar mantenimiento a la estructura de directorios desvía un esfuerzo importante en esta labor en lugar de centrarme en el contenido, los libros, lo cual es precisamente lo que hace Calibre. Esta aplicación permite el crear una biblioteca, ir agregando metadatos a los libros para clasificarlo, pudiendo asignar más de una etiqueta el documento. Es importante mencionar que Calibre sólo habilita la administración de los libros, no es una aplicación para leerlos. Para ello se emplea Acrobat, Foxit y la aplicación que mejor le parezca a cada quien en el caso de la PC. Pero la razón principal del porqué adoptar Calibre fue que permite almacenar la biblioteca en dropbox. Todo lo que voy agregando automáticamente se ve en el Dropbox. La estructura de directorios que genera Calibre no es particularmente compleja pero significaba un reto ya que el primer nivel del árbol es por Autor. Empezaba a ver un problema en esto, sin embargo, existe la aplicación Leger Calibre para android que lee el archivo empleado por Calibre para generar la librería, que se encuentra en la raíz de la biblioteca y en el dropbox por ende, y muestra las cubiertas de los libros y las etiquetas para filtrar los contenidos.  A partir de ese momento, ha sido mucho más sencillo y productivo no solo acceder y leer mi biblioteca, además de facilitar su administración teniendo datos muchos más ricos de una forma más sencilla.

A continuación resumo lo que se requiere en cada dispositivo para implantar este esquema:

Movil/Tableta

  • Moon+
  • Dropsync (configurado para sincronizar toda la biblioteca al móvil).
  • Leger

PC
  • Cliente Dropbox
  • Calibre

jueves, 3 de enero de 2013

Arquitecto de aplicaciones

Hace un par de meses me incorporé a un programa que se estaba llevando a cabo en una dependencia del gobierno federal. Este programa era mediando, teniendo un promedio de 80 personas (entre analistas, desarrolladores, líderes y el gerente) en el mismo para llevar a cabo alrededor de 12 proyecto. Se me asignó como Arquitecto de aplicaciones.

Uno de mis primeros retos fue definir: ¿cuales son las responsabilidades del arquitecto de aplicaciones? Parecería sencillo, es quien debe definir “la arquitectura” de las aplicaciones de acuerdo al conocimiento general pero el arquitecto va un poco más allá. Dejarlo en solo está definición sería como pretender que su símil de construcción, el Arquitecto, solo se dedica a hacer planos. Entrega los documentos y se da por finalizado su trabajo. En algunos casos puede ser así, pero no se debe acotar el rol a solo estas funciones. El arquitecto en la construcción gestiona el proceso de construcción en base a los planos, verifica el seguimiento de los lineamientos que estableció y establece medidas en caso de desviaciones. Lo mismo para el arquitecto de aplicaciones, debe definir las políticas, lineamientos, estándares de cómo se “construirá” el software, pero también debe definir los procesos de operación, revisión, control y calidad para asegurar el cumplimiento de estos elementos y enfocado en favorecer la creación de un producto de calidad. Un Arquitecto, es por lo tanto, un Líder Técnico. Hay que establecer que el Líder de proyecto, project manager o PM, debe seguir las buenas prácticas del PM Book, el cual es agnóstico al área de aplicación. Aunque el PM puede tener conocimientos técnicos, muchas veces requiere apoyarse en un rol más experimentado en el área antes mencionada, esto es, el Líder Técnico. El PM ejecuta los procesos de administración de proyectos, independientes del proceso de desarrollo y los procesos de soporte al mismo (control de cambios, accesos, seguridad, control de versiones, etc). y el Líder Técnico quien si ve estos procesos propios del desarrollo.

En base a esto, me di a la labor de identificar la situación actual de los proyecto del programa y mis hallazgos fueron:

  • Lineamientos y políticas vagas, poco detalladas, estructura no homologada y no difundidas.
  • Falta de control de los ambientes y las herramientas.
  • Procesos no definidos para revisión y promoción de las aplicaciones.
  • Modelos de datos heterogéneos.

Lo que procedí a hacer fue:

  1. Definir los puntos de control más importantes a realizar sobre el proceso de desarrollo (el cual estaba basado en MAAGTIC). Por ejemplo, uno de los entregables del proceso de desarrollo es el documento de detalle de casos de uso, el cual era generado de acuerdo a la experiencia y conocimiento de cada analista teniendo a la larga multitud de estilos y formas.
  2. A partir de los puntos de control, definir que se esperaba (guías) y como se iba a revisar (listas de verificación). Siguiendo con el ejemplo: Procedí a crear una guía de documentación de casos y un checklist de revisión a fin de homologar su desarrollo y minimizar la curva de entendimiento de parte de los desarrolladores (aumentando la  calidad de su construcción) al aplicar buenas prácticas y recomendaciones. Esto incluyó:
    1. Descripción de la arquitectura de la aplicación en capas.
    2. Marcos de trabajo (Spring, JSF, PrimeFaces, entre otros).
    3. Dependencias.
    4. Estándares de nomenclatura.
    5. Guías de diseño de IU.
    6. Herramientas.
  3. Definir las herramientas y procesos de revisión de calidad de la aplicación:
    1. Revisión de código: FindBugs.
    2. Pruebas de stress: JMeter, LoadTest.
  4. Definir los procesos de promoción de una aplicación, desde desarrollo hasta producción. Estos estaban soportados por las guías y listas de revisión.
  5. Definir los procesos de administración de las herramientas y los ambientes para controlar las configuraciones y cambios en los mismos, lo cual impactaba en las entregas finales al cliente.
  6. Definir las políticas de bases de datos. Desde la administración de usuarios, creación de esquemas, guías de nomenclatura y manejo de tablespaces (se empleaba Oracle 11g).
  7. Definir y estandarizar los formatos de manuales técnicos, permitiendo contar con un documento, para cada proyecto, mejor estructurado, completo y útil.
  8. Definir un procedimiento integral de despliegue de las aplicaciones resultantes de los 12 proyectos en lo que denomine “paquete de aplicación” consistente de un WAR, Script de BD y  Manual técnico.

Este no fue un proceso de un día para otro, tomo alrededor de un mes la definición, puesta en marcha, adopción y uso de estos elementos.

De aqui que como Arquitecto de Aplicaciones puedo compartir que:
  • Debe definir el como se deben construir las aplicaciones.
  • Definir el como se controlará y validará la calidad de los construido.
  • Definir las herramientas a emplear, tanto para construir, probar y publicar.
  • Definir los procesos de operación y soporte al proceso de desarrollo asociados con las herramientas, ambientes, promoción.