Una tecnología para dominarlos a todos…

Pues no, no la hay, antes solo existía el debate de Windows vs Linux, luego se sumo Intel vs AMD, ahora ya tenemos un poco de todo Java vs .NET, PHP vs Ruby… –¿dónde quedo ensamblador contra C?-.
Ahora evolucionamos al mundo framework, en JavaScript un festival, React vs Angular vs Aurelia vs Boostrap vs …. pero tampoco pasa nada porque en el fondo unos se pueden mezclar con otros, si al final hasta se quieren llevar bien.
Por otro lado tenemos los lenguajes de nueva hornada en general surgidos de la nueva ola funcional, desde Scala a F# a Clojure, para todos aquellos que os habéis preguntado si hay vida más allá del imperativo, pues si, la hay.
NoSQL viene a romper el inmovilista mercado de las bases de datos, más de un dba debería preocuparse, por mi perfecto, por fin alguien se molesta en hacer bases de datos para desarrolladores y si yo quiero guardar un objeto lo guardo y no tengo que partirlo en trozos para luego volver a juntarlos.
Breve recorrido por el mundo arquitectura, desde los grandes clásicos de 3 capas a N capas, pasando por DDD, EDA, aspectos… como no permitiendo combinaciones entre ellos no vaya a ser que alguien se quede atrás y decir que si solo haces 3 capas es de pobres y DDD es de innovadores que matan moscas a cañonazos cuando realmente deberías estar haciendo SOA que sirve para todo, lo de ahora y lo que vendrá.
Como no podía ser de otra manera tocan las metodologías, TDD, BDD, por supuesto TDD es lo que te hará tener una aplicación con menos errores que una hoja en blanco y BDD hará que quieres irte de cañas con los funcionales de tus proyectos, cuando llegues a las copas estarás hablando de ATDD.
Parece muchas veces que haya que tomar partido, no existe esa necesidad, los extremos en informática no funcionan, ni desde el lado propietario cerrando puertas al campo ni desde el código libre teniendo tal diversidad de distribuciones y software repetido que la fuerza se dispersa.
La virtud está en el término medio, es bueno que haya código libre pero tiene que haber una base a la que agarrarse, con Linux se han intentado crear consorcios con más pena que gloria, en desarrollo a .NET se le supuso una teórica capacidad multiplataforma (sin contar Core) que nunca llego y al final Java siempre termina ejecutándose en entornos Unix.
Las pruebas unitarias son útiles y necesarias pero no un pilar que te condicione un desarrollo como en TDD, BDD no te va dar fiabilidad integral a tu aplicación pero cada uno en su lado (¿Back y Front?, ¿microservicios y SPA?, ¿entorno técnico y funcional?) suponen una buena combinación.
DDD te puede dar escalabilidad y la transversalidad se la puedes dejar a AOP, si has perdido la pista de tú código EDA te puede poner en la senda y si el frontal es ligero un n-capas estilo MVC te responderá bien.
No entrare en el oscuro mundo de la arquitectura corporativa o como coger tu aplicación partirla en trozos y lanzar cada uno por separado a través de buses de conectividad proporcionando todo tipo de servicios, al menos se puede decir que en este ámbito existe más combinación.
Los frameworks estan de moda en líneas generales, son útiles siempre y cuando el framework no tape el lenguaje, –se jQuery pero no se que es JavaScript-, siempre he creído que un framework es bueno cuando inviertes más tiempo en leerlo que en escribir código.
Politizar la informática haciendo bandera de «¿ves como te decía que la tecnología Pokemon iba a triunfar?» quizás no sea la opción, habría que optar más por formas de arreglar problemas que por intentar encontrar el santo grial que nos permita no tener que volver a leer un manual de informática, yo por lo menos sabía lo que me esperaba cuando me metí en esto (bueno, quizás no tanto).

Una tecnología para dominarlos a todos…