Mostrando entradas con la etiqueta Eficiencia. Mostrar todas las entradas
Mostrando entradas con la etiqueta Eficiencia. Mostrar todas las entradas

sábado, 6 de febrero de 2021

Injustificada Prepotencia

 

Tradicionalmente, ha existido cierta competencia o “pique” entre distintos profesionales de las tecnologías de la información de acuerdo al tipo de productos y tecnologías escogidas (Linux vs Windows vs Mac, Java vs .Net, Programación Orientada a Objetos vs “Programación Estructurada”, Pascal vs Cobol, Aplicaciones Web vs Clientes “pesados”, CVS vs SVN, ...).

Esta competencia ha sido generalmente “amistosa”, “la sangre nunca ha llegado al rio” y ha oscilado entre debates intelectuales intensos, con exposición de argumentos y análisis interesantes a formas amistosas de provocar o hacer bromas a un compañero.

Generalmente se ha respetado a la otra parte que utilizaba otra tecnología y como mucho se ha interiorizado al respecto reflexiones como: ”Si utiliza ese lenguaje posiblemente su código tendrá más errores”, “Creo que esa plataforma/lenguaje no tiene futuro”, “Pienso que no conseguirá buen rendimiento si utiliza ese sistema/lenguaje”,…, considerando poco adecuadas o menos eficientes las tecnologías de la otra parte pero manteniendo siempre una consideración profesional al que utilizaba esas tecnologías (como siempre con excepciones, que de todo hay).

Sin embargo, en estos últimos años creo percibir (y evidentemente no tengo datos estadísticamente significativos, y menos en algo tan subjetivo como lo que estoy comentando) una injustificada prepotencia en bastantes profesionales que utilizan tecnologías o paradigmas de “moda”, respecto a aquellos que no las utilizan o ¡incluso se atreven a criticarlas!. Entre las que situaría como “tecnologías/paradigmas de moda” podría situarse elementos como las bases de datos NoSQL, los Arquitectura de Microservicios, DevOps, desarrollo Agile, Cloud,…

La diferencia respecto a la situación anterior no es que se piense que la opción propia es mejor y que el otro profesional está eligiendo una opción errónea, es que parece que se considera a quien no utiliza esta tecnología como un “espécimen” a un nivel “evolutivo” cercano al australopiteco (tecnológicamente hablando, eso sí).

No se plantea un debate “de igual a igual”, sino una mirada de “conmiseración”, donde se opta por no entrar en debates y se llegan a oir frases como :“Pobre, no entiende cómo se hacen ahora las cosas”, “Se ha quedado anticuado”, “Usa los sistemas de antes”, "ahora las cosas ya no se hacen así",…  

Esta ridícula y totalmente injustificada prepotencia, no debida unicamente a los profesionales sino también a las empresas que presionan para que se utilice “el último grito“ en tecnologías y metodologías, a quien más perjudica finalmente es a las empresas, que acaban desplegando un producto que en ocasiones carece de la calidad adecuada y cuyo coste es mayor de lo que deberían, debido al uso de metodologías/tecnologías inadecuadas.

No está de más recordar el gráfico "clásico" de implantación de tecnologías, para ayudar a pensar con ponderación sobre los riesgos de "las modas".

 

IOTpreneur, CC BY-SA 4.0, via Wikimedia Commons

Los profesionales también acaban sufriendo horas adicionales de trabajo y sobrecarga y en muchas ocasiones mala imagen ya que la solución finalmente implantada “no funciona” o tiene un rendimiento lamentable, además de los retrasos sufridos. En cualquier caso, el profesional que elige o recomienda la tecnología es el primer responsable del posible fracaso. Y si recibe presiones de la empresa, debe al menos analizar esa nueva tecnología y, si no es realmente válida, transmitir ese riesgo a quien corresponde. Si aun así los responsables del proyecto insisten y luego hay problemas, no podrán decir que desconocían los incumplimiento de plazos, riesgos o costes potenciales.

Como he analizado anteriormente en artículos sobre diversos aspectos, como Cloud (http://pensamientocriticoti.blogspot.com/2019/10/cloud-o-cuidado-con-la-nube-que-puede.html), Framework (http://pensamientocriticoti.blogspot.com/2019/03/los-framework-de-desarrollo-un-regalo.html), Metodología Agile (http://pensamientocriticoti.blogspot.com/2017/12/reflexiones-sobre-las-metodologias.html) o Microservicios (http://pensamientocriticoti.blogspot.com/2017/10/los-microservicios-no-son-la-solucion.html), no no hay solución “mágica” y no siempre un paradigma o tecnología “de moda” es mejor o más adecuado.

Contra esta especie de adanismo, que piensa que “el mundo acaba de empezar y antes no existía nada comparable”, creo que es conveniente recordar datos como los siguientes:

  • Antes de la “moda” de los servicios REST existió hace más de 20 años la “moda” los WebServices con toda su parafernalia de productos y conceptos como “diccionarios de servicios “(diccionarios de API,), “desacople de aplicaciones”, “el final de las aplicaciones monolíticas,”.. ¿suena familiar?.

  • Antes de se difundiera la virtualización, IBM ya disponia en 1972 de sistemas de virtualización con su tecnología VM  en sistemas tan “obsoletos” como el mainframe, trabajando con lenguajes “anticuados” como COBOL.

  • El concepto de nube (Cloud), como lugar donde albergar nuestros servidores y bases de datos, es básicamente lo mismo que se ofrecía en los 90 como “hosting”.

  • Antes del manifiesto y la metodología Agile ha habido muchos sistemas y metodologías iterativas y con implicación/revisión con el usuario/propietario del software, como puede ser la programación extrema XP ( ¿suena familiar ese proceso iterativo con intervención del cliente de la XP? ), remontándonos incluso a los años 60s.

  • Los famosos desarrollos serverless, es decir no tener un servidor levantado todo el tiempo sino arrancar un proceso para atender una petición (personalmente me parece un derroche y poco eficiente, pero el análisis sería objeto de otro artículo, y como siempre, puede tener ventajas en algún caso) es básicamente el mismo concepto de desarrollo de aplicaciones web por medio de CGI definido a principio de los años 90s

Por supuesto he hecho una simplificación y hay diferencias, pero las ideas y conceptos básicos de todas esas tecnologías y paradigmas que he comparado son realmente las mismas.

La conclusión de ese repaso sería que “casi no hay nada nuevo bajo el sol”, o al menos que las “nuevos” paradigmas y tecnologías de desarrollo no son tan “nuevos” como pensamos en ocasiones, salvo algunas excepciones, que por supuesto las hay. En general, es un proceso más evolutivo y gradual de lo que aparenta, con muy pocos saltos “gigantes”.

 

Charles Darwin [See page for author, CC BY 4.0 , via Wikimedia Commons]

Acudiendo a Darwin, mal interpretado en muchas ocasiones, no es “La supervivencia del más FUERTE”, es “la supervivencia del mas APTO”(https://es.wikipedia.org/wiki/Supervivencia_del_m%C3%A1s_apto) para un medio y entorno concreto (por eso, una característica que facilita la supervivencia en un desierto puede dificultarla en una jungla).

En nuestro caso la tecnología o profesional más adecuado para un proyecto, no existe “MEJOR” (más fuerte) tecnología para todos los proyectos, ni ninguna tecnología o metodología es mejor siempre y por tanto, no debe aplicarse siempre ni automáticamente.

Todo ello creo que debe hacernos reflexionar, ser más abiertos y tomar más en consideración tanto a cualquier tecnología como a cualquier profesional para evaluar y diseñar soluciones.


sábado, 26 de septiembre de 2020

No más "liderazgo", por favor.


Es muy habitual leer periódicamente artículos en distintos ámbitos, incluyendo foros profesionales como LinkedIn, acerca de las características de un “buen lider” o del “liderazgo”. Ya entrado el S.XXI, ¿No es esto muy “medieval”? ¿No suena a los consejos para ser “buen rey”? o más aún ¿No suena a recomendaciones para ser “macho alfa”?. 


 

Las sociedades más avanzadas y prósperas se caracterizan principalmente por tener una buena organización y legislación (social, laboral, educativa, sanitaria, etc.), no buenos reyes (o presidentes). ¿No debería ser igual el modelo para las empresas? ¿No debe basarse en la normativa (legislación) interna? ¿No debe “gobernar” un buen gestor por medio de la creación de normas y organización del trabajo y no tomando decisiones puntuales? ¿Quién conoce a los líderes de países situados en los primeros puestos mundiales en cuanto educación, calidad de vida o servicios sociales? (como suele asociarse tradicionalmente a los países nórdicos)

Sin entrar a valorar estas características defendidas asociadas a los "líderes", que en muchos casos son interesantes y ayudan al desempeño y funcionamiento de la empresa, quería reflexionar sobre el retraso y la falta de eficiencia que ese modelo arrastra.

¿Admitiríamos que el Ministro de Hacienda personalmente decidiera para cada contribuyente en concreto qué porcentaje de ingresos debe paga en concepto de impuestos?

No, evidentemente se exige una ley que especifique ese porcentaje en función de los ingresos, así como una serie de desgravaciones y consideraciones igualmente fijadas, para que no pueda definirse discrecionalmente.

Similarmente, ¿Podría funcionar un país en que no estuviera reglado, por ejemplo, la relación entre ayuntamientos y estado o qué nivel del estado (Central, autonómico, municipal) es responsable de la Sanidad?

Sin embargo, el funcionamiento de muchas empresas, especialmente en el área de servicios, y más aún en las de TI, sigue un modelo muy “medieval” donde la discrecionalidad es muy alta en todos los aspectos y los diversos niveles. No me refiero a los aspectos laborales que están reglamentados por leyes o convenios generales (aunque hay elementos como las horas extras o la flexibilidad horaria que cuyo respeto es muy discutible), sino a las funciones y organización interna.

Rsc src / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)

 

Creo que son escasísimas las empresas en que cada persona/categoría tiene por escrito cuales son funciones o cada departamento sus funciones y la relación con otros departamentos.

Por supuesto se puede alegar que cuando se contrata a una persona, se le contrata para un puesto. Sin embargo, eso significa muy poco por varios motivos:

  1. En muchos casos la empresa tiene unas pocas categorías dentro de las cuales caben muchísimas personas. Ser contratado como “Consultor Senior” o “Analista” no explicita claramente las funciones.

  2. En muchas ocasiones, se asigna a las personas en una categoría por su sueldo y no por sus funciones.

  3. El significado de cada categoría o puesto varía mucho entre empresas (e incluso entre departamentos).

  4. Además de las promociones, puede haber movilidad interna y asignación a otros puestos.

Así, podemos ser “Administradores de Sistemas” pero eso no indica si debo instalar TODOS los sistemas o por ejemplo solo Linux, o, siendo “Administrador de Bases de Datos” no implica si además debe instalarse y configurarse el sistema operativo sobre el que se instalará la base de datos o eso lo hará un “Administrador de Sistemas”.

Con los departamentos y áreas ocurre lo mismo. Por supuesto cuando hay reorganizaciones suele publicarse un organigrama (aunque conozco muchos casos en que brillan por su ausencia y como mucho hay una lista de directores), donde aparece, por ejemplo “Área de Ventas”, “Área de Consultoría” o “Área de Sistemas” con sus responsables correspondientes. Sin embargo, al margen de unas descripciones breves de las funciones (que básicamente explican lo que se deduce del nombre) no suele detallarse realmente las funciones ni las relaciones.

Así, por ejemplo, si el Área de Ventas necesita acudir con un técnico del Área de Consultoría para una labor de preventa para un posible cliente ¿Debe solicitarlo al área de consultoría? ¿Se le cobrará internamente? ¿Qué ocurre si hay colisiones entre las dos áreas?

Toda esta indefinición provoca, por una parte, mucha ineficiencia y falta de productividad, ya que en cada caso hay que analizar qué hacer, o no se hace ya que se espera que otra persona/equipo lo haga o en el peor de los casos se hace mal y hay que repetirlo.

Además, obliga a mucha microgestión, es decir a que cada responsable tenga que estar dirigiendo continuamente al nivel inferior, o peor aún, a varios niveles por debajo, ante la falta de reglas claras que permitan tomar decisiones sin consultar o pedir permiso. Este problema, además de en las escuelas de negocio, se ha comentado bastante en el ámbito de los juegos de estrategia en ordenador, donde se ha evolucionado desde los juegos más primitivos, que obligaban a tener que indicar continuamente a cada pieza del juego qué hacer (moverse de un punto a otro, realizar una actividad concreta, ...), hasta poder dar criterios generales (“busca recursos”, “vigilar toda esta zona”,..).

 

Four Blair Services Pvt. Ltd. / CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)

Por otra parte, esa falta de definición provoca desafección y “quema” a los profesionales. Al igual que se crea descontento ciudadano si las leyes no están claras y alguien puede ser penalizado sin que exista un motivo claro, los empleados tratados como “súbditos”, que no conocen las normas y las “leyes” a seguir y dependen de la discrecionalidad y buen (o mal) hacer de su responsable, en lugar de ser autosuficientes y tener MUY claro su trabajo, lo más probable es que acaben “emigrando”.

Además esta discrecionalidad en cuanto a tareas asignadas, funciones, etc. acaba provocando mal ambiente y sensación de “enchufe” o “persecución” al no estar claramente definido el marco de juego. Incluso aunque el responsable se comporte de forma justa y sistemática, se acaban provocando problemas y sospechas de subjetividad, difíciles de romper ya que no hay “reglas del juego” claras.

Al igual que todas las jerarquías del estado (desde un primer ministro a un alcalde) gobiernan promulgando leyes y disposiciones de diverso rango, ¿no deberían los distintos responsables “gobernar” por medio de normas, es decir definiendo los procedimientos y responsabilidades de cada área y de cada grupo profesional (grupo no desde un punto de vista laboral o de cobro de nóminas sino de funciones reales)?

Dr ian mitchell / CC0

 

No estoy planteando un modelo autogestionario o plano, que por otra parte, hasta cierto punto es básico de las metodologías agiles, el modelo más moderno y en boga de desarrollo de aplicaciones, así que tampoco es una opción a desdeñar, sino simplemente resalto la importancia de definir una organización clara y documentada (tal como hacía hincapié en un artículo anterior).

Esto es, por otra parte, el corazón de todos los sistemas de calidad (como dice la definición tradicional de calidad: “Haz todo lo que escribes y escribe todo lo que hagas”) y evita depender de la mayor o menor habilidad de todos los intervinientes (incluidos todos los escalones jerárquicos de la empresa). Si todo el mundo trabaja tal como indican los procedimientos, hay menos incertidumbre, mayor calidad y mayor rendimiento ( o competitividad, es decir producto o servicio producido por coste, independientemente de que hablemos de una empresa privada o de una institución pública).

Sin quitar importancia al valor que aporta cada persona, y a las características que un buen gestor puede aportar a cualquier equipo (no todo puede estar reglamentado, las relaciones humanas son importantes, un mal ambiente puede hundir a cualquier grupo de trabajo, etc,) pensemos en que cualquier empresa es una estructura muy compleja y la única forma de que funcione eficientemente es una buena y clara organización, conocida por todos los empleados y departamentos y documentada.

Durante esta pandemia, en que un porcentaje importante de la población, de distintos sectores y categorías profesionales, ha estado teletrabajando, y por tanto sin sus responsables respectivos "encima", hay estudios que han detectado mejoras de productividad. Al no estar en contacto continuo, probablemente ha sido necesario dar "criterios generales" para que los empleados realicen su trabajo. Esto parece confirmar que no se trata de "liderazgo" sino de organización.

En el siglo XXI lo importante no son los reyes sino los estados.....



miércoles, 12 de junio de 2019

CPDs "tuneados"


En los últimos años se está produciendo de forma exagerada lo que podríamos llamar “CPD tuneados”. Y utilizo esa expresión por comparación con esos coches que podemos encontrar por la calle, con alerones y extensiones de diverso tipo, luces por debajo y pintados con unos diseños de gusto discutible, y que sin embargo en ocasiones tienen un motor y unos amortiguadores “manifiestamente mejorables”.


"DSC01000" by carc772 is licensed under CC BY-NC-SA 2.0

De forma equivalente, nos encontramos con empresas que carecen de herramientas de gestión documental (https://pensamientocriticoti.blogspot.com/2018/02/la-maldicion-de-la-gestion-documental.html), con procesos sin automatizar con herramientas de  BPM o de Gestión de Expedientes, servidores y sistemas de bases de datos obsoletos y en general, sin los sistemas ESTRUCTURALES adecuados, pero que sin embargo están analizando cómo utilizar BlockchainBigdata o Machine Learning  a pesar de que probablemente no podrán aplicarlo o no les será de utilidad ( https://pensamientocriticoti.blogspot.com/2018/03/por-que-bigdata-no-es-para-todo-el-mundo.html ) o cómo desplegar en la Nube (Cloud) aunque en ocasiones puede resultarles más costoso o incluso ilegal de acuerdo a la normativa del país.

Hace tiempo, herramientas y tecnologías aplicables a mejorar y automatizar los procesos de una empresa, y por tanto a ser más competitivos, eran objeto de análisis y selección exclusivamente del departamento de tecnología/informática/TI y el resto de los departamentos simplemente solicitaban que se mejorara o informatizara procesos o área concretas, “como fuese”, ya fuera adquiriendo equipos, desarrollando programas o comprando productos. Es decir, los usuarios indicaban qué funcionalidad querían y los técnicos buscaban cómo ofrecerla de la mejor manera posible.

Sin embargo, últimamente diversos términos y tecnologías “se han puesto de moda”, son “cool” y desde multinacionales hasta pymes solicitan a los departamentos de TI “que instalen Bigdata”, que “apliquen Machine Learning” o que se implante cualquier otra tecnología en boga.

Por supuesto, muchas de esas tecnologías pueden ser muy interesantes y reportar beneficios pero el problema es la falta de un análisis racional antes de emprender su uso. Volviendo al ejemplo de los coches ¿Tiene sentido añadir unos alerones nuevos cuando el motor no funciona bien y los amortiguadores no prestan la amortiguación adecuada? ¿No es más racional, y aportan mayor rendimiento, el mejorar y poner a punto los elementos básicos del coche en lugar de añadir anexos que aportan poco (o incluso no aportan nada)?

 Cuando la racionalidad y el rendimiento prima, por supuesto que es así; en Fórmula 1 nadie “toca un tornillo” sin exhaustivos estudios, ya que se trata de optimizar todo (consumo, resistencia, respuesta, etc.) pero esto no tiene por qué aplicar a una persona joven orgullosa de su coche, que puede desear lucirlo ante sus amistades, ya que el beneficio puede ser de imagen, no económico.


Public Domain

Sin embargo en una empresa la productividad y el rendimiento mandan, o eso debería ser. Pero el comportamiento de muchas empresas se parece más al de la persona joven que quiere lucir el coche que al del equipo de Fórmula 1 que quiere mejorar el rendimiento de un coche. Y para ello, como “queda bien”, se emprenden proyectos costosos y en muchos casos inútiles, para implantar tecnologías innecesarias o no aplicables.

Por supuesto que puede considerarse  una inversión como mejora de imagen, ya que se ofrece una visión de empresa moderna, pero en cualquier caso analizando el coste/beneficio, lo que no suele ser el caso.

A esta “orgía tecnológica” innecesaria contribuyen muchas empresas que ofrecen un futuro maravilloso y consiguen vender proyectos costosos, y en muchas ocasiones inútiles o con pocos beneficios, en base a unas expectativas irreales o excesivas (Algunos ejemplos de que "no es oro todo lo que reluce": https://medium.com/@kaistinchcombe/decentralized-and-trustless-crypto-paradise-is-actually-a-medieval-hellhole-c1ca122efdec , https://hackernoon.com/ten-years-in-nobody-has-come-up-with-a-use-case-for-blockchain-ee98c180100 , https://www.bloomberg.com/news/features/2018-03-09/bitcoin-is-ridiculous-blockchain-is-dangerous-paul-ford ).

Pero el análisis de la eficacia o no de muchas tecnologías no es el objetivo de este texto, sino la desigualdad de medios empleados en mejorar o informatizar procesos y funciones críticas de la empresa frente a los esfuerzos invertidos en elementos “decorativos”.

En ese sentido, la participación e iniciativa de los usuarios y departamentos fuera del de TI, que es muy deseable y necesario por supuesto, no debería ser “Quiero un proyecto para implantar Bigdata/Blockchain/….” Sino “Este proceso/aplicación no es muy eficiente, convendría mejorarlo o implementarlo de nuevo” O “¿Qué sistemas podemos mejorar para que el proceso, coste o interacción con los usuarios/clientes mejore?”.

Si la respuesta a eso, tras un estudio, resulta ser que conviene implementar Blockchain/BigData/…., perfecto, bienvenido sea, pero el invertir tiempo y dinero en una tecnología por ser "moderna" nos lleva a un CPD tan “tuneado” e ineficiente como algunos de esos coches que podemos encontrar.



jueves, 7 de marzo de 2019

Los Framework de desarrollo, un "regalo envenenado"



Voy a expresar algo que, aunque a muchos desarrolladores “horrorizará”, estoy seguro de que muchos otros comparten: Los Framework  (marcos de desarrollo) son un “regalo envenenado”.

Aunque su uso está muy extendido y existen muchos Frameworks, generalmente suelo evitar su uso para los proyectos en que participo y creo que en muchos casos, a pesar de sus aparentes ventajas, son contraproducentes.

Por supuesto esto no es una norma absoluta, y hay casos en que sí me parece apropiado, ya sea por normalizar desarrollos o porque el proyecto lo requiera.
El problema es que muchos Arquitectos y Desarrolladores dan por supuesto que “deben utilizarse”, que "es la mejor opción" y “te miran como un marciano” si, por ejemplo, argumentas que prefieres no usar Hibernate.

Sin embargo, tal como predica el pensamiento crítico, no debemos asumir nada sin reflexionar. Argumento a continuación por qué no es tan evidente la ventaja.

 

Framework vs bibliotecas.

El primer punto a aclarar es la denominación de Framework de desarrollo y su diferencia con las bibliotecas de desarrollo, librerías o APIs de productos o servicios.

En cualquier lenguaje de programación, cuando hablamos de bibliotecas, nos referimos a un conjunto de funciones , métodos y clases que nos permiten realizar diversas operaciones (ordenar listas de valores, reproducir archivos de audio o video, generar gráficos, acceder a servicios o a bases de datos,  etc.). Por tanto cuando desarrollamos un programa y utilizamos bibliotecas, debemos construir y elaborar la lógica del programa, y cuando necesitamos utilizar unos servicios “especializados”, en lugar de programarlos desde cero, se acude a esas bibliotecas que alguien ha construido previamente (y que se habrán publicado como software libre o  como producto privativo, con sus correspondientes licencias). Es decir en este escenario, la lógica y el marco de trabajo lo impone el proyecto, que solo acude a las bibliotecas para algunas funciones.

En cambio, cuando desarrollamos utilizando algún framework (como AngularJS, StrutsSpringBoot  o Ruby on Rails ) el marco o modelo de trabajo lo fija el Framework, que impone una estructura, una lógica y una forma de trabajo, dentro de la cual la tarea de desarrollo del proyecto es “rellenar los huecos” (lo que no implica que sea poco trabajo, pueden ser "huecos" enormes de miles de horas de desarrollo por supuesto).


Modelo MVC usado en Frameworks como Struts (by Wooptoo [Public domain])


Comparando con un modelo más cercano a todos, si estuviéramos construyendo una estantería para nuestra casa, el modelo de desarrollo basado en librerías equivaldría a cortar las maderas a medida y, para las piezas complicadas, como cajones o elementos abatibles, comprar esas piezas ya hechas.

En cambio el equivalente a utilizar un Framework sería comprar unas estanterías con unas dimensiones fijas, y rellenar los huecos con baldas para adaptarse a nuestras necesidades.

Por supuesto el modelo no es totalmente exacto y además en ocasiones la frontera es difusa, ya que los Framework tiene bibliotecas de funciones adicionales/complementarias y las bibliotecas en ocasiones imponen una forma de trabajo. Pero como aproximación creo que es válida.

Con una biblioteca, el desarrollador “manda”, dirige el flujo y lógica e invoca las funciones deseadas cuando se necesitan-

Con un Framework, el desarrollador se “adapta” al Framework, se ajusta a esa lógica y “contrato" y es “invocado” dentro de ese modelo.

 

Ventajas de los Framework.

Por supuesto, los Framework tienen muchas ventajas:
  • Conforman un esqueleto bien estructurado, con lo que no hay que pensar en muchos aspectos (gestión de errores, verificación datos, etc.), pues ya están previstos.
  • Cuando hay un equipo grande, o varios equipos en una empresa, asegura que todos los proyectos se desarrollen igual.
  • Las personas que se incorporen a la empresa, al ser un Framework estándar, es posible que conozcan ese Framework, y pueden ser productivos antes.

Telco [Public domain]
En muchas ocasiones, y como se da por supuesto que “los Framework son muy útiles y aumentan la productividad”, solo se recuerda las ventajas, o incluso no se analiza, simplemente se utilizan porque “ahora se programa así”.
Sin embargo, “no es oro todo lo que reluce”.

 

Inconvenientes de los Framework.

Entre los principales inconvenientes, puede citarse:
  • El “sobrepeso”: Muchos Framework son “monstruosos”, e introducen una sobrecarga muy importante, lo que implica mucho más hardware para poder prestar los mismos servicios. El ahorro en tiempo de desarrollo puede no compensar el coste en infraestructura adicional.
  • La compatibilidad: En ocasiones, los Framework cambian la forma de trabajo y te obligan a cambiar gran parte del código y/o de la lógica de un proyecto. Quizá un ejemplo “sangrante” es el cambio en alguna versión de AngularJS, que lo convertía en totalmente incompatible con la versión anterior. En cambio, si una biblioteca cambia ciertos métodos o clases, es posible realizar cambios en la llamada a esos métodos, o incluso crear un recubrimiento con el “contrato” anterior, que convierta internamente las llamadas al nuevo estilo, sin afectar demasiado al grueso del programa.
  • El exceso de dependencias: Es habitual que muchos Framework arrastren muchas herramientas y bibliotecas. ¿Qué ocurre si además del Framework queremos usar otras bibliotecas, como es habitual? Esas bibliotecas, que en ocasiones requieren bibliotecas adicionales complicando aún más el escenario, pueden colisionar con las del propio Framework. El resultado es que no puedes utilizar la biblioteca que deseas y hay que buscar otras. Hay otro efecto peor, que es que la incompatibilidad surja a posteriori, es decir cuando se actualiza la versión del Framework y descubres que colisiona con alguno de los elementos que ya utilizas, lo que obliga a hacer (bastantes) cambios. Por supuesto, pueden surgir colisiones entre bibliotecas aunque no se utilice Framework, pero las probabilidades son menores y, además, siempre pueden cambiarse por otras con menos impacto que el rehacer toda la lógica.
  • La continuidad en el tiempo: Si una biblioteca desaparece, se cambia por otra con relativo esfuerzo. Si un Framework desaparece, hay que “rehacer” el proyecto.
  • El aprendizaje: Los Framework suelen ser grandes y complejos, lleva tiempo aprenderlos y entender la lógica y empezar a desarrollar bajo ellos.
  • La evolución: Al ser muy grandes, la evolución puede ser lenta y no estar disponibles para, por ejemplo, la última versión de Java, base de datos, navegador o sistema operativo.

 

¿Hay alternativas?

Si se desea acelerar el desarrollo, aumentar la calidad (evitando errores) y seguir una estructura común (para facilitar la movilidad entre equipos). ¿No hay más remedio que utilizar Framework?

No necesariamente, hay diversos recursos:
  • Crear un mini-Framework propio, creando una estructura de clases que gestionen el esqueleto, incluyendo todos los controles de errores y escenarios necesarios, y dejando que los proyectos creen subclases y sobrecarguen los elementos necesarios. No serán tan sofisticados como un framework, pero a cambio:
    • Estarán más adaptados a nuestros desarrollos y negocio
    • Serán mucho más ligeros
    • No se depende de terceros y por tanto pueden evolucionarse como nuestros desarrollos requieran.
  • Crear patrones internos, de forma que los desarrollos tengan un modelo o proyecto tipo, que se copie y cambie.
  • Definir normativas y recomendaciones internas.
  •  . . . .

 

Conclusiones

Creo que si se desea un nuevo proyecto (o reorganizar un equipo de desarrollo), antes de asumir que se utilizará el Framework XYZ (o al contrario, asumir que NO se utilizará NINGÚN Framework) es imprescindible plantearse preguntas como:

¿Cuánto ahorro en tiempo de desarrollo frente a cuánto tardo en aprenderlo?
¿Aprovecho el 100% del Framework o solo un pequeño porcentaje?
¿Es más eficaz utilizar uno o construir uno mismo un pequeño framework o librerías?
¿Es estable o puede cambiar?
¿Qué sobrecarga introduce en términos de recursos de máquina requeridos?
¿Es válido para muchos proyecto o solo este?
¿Arrastrar muchas librerías? ¿Cuales?
¿Qué limitaciones de ejecución y plataforma me impone?
. . .

Una vez sopesadas todas las opciones, con una visión crítica podremos elegir la más adecuada que en ocasiones podrá ser la que inicialmente esperábamos como “normal” y en otros casos no, pero en cualquier caso habrá sido una decisión sopesada y SIN ASUMIR nada.


domingo, 21 de octubre de 2018

Productividad=Organización+Documentación


Básicamente se define productividad como la relación entre la producción obtenida (servicios, productos, ..) y los recursos empleados en la producción (materiales, personal, tiempo, etc.).

Lamentablemente, en muchas ocasiones se asocia mentalmente “productividad”,  a “lo que produce cada empleado”, es decir, “lo que se obtiene de cada sueldo” por lo que la forma de aumentar la productividad es que los empleados “trabajen mucho y cobren poco”. Aunque eso desde luego reduzca los costes, es tan erróneo como plantear que “se aumentará la productividad si no se compran ordenadores”, ya que “reducimos los costes” o que “el reparto se haga andando, para evitar la compra y mantenimiento de vehículos”.

Creo que en ámbito de las TI (como casi en cualquier otro sector por otra parte) los elementos más importantes para mejorar la productividad son la organización y la documentación. Desde luego también es importante el contar con buenos profesionales y con buenos instrumentos (tal como he argumentado anteriormente [La "barrera del sonido"]y[El altísimo coste del “ahorro” en ordenadores y equipamiento], aunque no dentro del enfoque de la productividad).

Sin embargo el mejor técnico y el mejor ordenador son casi inútiles en una entorno de trabajo desorganizado e ”indocumentado”, y lamentablemente eso es algo demasiado habitual.

 

Algunos ejemplos


Quizá el ejemplo más claro que conozco de cómo mejorar la productividad es este:




Un banco de alimentos creado tras unas inundaciones en Nueva York, organizado por una persona de buena voluntad y con mano de obra voluntaria mejoró espectacularmente su productividad  (cantidad de lotes de comida repartida) simplemente organizando mejor su trabajo y con unos mínimos costes.

Por otra parte, en el aspecto negativo, hay muchos ejemplos de tiempo perdido por falta de organización o documentación.
Por ejemplo:

  • ¿Quién no ha tenido que rehacer un proyecto porque, tras estar parcial o incluso totalmente desarrollado, un área con la que no se ha contado introduce nuevo requisitos o vetos debido a que no se cumple ciertas características? Si el proceso de definición de un nuevo proyecto (con todos sus intervinientes y momentos de intervención) estuviera definido, no se produciría esta pérdida. Todo esto es un coste evidente que  afecta negativamente a la productividad Ya que el resultado obtenido puede haber costado en ocasiones el doble de lo que costaría con un circuito bien definido.

  • ¿Quién no ha sufrido retrasos debido a que no está especificado quien debe aprobar/revisar/arreglar/instalar algún elemento? En ocasiones todo un equipo implicado en un proyecto tiene que esperar a que se confirme (o improvise) un circuito. De nuevo, son muchas horas perdidas debido a esta carencia. Incluso aunque el equipo implicado pueda ocuparse en otras tareas, siempre hay un tiempo empleado en la búsqueda, hay una pérdida de tiempo hasta que se decide que ”no se sabe” y sobre todo, de oportunidad al no cumplirse plazos.

  • Otro ejemplo habitual es la no disponibilidad de un ordenador cuando se incorpora un empleado. Estos retrasos pueden llegar a ser de 1 mes, y es evidente que, dado que es necesario un preaviso en su empresa por parte del futuro empleado, preparar el nuevo contrato en la empresa contratante, etc. se dispone de al menos 15 días desde que se sabe que se va a contratar a una persona concreta para un puesto concreto. Un circuito bien organizado puede asegurar que todo el equipo y elementos necesarios estén disponibles. De nuevo es un problema organizativo que, de no estar bien estructurado, es muy costoso.

 

Realmente no es tan difícil y merece la pena 

 

Todos estos escenarios representan costes que hacen que la productividad (recordemos, producto obtenido frente a costes/recursos aportados) se reduzca y que con un mínimo de organización pueden minimizarse. Puede argumentarse que es difícil calcular los costes, pero no lo es tanto.

Por ejemplo que un nuevo empleado esté 2 semanas sin ordenador (es decir unas 80h improductivas), asumiendo un salario de solo 24.000€, lo que implica unos costes de unos 20€/h, equivale a 1600€. En el caso de un proyecto que hay que modificar o retrasar, desde luego es más difícil, pero puede hacerse una estimación de riesgos (al igual que las compañías de seguros con los accidentes) teniendo en cuenta el coste total del proyecto y la probabilidad de cambio (que puede afirmarse que es casi “inversamente proporcional a la calidad de la organización”).

En cuanto a la documentación, suele estar igualmente “olvidada”. La documentación, en el mejor de los casos está en una herramienta de colaboración, y en la mayoría, en una carpeta de red o incluso en los equipos personales. No es demasiado habitual que esté en un gestor documental, que como su nombre indica, es la herramienta adecuada para gestionar documentos. Parece ridículo tener que recordarlo, pero lamentablemente pocas empresas tiene su documentación en un gestor documental. 

El resultado es que se emplea mucho tiempo buscando documentación (o bien porque puede estar en múltiples localizaciones, o bien porque no puede localizarse al estar incorrectamente catalogada y clasificada, con los metadatos adecuados o no está clara la última versión.

Todo ello conlleva pérdidas de tiempo, y en el peor de los casos, toma de decisiones incorrectas al basarse en documentación obsoleta, por ejemplo asumir comportamientos de versiones anteriores, o funcionamiento bajo versiones de infraestructura (Sistema Operativo, base de datos, versiones de java, servidores Web o J2EE,..) obsoletas o fuera de soporte.

Mención aparte merece la “calidad” de la documentación, independientemente del lugar en que se almacene o la corrección de su catalogación. Aunque cada vez es menos frecuente, sigue siendo bastante habitual que el “becario” o alguien “que pasa por allí”, se encargue de la documentación de muchos proyectos tecnológicos. Como consecuencia, esa documentación en muchas ocasiones simplemente detalla lo que hace la aplicación (cosa que por otra parte puede verse viéndola trabajar) y los componentes que tiene (lo que puede verse revisando el código fuente y el paquete de instalación) pero no explica realmente el funcionamiento interno, o porqué se han tomado ciertas decisiones. Es decir la información realmente importante y que conocen los perfiles más implicados en el desarrollo y con más experiencia.

Al final la productividad en muchos casos se reduce a la mitad (y no es exageración, he visto proyectos que han duplicado la carga de trabajo prevista, debido a problemas como los anteriores), algo que podría evitarse simplemente con mejor organización y documentación.


viernes, 18 de mayo de 2018

La "barrera del sonido"


Recuerdo haber oído esta expresión a dos empleados de recursos humanos tomando un café, hace muchos años en una consultora en que trabajaba. Se referían a un candidato que había “traspasado la barrera del sonido”, es decir, había superado cierta edad (desconozco si podían ser 40 o 50 años), lo que prácticamente lo descalificaba para el puesto.

Aunque el tema de la edad laboral se ha tratado en numerosas ocasiones por especialistas, y aunque parece ridículo tener que argumentar sobre algo tan evidente, especialmente en el ámbito de las Tecnologías de la Información que es el que mejor conozco, creo que no está de más volver a reflexionar sobre el alto coste económico que tiene para una empresa de Tecnologías de  la INFORMACIÓN el “tirar a la basura” toda esa INFORMACIÓN y experiencia que albergan empleados a los que se prejubila o que tienen esos candidatos a los que no se contrata.
Quizá lo primero a destacar que es creo que este modelo es principalmente aplicable a España. Los datos de que dispongo, tanto obtenidos desde Internet como directamente de otros profesionales (compañeros o proveedores) que trabajan en otros países, muestran que no ocurre, o no con tanta frecuencia, en otros países.

By Internet Archive Book Images, via Wikimedia Commons

Escenarios de “derroche”


Creo que en las empresas de TI hay tres formas en que se desperdicia el capital humano por la edad:
  • Estructura de la carrera profesional
  • Prejubilaciones y despidos
  • No contratación por edad

 

Estructura de la carrera profesional


En la mayoría de las empresas de TI no existe REALMENTE una carrera profesional PROLONGADA que permita a un buen técnico seguir evolucionando en su carrera aumentando el RECONOCIMIENTO profesional y el SUELDO.
En gran parte de las empresas de tecnología la evolución implicar dejar de ser técnico y convertirse en gestor (si se desea que el sueldo y el reconocimiento aumenten). Esto provoca que, en ocasiones, la empresa pierda un buen técnico y adquiera un mal gestor (según el clásico Principio de Incompetencia de Peter ).
Por supuesto no quiere decir que todos los jefes de proyecto deban proceder carreras de gestión (es habitual ver resultados desastrosos cuando alguien que no conoce las singularidades y características del desarrollo de software intenta gestionar o dirigir el trabajo, por lo que es recomendable que la gestión la realicen personas con experiencia en tecnología), sino que la evolución debe ser por convencimiento e interés y no de forma “forzada” para no quedarse estancado.
El resultado es que esa experiencia y conocimientos se pierden y la empresa, que posiblemente ha sustituido en  su “pool” de técnicos un perfil “caro” por uno “barato”, en lugar de aumentar su beneficio, pierde en eficiencia (produce más barato pero probablemente  más lento y con peor calidad) y posiblemente pueda tener más errores o retrasos, con los costes asociados.
Esto desde luego no ocurre, o no de forma tan acusada, en otros países (basta comparar las bandas salariales o las ofertas de empleo habituales en España y otros países). Esto se evitaría si, como ocurre en otros países, puedes encontrar un programador con 60 años al que todo el mundo consulta y respeta  al que se encarga los proyectos difíciles y pide asesoramiento.

Prejubilaciones y despidos


A lo anterior hay que sumar los despidos o prejubilaciones a partir de una edad. El argumento, que en algunos casos puntuales es cierto, de dificultad o incapacidad para reciclarse, en la mayoría de los casos no tiene ningún soporte objetivo.
El mundo de las TI ha cambiado radicalmente cada pocos años y la mayoría de los profesionales han tenido que aprender nuevas herramientas y sobre todo nuevos paradigmas y tecnologías.
El despido de esos profesionales que conocen los proyectos y herramientas de la empresa, dado que muchas veces la documentación es incompleta, o incluso no existe, hace que se pierda mucho valor y mucha productividad.
En el mejor de los casos, se perderán varios meses hasta que una nueva persona, sin experiencia, aprenda todos los detalles, por lo que el ahorro en salarios debe minorarse restando todos esos meses improductivos.
En el peor, no habrá nadie capaz de asumir la tarea, o quien la asuma lo hará con errores que tiene un coste.
Y ese coste puede ser muy grande (indemnizaciones a clientes, perdida de muchas horas de trabajo de empleados,..).
Lamentablemente no se suele imputar esos errores o pérdidas al departamento que “ha ahorrado” sino que en ocasiones parece atribuirse a “una conjunción de astros” o a “lo complicada que es la informática” por lo que no hay forma de comparar el impacto real de esos “ahorros”.
Una imputación real de lo que cuesta esos “ahorros” sustituyendo a profesionales avezados por becarios posiblemente mostrara cifras mucho peores y probablemente costes mayores.
Nadie responsable plantea usar tornillos de mala calidad para utilizarlos en piezas estructurales y sin embargo sí se considera “normal” prejubilar a profesionales “de calidad” y sustituirlos por profesionales sin experiencia. La diferencia es que cuando un tornillo se rompe y la empresa tiene que pagar indemnizaciones, las responsabilidades y la causa suele ser más clara, mientras que si un desarrollo falla y la empresa tiene que asumir indemnizaciones, la causa no siempre se plantea de forma tan clara.
Por último, como ejemplo claro del absurdo a que se llega, conozco al menos dos casos de empresas que prejubilaron a técnicos (con su indemnización correspondiente) y tras descubrir que nadie conocía cómo hacer su trabajo, tuvieron que contratarles de nuevo como consultores externos (con sus costes extras).

No contratación por edad


Los casos anteriores se producen con empleados dentro de la empresa, pero un porcentaje importante de los casos se produce por la no contratación de profesionales que han superado cierta edad.
Desde luego en este caso no aplica la obsolescencia de conocimientos o imposibilidad de reciclar, ya que si no conocen la tecnología o disciplina para la que se les requiere, no hay por qué contratarles, independientemente de su edad.
Por tanto el único motivo puede ser la edad, y en ocasiones, su banda salarial, que puede ser más alta que la de un recién licenciado. Como en el caso anterior, parece claro que la productividad y calidad compensan (en gran parte de los casos) el coste sobre un recién licenciado.


Lamentablemente, parece que estas “manías” (no he encontrado en mi vida nadie que sea capaz de dar una argumentación coherente a este tema, por lo que solo puede tacharse de “moda” o “manía”)  se extienden a algunas empresas que mantenían un criterio coherente: https://www.elconfidencial.com/alma-corazon-vida/2018-05-04/empresas-trabajar-discriminacion-edad_1558692/

0 A.D. game Wildfire games (CC)
Es curioso, que ahora que está tan de moda la gamificación, y que además hace tiempo que se considera que los juegos permiten aprender técnicas y estrategias luego aplicables a la vida empresarial, no se recuerda algo que cualquier jugador de juegos de estrategia conoce:

En la mayoría de juegos de estrategia, la táctica ganadora pasa siempre por tener pocos soldados muy bien equipados y con mucha experiencia  (“caros”) y no en tener muchos  “baratos”. 

Y eso se lleva aplicando desde hace siglos al juego de estrategia por antonomasia, el ajedrez. Ningún jugador cambiaría una reina por dos o tres peones.

By User:Mutante [CC], from Wikimedia Commons


Como en otros casos, esperemos que una revisión crítica de los costes e impacto real de los “ahorros” en personal, al igual que he comentado respecto al material de trabajo  reconduzca la situación.


viernes, 16 de marzo de 2018

Por qué Bigdata no es para todo el mundo.

En estos últimos años ha “subido como la espuma” el interés por Bigdata. Parece que no hay empresa que no considere que debe invertir en Bigdata ni profesional que no considere que es un sector de futuro. Sin embargo, como indica el título de esta entrada, creo que Bigdata “no es para todos”, por su propia esencia.

By Magnai17 (Own work) [CC], via Wikimedia Commons

 

Repasando Bigdata.

Como es sabido, Bigdata (llamado en ocasiones Macrodatos en castellano) es un concepto que hace referencia a enormes volúmenes de datos, que no pueden ser tratados con las bases de datos tradicionales.
Los proyectos de Bigdata no solo se caracterizan por la cantidad de datos; tradicionalmente se ha definido que tienen tres características, las 3 V: Volumen, Velocidad, y Variedad.

  • Volumen hace referencia a la cantidad de los datos. Cuando se habla de Bigdata, estamos hablando de volúmenes MUY  grandes, de las decenas de TERAS en adelante, es decir hablamos de almacenar un mínimo de 10.000.000.000.000 caracteres. Los expertos en Bigdata suelen recomendar otras tecnologías para volúmenes inferiores, aunque sean “muy grandes”.  Para hacerse una idea de lo que implica, si pensamos que una llamada de teléfono se puede almacenar usando 11 dígitos del “llamante”+11 dígitos del llamado+5 de la duración+12 de la fecha hora, es decir 40 dígitos (realmente sería la mitad en base de datos, pero obviamos eso de momento) y dividimos 10Teras/40/50 Millones de habitantes, eso nos da que estaríamos hablando de 5.000 llamadas de cada habitante de España. Otra comparación podría ser el pensar en movimientos bancarios. Si contamos 50 caracteres por movimiento y pensando en un banco que tenga 10M de cuentas, nos da 20.000 movimientos (transferencias, entradas, etc.) de cada cuenta/cliente.
  • Velocidad hace referencia a la cantidad de datos que deben incorporarse por unidad de tiempo. Se trata de sistemas donde se puede generar cientos de miles de entrada por hora. Lógicamente, para alcanzar esos volúmenes no puede alimentarse con unos pocos registros cada hora, ya que se tardaría años en rellenarla la información.
  • Variedad hace referencia a la variedad de datos a manejar INCLUSO para la misma tabla/entidad. Es decir, no se trata de manejar 10 millones de asientos contables todos iguales sino de intentar manejar “juntos” elementos caracterizados por distintos metadatos.

Estos requerimientos han provocado que se utilicen tipos de herramientas distintas a los gestores de bases de datos tradicionales. Generalmente se utilizan Bases de Datos NoSQL como MongoDB , Cassandra o HBase  que utilizan un modelo no relacional .

El hecho de prescindir de la normalización de la base de datos  y de recursos habituales en las bases de datos “tradicionales” como transacciones (es decir poder agrupar las operaciones en paquetes de operaciones coherentes, de forma que se haga todo o nada), claves únicas (es decir asegurar que no se introduzca dos veces el mismo valor) o claves ajenas (que asegura que no se referencia una entrada que se borra por otra operación) elimina muchas de las sobrecargas sobre los sistemas  tradicionales, permitiendo velocidades de ingestión de los datos mucho mayores (al no tener que realizar comprobaciones de los valores), y una escalabilidad muy grande (al poder distribuirse la carga entre muchos nodos que no deben mantener la coherencia).

En cualquier caso, aunque no sean bases de datos “tradicionales” que tengan un modelo totalmente normalizado hasta la 3ª o 5º forma normal, siguen siendo bases de datos, es decir tiene una estructura de información, la diferencia es que podemos tener, por ejemplo, una factura con todos sus ítem en una “tabla”, algo que en un modelo normalizado requeriría dos o tres tablas.

En ocasiones surge cierta confusión en cuanto al uso, asumiendo que, por ejemplo, pueden utilizarse para clasificar textos, área para la que están mucho más preparadas herramientas como las herramientas de NLP (Natural Language Processing: Procesamiento del lenguaje natural), Machine Learning,  o Content Analytics. Ese sería otro ámbito de trabajo con otras características.


Courtesy NASA/JPL-Caltech [Attribution or Public domain], via Wikimedia Commons

Por qué no es para todas las empresas o instituciones.


La variedad de datos se da en muchos ámbitos y modelos que puedan realizarse de actividades humanas, sin embargo,

 ¿Cuántas actividades humanas generan esa cantidad de datos?

Y lo más importante

¿Cuántas empresas e instituciones tienen acceso, generan o reciben esa cantidad de información?

Como puede verse por las cifras, no es muy habitual manejar esa cantidad de información.
Y si se trata de cifras inferiores, NO es Bigdata, o NO es adecuado tratarlo con herramientas de Bigdata.
Debe además descontarse los escenarios donde se manejan millones de datos pero son texto (por lo que aplicarían las herramientas de manejo de textos antes citadas).

Por último un detalle menor.
Aunque después de frases famosas como la atribuida (incorrectamente ) a Bill Gates acerca de que “640K deben ser suficientes”  o la del presidente de IBM  Thomas J. Watson en 1948 de “Creo que habrá mercado mundial para cinco computadores” es muy “arriesgado” hacer previsiones, y aunque los costes de almacenamiento e infraestructura de ordenadores han bajado mucho y siguen bajando, a día de hoy manejar toda esa información de forma rápida y eficiente sigue siendo caro y complejo.

En cualquier caso es un obstáculo menor, que perderá cada vez más peso frente al problema principal de cualquier empresa o institución: ¿De dónde obtengo información que justifique el uso de Bigdata?


By Magnai17 (Own work) [CC], via Wikimedia Commons

Por qué no es para todos los profesionales.


En ocasiones se leen opiniones de profesionales que manejan otros tipo de información (contenidos, documentación, etc.) acerca de lo cercano o adecuado que es su perfil para volcarse en el mundo de Bigdata. Sin embargo, aunque sea un nuevo sector, no hay que olvidar que se trata de manejar bases/volúmenes de datos. No seguirán un modelo relacional, pero siguen un modelo, con sus columnas, conjuntos de metadatos, sus relaciones, su integridad mayor o menor, incluso sus transacciones (recientemente MongoDB ha cubierto esa carencia  ).
Quien no haya manejado esos conceptos, reflexionado sobre como optimizar un modelo de datos, crear índices o resolver problemas de rendimiento en una base de datos con 20 millones de registros, posiblemente no pueda sacar rendimiento de un proyecto de Bigdata.
Al igual que no es lo mismo un pintor que tras dominar el arte figurativo evoluciona hacia el abstracto que alguien que no sabe pintar y hace cuadros “abstractos”, no es lo mismo alguien que domina las bases de datos y evoluciona a Bigdata que  alguien que nunca ha trabajado con bases de datos.
Por supuesto todos podemos reciclarnos, formarnos y aprender nuevas disciplinas, al igual que puede haber expertos en bases de datos que se queden anclados y no sepan dar el paso a Bigdata (como puede ocurrir a un pintor que no sepa dar el paso a arte abstracto), solo quiero resaltar que, en principio, por su  experiencia y bagaje técnico, los profesionales especializados actualmente en bases de datos (administradores de bases de datos, diseñadores de bases de datos, expertos en data DataWarehouse, etc.), así como los expertos en análisis de datos y estadística son los que tendrán más facilidad para poder enfrentarse con proyectos de Bigdata.

Conclusión


Para no dejarse arrastrar por la ola de entusiasmo, creo que lo más recomendable para las empresas e instituciones, antes de plantearse iniciar un proyecto de Bigdata, sería reflexionar sobre:
  1. ¿Tengo en mis procesos y sistemas de información esos volúmenes de datos?
  2. Si se trata de información que no puede/debe tratarse con un modelo relacional ¿no bastaría plantearse el uso de una base de datos NoSQL con un modelo no normalizado?
Y para los profesionales que se plantean acercarse a ese mundo:
  1. ¿Pretendo CONOCER Bigdata (una disciplina nueva e interesante) o TRABAJAR en Bigdata?
  2. Si pretendo trabajar, ¿Mis conocimientos y los cursos que estoy evaluando son suficientemente profundos y adecuados?

jueves, 8 de febrero de 2018

La "Maldición" de la Gestión Documental.

Si a cualquiera se le cuenta que hay "ALGO" que TODAS las empresas e instituciones necesitan, o que, si no necesitan literalmente, de su uso obtienen unos enormes ahorros y eficiencias, creo que a los más emprendedores les surgiría la pregunta: “¿Qué es eso? Vamos a dedicarnos a ofrecerlo y nos ‘forramos’ ”.

Si además se añade que TAMBIÉN lo necesitan gran parte de los autónomos y que, una vez instalado, dadas las normativas o la dificultad de migración es posible que deba usarse un mínimo de 6 años y hasta 30 o 40 años, según a qué se dediquen la empresa o institución, la siguiente exclamación sería: “ ¡ Pero esto es la ‘gallina de los huevos de oro’ !, Millones de clientes potenciales que además del software necesitarán servicios añadidos durante años, y, dado que  produce grandes ahorros y eficiencias, se venderá muy bien, ya que enseguida recuperas la inversión. Las personas y empresas que se dediquen a esto deben estar muy solicitados”.

Por supuesto me refiero a la gestión documental (entendida como la implantación de procesos y herramientas que permitan registrar, almacenar, automatizar y compartir documentos), y no, tristemente la respuesta es que, aunque racionalmente debería haber mucho “movimiento” en torno al software y servicios de gestión documental, esta no se “vende” nada bien.

Las empresas e instituciones:
  • Pueden invertir miles de euros en aplicaciones o proyectos que no les reportan beneficios, mientras mantienen una gestión de la documentación del siglo XV; a nadie se le ocurre actualmente llevar la contabilidad o la gestión “a mano” y sin embargo la documentación se sigue manejando en papel y sin un gestor documental que la albergue; o los documentos electrónicos se envían por correo y se “guardan” en una carpeta de red.
  • Pueden cambiar cada 3 años de aplicación de contabilidad, ERP o nóminas cuando no tienen un solo software gestor documental para manejar los documentos electrónicos.
  • Pueden tener falta de espacio en las oficinas (con los enormes costes que ha ido alcanzando los alquileres) cuando podrían eliminar miles de papeles (en muchos casos fotocopias) simplemente digitalizando.
  • Siguen enviando los documentos en papel por medio de la valija interna (con los costes de transporte asociados) y retrasando los procesos hasta que se reciben los originales cuando podrían digitalizar, destruir las fotocopias y enviar los pocos originales a un centro de custodia situado “en medio del campo” y con costes mínimos.
Mientras tanto, no hay demasiadas empresas ni profesionales que se dediquen a ello, no hay demasiadas ofertas de empleo, los profesionales no están bien considerados y se cierran facultades y grados.

Y todo ello en un sector maduro tecnológicamente, donde existen muy buenos productos de gestión documental, tanto gestores documentales (el núcleo de la gestión documental) como herramientas de clasificación automática de documentos, conversión de formatos, procesos/BPM, gestión de expedientes, Record Management, motores de búsqueda por texto completo, etc.

Document-management-workflow (By Silver Blue)
Donde además de software con licencia comercial, hay software libre y/o gratuito, lo que, junto con la continua ampliación de la capacidad de almacenamiento y proceso de los ordenadores y abaratamiento de precios, permite que lo que hace años requería sistemas costosos y propietarios (como los Jukebox de discos ópticos) para almacenar imágenes, represente costes muy inferiores de puesta en marcha actualmente.

Parece como si hubiera una especie de “maldición” que hace que la gestión documental se mantenga en un agujero.

Dado que la idea de “maldición” repugna a cualquier espíritu racional, quería reflexionar sobre alguno de los posibles motivos que provocan este atasco. Como grandes razones, creo que puede resumirse en la combinación de tres factores:
  • Complejidad
  • Desconocimiento
  • Inercia


By KNOWLEDGE BASED SYSTEMS, INC. [Public domain], via Wikimedia Commons
 Complejidad:

Quizá el principal motivo es la complejidad. La gestión documental es MUY compleja en sí misma. Diseñar un proyecto de gestión documental tiene limitaciones y problemas que no tiene otros proyectos de tecnologías de la información:

Volumen: Abrir una cuenta en un banco o un siniestro enuna compañía de seguros puede representar unos pocos registros en una base de datos, totalizando 1000 o 2000 caracteres (1Kb o 2Kb). Sin embargo los documentos asociados a esa cuenta (contrato, DNI, Nómina, cartulina de firmas, documentos Mifid,..) o ese siniestro (fotos, grabación de audio, parte amistoso,..) pueden representar varios megas de información, es decir cerca de 1.000 (MIL) veces más de información, que hay que almacenar, clasificar y procesar. Eso representa un esfuerzo de dimensionamiento, infraestructura, diseño y rendimiento mucho mayor. Si además se desea buscar por el contenido de los documentos, deben crearse índices, lo que puede doblar el almacenamiento necesario, siendo entonces de 2.000 veces mayor. Ese volumen además de almacenarse debe subirse y descargarse en un tiempo razonable, lo que representa  un esfuerzo en infraestructura (servidores, ancho de banda, almacenamiento,..)

Legislación y normativa: Dado el carácter “legal” de muchos documentos (una entrada en una base de datos no demuestra nada, pero un contrato firmado, una carta o una grabación, sí) hay muchas normas que pueden aplicarse y que hay que tener en cuenta al diseñar el sistema. Como complicación adicional, hay documentos utilizados para un proceso que, aunque el proceso en sí pueda no ser complejo o confidencial, pueden arrastrar restricciones propias del documento. Por ejemplo, una declaración de la renta o una nómina, utilizada para abrir una cuenta, pedir un crédito o solicitar una plaza escolar, puede contener datos de desgravaciones por discapacidad, donaciones a un partido político o a una congregación religiosa, lo que podría considerarse como información cubierta por el nivel 3 de la L.O.P.D., y sujeta a unos procedimientos y tratamiento específicos. El caso, cada vez más frecuente, de los documentos electrónicos firmados electrónicamente o que contienen datos biométricos, estaría igualmente sujeto a una serie de restricciones, independientemente del contenido en sí del documento, que puede ser trivial.

Seguridad: La seguridad en los gestores documentales es muy sofisticada, para poder dar soporte a todos los condicionantes legales, así como a las necesidades propias del proceso de la institución (permisos restringidos en función del departamento o función del usuario, del estado o tipo documental del documento, traza de operaciones, control y bloqueo de versiones, etc...). El diseño y mantenimiento de esa seguridad (que además puede cambiar por normativas, reorganización o cambios de personal) es muy complicado.

Distribución: Al no estar aún legislada la validez de los documentos electrónicos, salvo excepciones en algunos ámbitos como la digitalización certificada de facturas, la mayoría de los intercambios de documentación entre empresas, instituciones y personas se sigue realizando en soporte papel. Esto implica que puede recibirse documentos en papelen diversos lugares, repartida por delegaciones y ciudades, lo que complica el diseño de los procesos. ¿Desplegar escáner por diversos puntos? ¿Enviar documentos a un centro de digitalización? ¿Quién y donde clasifica y asigna metadatos? Si quien asigna metadatos no es quien recibe el documento ¿Cómo se transmite esa información de la persona o expediente a que corresponde el documento, ya que podrían no estar en el propio documento?...

“Autoservicio”: Cada vez es más frecuente que los usuarios de un servicio, empresa o institución, puedan trabajar con un modelo de “autoservicio”, reservando viajes, abriendo cuentas, contratando seguros o declarando siniestros, y eso implica en muchos casos el suministro y descarga de documentos.  Que un usuario aporte sus documentos, por una parte elimina trabajos (no hay que digitalizar, registrar ni asociar el documento a un usuario o expediente) pero añade otras tareas y problemas asociados a este “autoservicio” (¿Qué ocurre si no se suministra el documento solicitado sino “una foto de las vacaciones”? ¿Y si el documento está caducado? ¿Y si está incompleto? ¿Y si esta borroso u oscuro y no es legible? ¿Y si es de otro usuario? ¿Y si el formato es obsoleto y no puede abrirse?...). El diseño de proyectos de este tipo implicará procesos más complejos de verificación, conversión, clasificación y extracción de metadatos, etc. Tareas todas ellas que pueden hacerse de forma manual o automática (existen productos que permiten hacerlo con muy buenos resultados) pero que en cualquier caso implican un proceso, infraestructura y software más complejos. A todo lo anterior, hay que añadir que el usuario cada vez tiene más acceso a su “expediente” de alguna forma (sea ante la Administración de Hacienda para ver las declaraciones, ante la operadora de telefonía o ante la compañía de seguros) lo que aumenta el número de usuarios del sistema desde unos pocos usuarios internos a miles de usuarios potenciales, con las implicaciones de seguridad, formación y rendimiento.

Múltiples formatos: A todo lo anterior, hay que añadir que los documentos pueden estar en múltiples formatos. Puede almacenarse un contrato como grabación de audio mp3, un parte de accidente puede contener un video como mp4 y desde luego podemos tener documentos en diversos formatos de imagen (tiff, png, jpg,..) o documentos ofimáticos (pdf, docx, odt, xls,..). Pero es que además, para “rizar el rizo”, cada uno de esos formatos suele tener múltiples variantes, como ha sufrido todo el mundo, al intentar abrir documentos ofimáticos (incluso con software del mismo fabricantes) que se distorsionan o no pueden abrirse, o al comprobar las múltiples variantes de codificación de ficheros del mismo formato/extensión, ya sea de audio, video o imagen. Esto obliga a un esfuerzo de conversión/normalización al recibir, visualizar o enviar, o incluso al procesar en las distintas piezas del proyecto (por ejemplo puede ocurrir que el escáner o dispositivo multifuncional solo genera imágenes tiff en formato lzw, el componente de clasificación REQUIERE tiff en codificación CCITT G4 y el programa de visualización REQUIERE tiff en codificación jpg).

Transversalidad: El último aspecto de la complejidad es la transversalidad. Otros proyectos tecnológicos pueden estar más acotados a un área o departamento, pero los proyectos de gestión documental, por su propia esencia, rápidamente se extienden e implican múltiples áreas (horizontales y verticales). Por ejemplo un proyecto de digitalización de expedientes afectará, por supuesto a la propia área implicada que maneja esos expedientes, pero también a Logística (al variar el volumen de papel almacenado al momento y en su caso al transporte o valija usado), a Seguridad (al tener que definir un modelo de seguridad nuevo), a Legal (ya que hay que revisar si los documentos están cubiertos por alguna normativa), a Marketing/comunicación (ya que si se diseña correctamente los documentos y formularios que genere la institución, puede automatizarse enormemente el tratamiento automático de los mismos cuando se reciben digitalizados, llegando incluso al 95% ) y  además a otras áreas, ya que lo más habitual es que se compartan documentos entre expedientes  de diversas áreas, que deben coordinarse por eficacia y eliminación de duplicidades.
Por ejemplo si se contrata un seguro de hogar y un seguro de automóvil, no tiene sentido que se solicite varias veces el documento de identidad y otros documentos, aunque la gestión la lleven diversas áreas, o el paradigma que se ha planteado repetidamente de que “la administración no debe pedir al ciudadano documentos que ya tenga de él”.

Es normal que, con todo lo anterior, los proyectos sean complejos y las herramientas sean complejas. Para poder realizar un buen diseño hace falta que tanto los profesionales que diseñan el sistema/servicio (ya sean internos o externos) como los usuarios que solicitan/adquieren el proyecto o actúan de patrocinadores del mismo, dominen el tema o al menos tengan una visión clara de su complejidad e implicaciones.

Lo que nos lleva al siguiente punto.


Desconocimiento:


Ante un escenario tan complejo, lo lógico sería acudir a especialistas y estudiar con detenimiento el problema y sus soluciones, sin embargo, todos manejamos documentos en papel, escribimos documentos ofimáticos, tomamos fotos y guardamos documentos en carpetas del ordenador, lo que crea una errónea sensación de dominio.
Empezando cronológicamente por el primer eslabón de la cadena, los usuarios de la entidad que requeriría el sistema, es habitual que se desconozca tanto las posibilidades técnicas que ofrecen las herramientas y tecnologías actuales, como las normativas aplicables o las recomendaciones y estándares internacionales. El resultado es que lo que se solicita en ocasiones no es lo que realmente necesita la entidad.
Esto se complementa con que en ocasiones la empresa que realizará el proyecto no aclara las dudas o alternativas y a veces directamente no propone la solución adecuada (ya sea por desconocimiento o por vender SU solución).
Si la empresa encargada del proyecto no cuenta con técnicos especialistas en gestión documental, es posible que, aunque cuente ton técnicos excepcionales, no construyan una buena solución debido a las complejidades antes indicadas, así como a la riqueza y complejidad de desarrollo de muchas de las herramientas.
Finalmente, el despliegue de las soluciones por parte de los administradores, debido a los volúmenes y rendimientos implicados, requiere un ajuste y dimensionamiento adecuado de los servidores e infraestructura, para lo que se requiere, de nuevo, cierta especialización.

Por supuesto que hay usuarios con las ideas muy claras y gran conocimiento de la gestión documental, buenas empresas con grandes técnicos, y administradores de los sistemas capaces de obtener buenos rendimientos, pero no es el caso mayoritario, y además no siempre coincide, de forma que aunque quien solicita una solución la especifique bien, no siempre se construye tal como se deseaba, o en ocasiones un técnico bien conocedor de la gestión documental se ve obligado a construir una solución poco adecuada por exigencias del usuario.


Inercia:


Finalmente, para acabar de crear la “tormenta perfecta” debemos contar con la inercia humana.
En lugar de aprovechar la implantación de una solución documental para hacer una reingeniería de los procesos y para aprovechar las posibilidades que ofrecen las diferentes herramientas, se suele trasladar un modelo existente, basado en papel, a un soporte electrónico. Lo que en ocasiones es incluso menos eficaz que el original.
Mientras, algunos ciclos universitarios de documentación siguen dedicando muchas más horas a asignaturas como "Paleografía"  o "Archivos Históricos", que a "Gestores Documentales", "Clasificación Automática de Documentos", "BPM" o "formatos de imágenes y documento", lo que no ayuda a enfrentarse a un proyectos cada vez más "tecnológicos" y complejos.
A ello se une la dificultad por parte de los usuarios finales de los sistemas a adaptarse al nuevo circuito, generalmente motivado por varias causas: Desconfianza del sistema, falta de formación, inercia en la forma de trabajo y mal diseño de los sistemas. Seguro que no soy el único que ha visto personas digitalizar expedientes e introducirlos en un circuito documental y ADEMAS hacer una fotocopia para “quedárselos por si hay problemas y no se encuentran o no se puede acceder al gestor documental”.
Sin una formación a los usuarios y participantes de todos los niveles y una gestión del cambio adecuada, incluso el proyecto mejor diseñado puede fracasar.


El triste resultado de la combinación de todos los factores anteriores es que la Gestión Documental sigue sin “arrancar” totalmente. Se llevan a cabo menos proyectos de lo que sería esperable y en muchos casos con una mala calidad que solo sirven para descorazonar a los usuarios y aplazar de nuevo.

Esperemos que este nuevo año 2018 traiga un príncipe o princesa que "bese" a la gestión documental, rompa la maldición y despierte a la gestión documental de ese sopor en que lleva tanto tiempo....
   :-)