...parece que un desarrollo actual se basa en que el pica-código de turno instale un composer, o un npm, o lo que sea, y se ponga a importar decenas de módulos de código de terceros para hacer la más mínima tontería
Es cuestion de cambiar el
pica-código y contratar un
desarrollador. :bla:
Eso está bien para prototipado rápido, pero vamos, para hacer proyectos mínimamente importantes, donde prime el buen diseño, la eficiencia, etc., pues no. Sin ir más lejos, la dependencia tecnológica hacia terceros que se establece, el estar atentos a cambios de versiones, el tener que recurrir continuamente a guías de migración, el cambiar versiones de componentes sin necesidad porque lo que había ya funcionaba perfectamente, el cuadrar estas dependencias con sus propias dependencias...
Niego la mayor: es precisamente en proyectos de cierta entidad donde se tienen que utilitar diferentes frameworks. Cualquier framework maduro lleva unas cuantas refactorizaciones detras y te obliga a utilitar buenas practicas.
Por otra parte, si Pepito y Fulanito no usan frameworks comunes y resuelven los problemas a su manera estas jugando con fuego. Con un equipo de dos personas es manejable mete unos cuantos mas y acabas con un Frankenstein inmantenible.
Hacerte tus frameworks y componentes dentro de la misma empresa se ha demostrado ineficiente en la mayoria de casos. Por enumerar algunos problemas del do-it-yourself/ in-company frameworks: reinvencion de la rueda, limitaciones de tipo tecnico (tu framework no se integra bien con otras tecnologias y no tienes tiempo para implementarlo porque no eres una empresa de software), no estan testados por multitud de personas como un framework standard, los nuevos desarrolladores no los conocen asi que son improductivos y reaccios a utilizarlos (hola Banksphere!)
Por supuesto que integrar frameworks y estar a la ultima tiene problemas pero eso de tener que estar migrando continuamente no se sostiene. Si realmente pasa, se despide al
arquitecto. Ah, que no hay? Entonces normal que pasen estas historias, a contratar uno toca.
Un ultimo apunte sobre algo que la mayoria de gente no entiende. La eficiencia o rendimiento de una aplicacion no es algo a lo que haya que prestar mucha atencion durante el desarrollo de la misma (salvo que hagas high frequency trading o algo asi).
Eso no quiere decir que vayas haciendo bucles anidados "porque si" sino que es un aspecto que se trata despues via monitorizacion -> se ve donde estan los bootlenecks y se resuelven. Lo realmente importante es la mantenibilidad: que lo que se implementa sea entendidble y sencillo de modificar.
Y claro, si congelas el uso de determinadas versiones al cabo del tiempo empezarán a surgir incompatibilidades con otros módulos, y estarás forzado o a encapsular componentes o a hacer una actualización "importante" a la fuerza. No digo que no se usen ciertas bibliotecas para solucionar problemas recurrentes, pero de ahí a que el desarrollo se limite a "conectar" frameworks pre-existentes, hay mucha diferencia.
Reitero que es tarea del arquitecto estar al dia de las tecnologias existentes y la eleccion de las mismas con crriterios entre los cuales se cuentan el valor tecnologico (e.g. es una tecnlogia disruptiva), la madurez (hay una gran comunidad detras o son 5 universitarios en un garaje) , soporte, etc. Logicamente si eres una start-up quieres lo ultimo de lo ultimo si eres una compania de seguros quieres algo con mucha madurez y retrocompatiblidad.
Poca gente se dedica a conectar frameworks pre-existentes y a correr...salvo que trabajes en algo de integracion o tu desarrollo consista en una template de algo y meter unos cuantos plugins aqui o alla.
Un desarrollo se acomete en la mayoria de los casos para implementar un nuevo requerimiento de funcionalidad. Utilizas frameworks para ser productivo no por que te apetezca: si estoy haciendo un proyecto de servicios web no voy a meter Spring Data para persitencia JPA/ hibernate.
En J
ava por ejemplo es habitual utilizar maven y que el arquitecto/ gestor de software deje solo disponibles determinadas tecnologias/ versiones. De esa manera no obligas a los desarrolladores a reinventar la rueda pero no permites que cualquiera meta segun que librerias. En JavaScript tienes bower y supongo que se podra hacer lo mismo (no soy desarrolador front puro)
Eso por no mencionar los que asimilan una biblioteca o un framework con un lenguaje de programación, ignorando que se pueden hacer cosas a más bajo nivel. Un ejemplo muy claro es el de jQuery, que hay mucha gente que "programa" cosas en Javascript pero que es incapaz de hacerlo sin jQuery o similar:
Vanilla JS
Claro que sabrian hacerlo pero perderian tiempo buscando el como cuando ese tiempo se podria utilizar en meter un test unitario para ver que funciona.
Si te pido que me multipliques 2347643 * 38837364 lo harias con un papel o con una calculadora?

ienso:
En fin, que eso de la reutilización del código está muy bien, pero estamos llegando a unos límites que rozan lo surrealista. Cada vez hay menos programadores de verdad y más "expertos" en "montar" aplicaciones con frameworks que hace un par de años ni existían, y que dentro de un par de años posiblemente serán sustituidos por otros. ¿Así cómo se puede mantener un proyecto a medio y largo plazo? ¿Cómo puede madurar una tecnología? ¿Cómo pueden surgir expertos de verdad y no un montón de vendehumos que no tienen ni pajolera idea de diseño de software y programación?
Voy a ir cerrando. Si a lo que te refieres por aplicacion es una pagina web que se implementa con un Wordpress y cuatro plugins pues ok. Pero realmente fuera de ahi utilizas frameworks por temas de rapidez, compatibilidad, buenas practicas, etc. pero manejar un framework supone tambien un buen reto intelectualmente hablando.
Se podria comparar a las cadenas de montaje de un coche en la antiguedad y las de ahora. Antes habia que hacerlo todo manualmente y ahora tienes maquinas que se encargan del proceso...pero alguien tiene que controlarlas porque no funcionan solas.