Leaky

Hace poco me he reencontrado con un término que conocí hace tiempo y que creo que tiene su gracia. Se trata de “leaky abstraction“, que vendría a traducirse como “abstracción goteante”. Éste fue propuesto por Joel Spolsky  en un artículo hace más de una década (The Law of Leaky Abstractions) y la idea general es la siguiente: Como ingenieros, una de las herramientas básicas que utilizamos para simplificar la creación de arquitecturas complejas es la abstracción. Generamos diferentes capas o componentes que actúan como cajas negras con una interface, de manera que sea posible usarlas sin tener que conocer los detalles de la implementación. Por ejemplo, un sistema operativo es una abstracción del hardware donde se ejecuta, o las bibliotecas de clases contenedoras abstraen los detalles del almacenamiento de estructuras de datos en memoria, etc. Esta herramienta es muy importante de cara al mantenimiento de una arquitectura o que otros reusen nuestros componentes. Sin embargo, por muy buenas que sean nuestras intenciones, hay casos en los que intentar abstraerse totalmente del funcionamiento interno de la caja negra puede ser contraproducente. Si ocultamos totalmente este funcionamiento interno, con una abstracción al 100%, algunos resultados pueden parecer arbitrarios o incomprensibles. En el artículo original, se usa como ejemplo la pila TCP/IP. Si un desarrollador intenta crear una capa TCP partiendo de la abstracción total de las capas inferiores IP y acceso a red, se va a encontrar con sorpresas sin saber el motivo. Desde su punto de vista, a veces una conexión irá muy rápida y otras más lenta, ya que IP puede redirigir los paquetes usando distintas rutas. A veces,...

Datatopía: Inteligencia de Negocio en Londres (y II)

Seguimos explicando algunas conclusiones de la 15ª edición del evento de Inteligencia y Analítica de Negocio de Gartner de hace unos días. Datos estructurados, semiestructurados y no estructurados. Aquí sí que hay una diferencia. La mezcla de datos sociales, geográficos, de texto, de imagen, los procedentes del uso móbil del cliente y el empleado… que se resisten a una estructuración formal, a relaciones de causa-efecto y a búsquedas SQL… ha venido para quedarse. Sin embargo, casi todo el mundo (fabricantes y compradores) sigue invirtiendo en su datawarehouse, sólo que los productos son ahora más complejos y ya no hay nadie que no mezcle bases de datos relacionales con Hadoop y otros inventos, en una especie de DW “extendido”. Vale también para los sistemas in-memory. El nuevo BI es y será una mezcla de análisis y descubrimiento y un abanico más abierto de productos. Big data y social analytics como moda (¡cómo mola!). En cambio, Big data aparece como un buzzword, una moda pasajera que ha venido bien para interesar a gente desinteresada y ganar un poco de tiempo y capacidad para innovar; la diferencia es más cuantitativa que cualitativa: ¡son sólo datos! Dentro de poco tiempo habrá otra palabra de moda, se sugería fast data. También se consideran over-hyped, o sea por encima de su valor real, la afición por los datos procedentes de las redes sociales, debido a la dificultad de convertirlos en valor, más allá de la defensa de la reputación y algún otro uso folklórico. Y todo en la nube. Aunque sólo sea por volúmenes y velocidad de proceso (IaaS), pero también por la aparición de multitud de productos y modalidades de provisión del software (SaaS) y las competencias de inteligencia y analítica como servicio. Sobre...

Datatopía: Inteligencia de Negocio en Londres (I)

Hace algunas semanas estuvimos en Madrid algunos de los miembros de la familia de Inteligencia de Negocio de la UOC para predicar una buena nueva que ya no es necesario predicar: la explosión y la centralidad de esta disciplina en el negocio y en la tecnología, por un lado, y la demanda de profesionales capaces de producir sistemas y analizar datos o, como dice Davenport en uno de sus últimos libros, los que hacen el vino (wine makers) y los que lo saborean inteligentemente (los connaiseurs). En este enlace, podéis ver y descargaros las presentaciones. Según IDC, en 2020 el volumen de los datos almacenados alcanzarà 40 Zetabytes y la inversión en BI habrá llegado a 26 Billones (americanos); ya hoy, según Gartner, los proyectos de BI son los primeros en las agendas del CIO, del CFO y del CEO y el número de productos y servicios en este aparente nicho casi alcanza los 600, según Josep Curto, que se dedica a estas cosas dentro y fuera de la UOC. Ahora me he ido a Londres, al evento europeo que se celebra desde hace 15 años (!) organizado por Gartner. Las entradas estaban agotadas desde hace meses, como cuando actúa Coldplay. Y os explico mi propio resumen: Todo son datos, y los datos son tuyos. El nuevo mundo se llama Datatopia y está entre el salvaje oeste, el gran hermano y la compraventa o cesión segura de tus datos y los del vecino. Las buenas noticias son que te puedes descargar el pdf libremente y que ya hay alguien que ha inventado una web donde te puedes apuntar y a lo mejor haces negocio o...

Pokes y cargadores (II)

En una entrada anterior vimos que existen mecanismos para modificar el comportamiento de un juego, si modificamos su lógica. Concretamente, los ejemplos fueron actuar sobre el juego una vez cargado en memoria o sobre los datos de las partidas guardadas. A medida que los juegos y los sistemas operativos se hacen más y más complejos, este proceso se complica. En los antiguos ordenadores de 8 bits, modificar un pedacito de memoria a nuestro antojo era trivial, el propio sistema ya te daba la instrucción “POKE“. Tener que rebuscar solo por 64 Kb, con la instrucción “PEEK“, también ayudaba lo suyo. Pero hoy en día no es tan fácil, ya que los videojuegos son programas de gran complejidad. Sin embargo, dicha complejidad a veces juega a nuestro favor. A menudo, los videojuegos ya no se generan a base de crear todo el motor del juego de manera ad hoc, sino que se basan en un motor genérico, personalizado con ficheros de configuración o scripts, que son los que realmente definen el comportamiento de ciertos aspectos. Por otro lado, los videojuegos de hoy son programas muy complejos que deben ser fáciles de depurar y a menudo necesitan un nivel de ajuste de las reglas a base de prueba y error. Por todo ello, y para no tener que recompilar TOOODOOO el programa cada vez que se requiere una actualización, no es infrecuente que los ficheros que definen la propia lógica de las reglas se encuentren fuera del propio código binario ejectuable, y en un formato más o menos legible y fácil de depurar… tanto para los desarrolladores como para el resto...

El jefe de proyecto como un guerrero

Publiqué hace tiempo una entrada en la que proponía “el arte de esperar y estar preparado” en la gestión de proyectos. Es una bella frase de Schnitzler que sirve para muchas cosas. Un buen lector, Miguel Angel Bueno, me comentó que le recordaba El arte de la guerra, de Sun Tzu (Sunzi, en pinyin). Le dije que no, que los jefes de proyecto sabemos hacer, mientras que los buenos militares (y los buenos políticos) saben no hacer: “la hazaña suprema es derrotar al enemigo sin entrar siquiera en combate”. Nosotros anhelamos el combate, y nos cuesta la retirada y la derrota. En otro post, se me ocurrió que hay tres clases de jefes de proyecto: el piloto, el descubridor y el conquistador. Estas y otras “paridas” se han recogido hace poco en un libro de la editorial de la UOC. Vuelvo a leer El arte de la guerra en la bella edición de Susaeta, encuadernada según la técnica china tradicional, y creo que Miguel Angel Bueno tenía bastante razón. Hay muchas cosas en que el jefe de proyecto, como cualquier directivo, se parece a un buen guerrero y un buen proyecto se parece a una buena batalla. Definir y planificar el proyecto. “La guerra es el camino hacia la destrucción o la supervivencia: se impone el análisis”. El análisis externo (la situación tuya y de los otros), el cálculo de las eventualidades y contingencias, la apertura de diferentes oportunidades y…, a veces, el engaño. La gestión ágil: una guerra corta. Es verdad que la mejor guerra es la que no hay que librar, pero si tenemos que ir a la guerra, que sea corta. Este es...