jueves, 28 de agosto de 2008

Todas mis frases en la Wikipedia

Os comunico que todas mis frases ya están recopiladas y publicadas en la Wikipedia. Para verlas, sólo tenéis que seguir el siguiente enlace:

http://es.wikiquote.org/wiki/Rafael_Hernamperez_Martin

Os recuerdo que también están publicadas en "Citas y refranes":

http://www.citasyrefranes.com/vuestras/autor/UmFmYWVsIEhlcm5hbXDpcmV6

Si visitáis ésta última, agradeceré vuestro voto.

jueves, 21 de agosto de 2008

Software: ¿ayuda o lastre?

Innegable es el hecho que la tecnología ha supuesto la revolución de cualquier negocio, y gracias a ésta cada vez se abarca más productividad (cantidad, calidad, menos esfuerzo y menos tiempo) y se recortan los costes. O al menos, ésa es la intención. Pero, ¿realmente la tecnología es una inversión rentable?. La teoría dice que sí, pero, ¿qué dice la práctica?.

Por tecnología puede considerarse o contemplarse cualquier concepto, ya sea físico, idea, planificación u organización, que suponga una novedad en el sistema actual, con el fin de optimizar dicho sistema.

Ante tamaña vastedad de tecnologías existentes entre todos los nichos de negocio que pululan por el universo mercantil, analizar la viabilidad y la rentabilidad del conjunto o de cada una de estas tecnologías sería una tarea pueril e injusta, dependiendo del punto de vista por que se rase.

El presente artículo se centrará en el software, actor principal en las tecnologías desde hace escasamente 40 años (tiene más edad, pero las tecnologías a las que se aplican predominan sobre las otras desde los años 70). Gracias a esa mágica secuencia de bits encencidos y apagados, se pueden controlar y dar comportamientos inteligentes a los dispositivos tecnológicos presentes en cualquier hogar y en cualquier empresa. El software domina cualquier aspecto de nuestra vida personal y profesional, desde nuestro teléfono móvil o nuestros electrodomésticos, hasta los ordenadores, las máquinas industriales o los sistemas de producción. El software está presente en cualquier faceta de nuestra vida o de nuestros negocios, gestionando la productividad, las nóminas, la contabilidad, los pedidos, la facturación, la organización, las líneas de producción, las cadenas de suministro, los procesos de calidad...

Todo lo anterior suena a cristales celestiales tocados por la varita de un ángel, como dulce y armoniosa melodía que exhala dólares y euros como si fuera un aguacero brillante y mágico. ¿Un sueño? ¿Una ilusión? ¿Un espejismo? ¿Un humo bien fabricado?

Durante las primeras décadas de la informática, el hardware era prohibitivo, y las limitadas capacidades de éste eran controladas por un software de muy bajo nivel, con una lógica básica bien depurada e ingeniada (en pocos bytes y optimizado para alcanzar un mayor rendimiento), desarrollado por unas pocas mentes privilegiadas que cobraban mucho por sus dotes - en aquel entonces - innatas. La complejidad de las tareas no era mucha, y las capacidades eran suficientes.

El hardware va evolucionando. Se hace más pequeño, más rápido, más eficiente y... más barato. Los PC's revolucionan el mercado informático, haciendo accesible estas tecnologías a empresas medianas y pequeñas y usuarios domésticos. El software también evoluciona, convirtiéndose en más alto nivel (más legible y sencillo para el ser humano), pero también más pesado (ocupa más bytes) - debido a la cobertura implícita de funciones resueltas de mayor uso (capas de cebolla) - y, por consiguiente, menor rendimiento (más lento) en proporción de las capacidades del hardware (ya no importa depurar y el extreme programming, ya que la memoria y la velocidad sobran). Se acometen tareas mucho más complejas y las capacidades y posibilidades parecen no existir.

Se podría abrir un acalorado e interesante debate acerca de las curvas de aprendizaje y productividad con software de alto nivel, y de ser más tradicional y estricto con el extreme programming. Pero no viene al caso en este artículo.

La inflexión del software viene a la hora de amortizar la inversión realizada en dicho software, sopesando el beneficio obtenido y las expectativas de beneficio por obtener.

La competitividad entre las empresas es una carrera desbocada por la última tecnología. Cualquier avance en ese sentido puede hacer que un caballo (o un burro, según se mire, y perdón por la expresión) gane un hocico tras la apetitosa y suculenta zanahoria del poder y de la ventaja competitiva.

Al principio, la inversión en software producía unos sistemas de la información muy a la medida y exclusivos. Esto era como invertir en un traje hecho a medida, mientras la persona crecía y engordaba. Resumen: una inversión irracional que no preveía que ese traje se pondría muy pocas veces, para el pastón por el que se pagó por él. Y sin prever la inversión (posiblemente mayor y desproporcionada) que suponía después hacer remiendos y parches a dicho traje. El final de esta historia, es tirar un traje (software) de poco uso, lleno de parches, y haber invertido en él un dinero desmedido. Asimismo, realizar un traje a medida es una labor artesana y profesional, que requiere de mucho tiempo. En cuanto el traje está terminado, el caballero que ha de vestirse con él, ya no entra en él.

Lo siguiente fueron los sistemas legacy o sistemas heredados. Consistían en seguir utilizando aquellos viejos trajes que costaron tanto dinero, en nuevos sistemas. Algo así como hacer un "tunning" de aquellos trajes. Esto también tiene sus costes, pues seguimos creciendo, y el traje antiguo que es el cimiento del sistema legado, también tiene que parchearse y remendar con las nuevas necesidades de la empresa, y, posteriormente, actualizar el tunning para que todo vaya al unísono. Sigue siendo costoso de mantener, pues aquel viejo traje está diseñado para un hardware y una arquitectura antigua, con el riesgo de que un día perezca de repente y todo se caiga a modo de efecto dominó. Asimismo, los sistemas antiguos siguen siendo lentos y obsoletos, y tunear el traje supone lastrar y heredar esa lentitud. Otro problema añadido es encontrar sastres que entiendan el traje antiguo y el traje nuevo, para hacer una obra de arte de integración entre ambos y que no se descosa. Un tiempo y un dinero muy valioso. Vestir un traje legado con un ROI aceptable, es muy difícil y pocos lo han conseguido razonablemente.

La siguiente promesa o quimera fueron los ERP: unos supertrajes que prometían no quedarse pequeños nunca y tener un ROI (retorno de la inversión) rápido y una obtención de beneficio a corto plazo. Pero la realidad demostró que no era así, pues aquellos flamantes trajes eran de plomo y monolíticos, a pesar de contemplar estructuras muy complejas de negocio. Al final, siempre había que hacer remiendos a medida, y entre lo que costaba el ERP, la instalación, las licencias y los remiendos, nos encontrábamos con trajes muy pesados, caros, poco optimizados en cuanto al tiempo que se tardaba en poner en marcha con cierta aceptación.

La piedra filosofal fue acuñada como un sistema Lego, o sistema de componentes interconectados de uno a otro. Si bien la idea de un traje que pudiera ser construido por trozos intercambiables, cada uno con una función específica, era la panacea y el futuro, la realidad es que en la práctica no pudo ser así. El software reutilizable es real a pequeña escala, pero en un gran sistema no es así, ya que la complejidad crece exponencialmente, terminando, en ocasiones, en ser imposible. La ingente diversidad de piezas, cada una especializada en una cosas específica, hace que en conjunto no sea compatible.

Lo último fue SOA, una promesa de integración entre sistemas a través de servicios orientados a aplicaciones, utilizando web services a modo de capa de cobertura, como el chocolate que culmina el pastel. Este concepto puede ser brillante, pero peca de ser demasiado optimista, pues está pensado en este momento y para este momento, y la integración hacia atrás conllevará más costes de desarrollo, y más tiempo, intentando consolidar distintos sistemas. Es un paso adelante, pero aún no es la solución, sino una adaptación. Es cuestión de tiempo (y mucho), para dar la razón a la arquitectura SOA o no, y si es lo sufientemente rápida y adaptable al dinamismo empresarial. Pero para entonces se habrá hecho una gran inversión en la que habrá que analizar si el ROI se alcanza, y con que eficiencia y rapidez.

La empresa, así, va acumulando trajes de distintos fabricantes, con unas dependencias y exclusividades que ahogan por sí mismas. El siguiente paso era la integridad de todos esos trajes tan variados, que elevan la inversión aún más para que todos los trajes parezcan entenderse y hablarse, cosa que se consigue a base de mucho tesón, pruebas, error y perder dinero con cada intento.

Así pues, la empresa se encuentra con trajes que enseguida dejaron de valer, con trajes tuneados sobre trajes viejos, y remiendos para el conjunto de todos los trajes. La inversión (o coste) y el ROI (o recuperación del coste) por esos trajes son una diferencia abismal de líneas: muy alta la primera, y muy baja la segunda. Esto se traduce, aunque no se quiera reconocer, en un derroche injustificable.

Lo peor de todo es que estos trajes generan dependencias y nuevas inversiones deficitarias, ya sea en forma de mantenimiento, soporte o remiendos, o en forma de migraciones cuando ya se hace insostenible el agujero, con el riesgo y la desconfianza en la creación de un nuevo traje.

La empresa es un ente que en esta era va cambiando rápidamente, casi cada día, adaptándose a las últimas tendencias, a la competitividad, a las oportunidades, a abarcar más nichos de mercado, a adoptar nuevas metodologías de hacer negocios y de entender los negocios, a establecer nuevas estrategias. Este ente cambia y se transforma tan deprisa que el software se vuelve obsoleto o inapropiado casi cada día. La velocidad de evolución entre el negocio y el software es totalmente incoherente. Existe, pues, una asinconicidad y una desincronicidad entre negocio y software.

¿Qué es lo que está mal? ¿Por qué se invierte mal en tecnología?

Se olvida en todo momento que la tecnología es una herramienta que debe ayudar. Cuando se piensa en un proyecto de software, se empieza a pensar que el software es el propio negocio, como un rey Midas convirtiendo en oro todo lo que toca. Cuando se compra una furgoneta para ayudar en nuetro negocio, uno no piensa que la furgoneta va a hacer todo el trabajo sólo, si no que solamente nos va a transportar la mercancía y el resto lo debemos hacer nosotros, incluso conducir. Se olvida que el software es algo que se ha de construir para ayudar a realizar ciertas tareas pesadas y costosas del negocio. La mayor parte de las veces, los especialistas en software no entienden el negocio, y aunque se utilicen técnicos software expertos en dicho negocio, no llegaran a exprimir al máximo éste dentro del software. No obstante, un mayor entendimiento del negocio se traducirá en un riesgo mucho menor y en un éxito más seguro. El software debe adaptarse al negocio, no a la inversa.

Otro punto importante que no se tiene en cuenta es la previsión de cambio. Se tiende más a la reacción con lo que ocurre en cada momento, que a ser proactivos en pos del futuro, anticipando comportamientos y cambios. Se tiende a crear sistemas más y más complejos, como en los negocios, pero no se anticipa la ambigüedad. La complejidad en el negocio tiende a exponenciar la complejidad del software, pues la lógica del software va al detalle y enlazada en horizontal y en vertical con el resto de componentes del sistema. Por muy estructurado y muy bien diseñado esté un sistema, a medida que éste crece, se hace harto difícil cambiar algo muy sencillo sin que afecte al resto de una forma impredecible. Recordemos que el software es muy maleable, y una modificación, por muy nimia que ésta sea, afecta al resto.

Por otro lado, la dependencia cerrada con el software, es algo que puede suponer costes añadidos e imprevisibles. Por ejemplo, la fusión o compra de fabricantes de software propietario, se traduce, tarde o temprano, en cambios del propio software comprado que obligará, casi con seguridad, a invertir en nuevas versiones incompatibles con la que habíamos adquirido. Esto se traduce también en volver a desarrollar conectores e interfaces que se integran con el resto de sistemas. También, las nuevas versiones de propios fabricantes, pueden contener incompatibilidades que aplican al resto de sistemas integrados. Como el soporte tiende a dejar de dar servicio a versiones antiguas, obliga a las empresas a actualizarse a las nuevas versiones, que pueden no ser compatibles con otros sistemas (software y/o hardware) que están obligados a convivir recíprocamente. Por ejemplo, un sistema operativo nuevo puede no ejecutar aplicaciones anteriores. Algo así pasó con Windows 95 y Windows Vista.

Otro problema añadido es que la inversión en un software no suele hacerse de forma inteligente. No hay un conocimiento importante de software, ni un estudio profundo de las opciones en el mercado, así como tampoco se tiene en cuenta la estandarización de un tipo determinado tipo de software, sus dependencias y la compatibilidad y convivencia con otros sistemas. Muchas veces se compra una consultoría y el desarrollo de una solución a medida, sin informarse si hay algún fabricante con un producto ya realizado, que tenga alguna estandarización y que pueda personalizarse sin demasiados costes. Siempre es inteligente hacer un sondeo de casos de éxito de un software concreto en otras empresas, obtener referencias, impresiones, opiniones, leer críticas, foros...

Otra cosa que también se olvida es que si un negocio tiene problemas y errores, el software también lo tiene. Y nunca se tiene en cuenta este factor a la hora de prever costes, problemas y factores tales como esfuerzos y tiempos asociados al negocio en caso de problemas en el software, y a la inversa.

Tampoco se tiene en cuenta el nivel de dependencia entre negocio y tecnología, ni se prevé el impacto de "parón" del negocio en el caso de que la tecnología falle. Es algo que nadie piensa, pero es una posibilidad muy seria, aunque pueda ocurrir 1 vez entre 100 millones.

Quizá la propia naturaleza del negocio y del software sea así, y buscar un equilibrio entre ambas es una habilidad o talento de expertos preparados e informados para tomar las decisiones correctas, de analizar las necesidades reales, las expectativas reales, la previsión de inversión, ROI y beneficio en el tiempo realistas, conocer bien los productos y las alternativas, sus pros y sus contras, el impacto que tendrá con el resto de sistemas, el ciclo de vida, el mantenimiento, etc.

El tiempo, al final, decide si algo ha sido bueno, como un buen coche, unos buenos zapatos o un buen traje. Si durante mucho tiempo, el mismo producto ha sido bueno de principio a fin, ha sido rentable, ha dado beneficios, ha tenido pocos errores y se ha comportado impecablemente, entonces ha merecido la pena y ha sido un buen negocio.

Cuando uno vive experiencias de software bien utilizado y amortizado, se congratula en una forma eficiente e inteligente de uso. Aún me sorprende ver sistemas funcionando bajo MS-DOS con aplicaciones Clipper que funcionan tan impecables como antaño, o en Cobol... Pero nota que la evolución del negocio ha crecido en cuanto a ganancias limitadas usando el mismo sistema, y con pocos cambios en las estrategias del mismo. Es un crecimiento humilde basado en experiencias que funcionan, sin arriesgar en nuevas metodologías o estrategias, siendo algo "cuadriculado". Funcionar funciona sin riesgos, pero con un crecimiento lento y firme.

Otro tipo de software bien utilizado y amortizado es aquel que es estándar y probadamente estable y eficiente, de uso masivo y aceptado popularmente, como aplicaciones office, bases de datos, etc.

Pero seamos realistas... el software, o mejor dicho, la mentalidad o el ingenio de la conceptualización y desarrollo del software, aún tiene mucho que aprender para hacer realmente efectivo un negocio, y convertirse así en una ayuda, más que en un lastre. Del mismo, modo, el negocio debe aprender mucho para saber lo que el software puede o no puede hacer, y de qué manera, y de la forma más efectiva y rentable. Ambos, como un matrimonio, tienen un largo camino por delante para llegarse a conocer bien y extraer lo mejor del otro y de sí mismo, en beneficio común.