La abstracción es un concepto clave de la programación de computadoras y los marcos ayudan a los programadores a lograr esto. Ésto es una cosa buena. ¡Dudo que a muchos nos gustaría desarrollar sistemas complejos en lenguaje ensamblador! El problema surge, creo, cuando los programadores tienen poca idea de lo que está ocultando la capa de abstracción. En otras palabras, debe tener una idea de lo que sucede debajo del capó, incluso si no interactúa o interactúa directamente con él.
Recuerdo haber desarrollado algunos de los primeros sitios web dinámicos a mediados de los 90, utilizando C y CGI (en un momento en que la mayoría de los sitios web todavía eran HTML estático). Realmente no había ningún lenguaje de script maduro del lado del servidor (como PHP o ASP) y muy pocas bibliotecas, por lo que tenía que escribir todo el flujo de respuesta HTTP al servidor con cada página. Para analizar los parámetros GET y POST es necesario escribir su propia biblioteca. Fue tedioso, lento, arduo y muy propenso a errores. ¡No me lo pierdo ni un poco!
Sin embargo, también siento que los marcos como los formularios web ASP.NET abstraen toda la naturaleza sin estado de la web hasta el punto en que muchos desarrolladores web nuevos tienen poca idea de lo que realmente está sucediendo bajo el capó. Esto conduce a un código ineficiente e inflado que funciona mal porque el desarrollador está conectando componentes usando una metodología de "arrastrar y soltar" sin darse cuenta de lo que está sucediendo a nivel HTTP.
Por lo tanto, creo que los marcos son esenciales para desarrollar software de alto nivel, pero no eximen a los desarrolladores de tener una cierta comprensión de lo que se está abstrayendo. Sí, los marcos pueden hacerte tonto, pero solo si no los entiendes.