it-swarm-es.com

¿La abundancia de frameworks embrutece a los programadores?

Con todos los marcos disponibles en estos días, ORM , inyección de dependencia (DI), Inversión de control (IoC), etc., encuentro que muchos programadores están perdiendo o no tienen las habilidades de resolución de problemas necesarias para resolver problemas difíciles. Muchas veces, he visto comportamientos inesperados infiltrarse en las aplicaciones y los desarrolladores no pueden realmente profundizar y encontrar los problemas. Me parece que se está perdiendo la comprensión profunda de lo que está sucediendo bajo el capó.

No me malinterpretes , no estoy sugiriendo que estos marcos no sean buenos y no hayan hecho avanzar la industria, solo pregunto si, como Como consecuencia involuntaria, los desarrolladores no están adquiriendo el conocimiento y la habilidad necesarios para una comprensión profunda de los sistemas.

22
Gratzy

Convenido. Actualmente trabajo en un paquete de software que está tan cargado de marcos que hace que sea casi imposible comprender el negocio. Una vez que los frameworks le impiden resolver los problemas de negocio en lugar de simplemente resolver MVC , se ha ido demasiado lejos. Como usted dice, en mi opinión, muchos programadores intentan un arquitecto/programa para resolver el ORM y MVC, y rara vez preguntan si eso realmente ayuda de alguna manera a resolver el problema para el que está el software en primer lugar.


Sí, sé que ver algo de SQL sin formato en una página JSP es un "no-no", pero si eres un consultor de campo, ¿dónde encaja? una solución específica? Y no, eso no significa que el marco no sea el correcto, no todos los clientes tienen $ 20k en cada turno para garantizar que se proyecte un punto de datos menor en la página.

18
Jé Queue

Este es un argumento que surge con regularidad, en muchos campos y en muchas formas.

La forma general de este argumento es:

¿Tener [x: herramienta/tecnología] empeora a las personas en [y: función afectada por x]?

Por ejemplo:

  • ¿El software CAD hace que los ingenieros sean peores?
  • ¿Las calculadoras en la escuela secundaria empeoran a los estudiantes en matemáticas?
  • ¿El software social obstaculiza las habilidades sociales en persona de las personas?
  • ¿El software de contabilidad produce peores contables?

De memoria, la respuesta omnipresente es casi siempre: no realmente. Siempre tendrás personas que son buenas y malas en hacer [y], pero ahora son malas en una faceta diferente de la habilidad.

Una comprensión más profunda de los fundamentos de cualquier trabajo ayudará, sin importar lo que haga, incluso los trabajos que se consideran "reparadores". El conocimiento siempre ayuda.

31
Steven Evers

La abstracción es un concepto clave de la programación informática y los marcos ayudan a los programadores a lograrlo. Ésto es una cosa buena. ¡Dudo que a muchos de nosotros nos gustaría desarrollar sistemas complejos en lenguaje ensamblador! El problema surge, creo, cuando los programadores tienen poca idea de lo que está enmascarando 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, usando 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 scripting 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 en el servidor con cada página. Analizar los parámetros GET y POST requería escribir su propia biblioteca. Fue tedioso, lento, arduo y muy propenso a errores. ¡No lo extraño 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 un punto en el 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á ensamblando componentes usando una metodología de "arrastrar y soltar" sin darse cuenta de lo que está sucediendo en el nivel HTTP.

Entonces, creo que los marcos son esenciales para desarrollar software de alto nivel, pero no absuelven a los desarrolladores de tener alguna comprensión de lo que se está abstrayendo. Sí, los marcos pueden volverte tonto, pero solo si no los entiendes.

22
Dan Diplo

¿La transmisión automática o los limpiaparabrisas con sensor de lluvia nos hacen peores conductores?

No creo que la codificación sin marcos implique necesariamente una mejor comprensión de los sistemas subyacentes. Esto se evidencia cuando los empleadores tienen que hacer preguntas de codificación simples en las entrevistas solo para asegurarse de que el candidato pueda reunir un método coherente.

En última instancia, depende del desarrollador aprender. Los buenos lo hacen, los malos no.

Y en una línea similar, elegir un marco solo porque está allí sin analizar realmente sus capacidades y pros/contras también es una señal de malas prácticas de desarrollo.

13
Adam Lear

Creo que el problema es que los nuevos programadores comienzan con niveles cada vez más altos de abstracción y, por lo tanto, no se exponen a los bits y bytes de las cosas "debajo del capó". Por lo tanto, no están aprendiendo algunos de los fundamentos de codificación realmente básicos que serían las primeras cosas aprendidas en los últimos años.

Sacudo la cabeza cada vez que un programador obviamente nuevo pregunta algo sobre, digamos, almacenar algunos datos, y todos inmediatamente les dicen que usen un ORM herramienta. No, no, no, no, no ... primero necesitan aprender a hacerlo ellos mismos.

10
GrandmasterB

Citando del excelente "Gastando el dividendo de Moore" (énfasis agregado) de James Larus:

Hace treinta años, Bill Gates cambió el indicador en Altair Basic de "READY" a "OK" para ahorrar 5 bytes de memoria. Hoy en día, es inconcebible que los desarrolladores sean conscientes de este nivel de detalle de su programa, y ​​mucho menos preocupados por él, y con razón, ya que un cambio de esta magnitud es hoy imperceptible ... de ninguna manera podríamos producir los sistemas de hoy usando las prácticas artesanales, hechas a mano que eran posibles (necesarias) en máquinas con 4K de memoria.

Creo que probablemente sea engañoso decir que los marcos te permiten evitar las habilidades necesarias para resolver problemas difíciles o evitar una comprensión profunda. En cambio, el solamente La razón por la que podemos construir los sistemas complejos de hoy (cuya complejidad puede generar problemas difíciles y desafiar la comprensión profunda) es porque tenemos marcos (y lenguajes de alto nivel OO e IDE con ayuda sensible al contexto y verificación de sintaxis sobre la marcha, y todos los demás avances en el desarrollo de software que a veces son criticados como programadores tontos).

4
Josh Kelley

¿Quizás la distribución de la "tontería" no ha cambiado realmente y, en cambio, simplemente estamos brindando formas más grandes y complicadas para que los desarrolladores se disparen en el pie?

4
Rodney Gitzel

No son los frameworks los que entontecen a los programadores. Los programadores tontos serán tontos ya sea que usen frameworks o no.

Ciertamente, es cierto que comprender el trabajo de bajo nivel que una herramienta o un marco te ayuda a optimizar te convierte en un mejor usuario de las herramientas y los marcos. También puede depurar problemas más fácilmente y solucionar los inevitables vacíos de funcionalidad de las herramientas.

Por ejemplo, tomé una clase de diseño de compiladores en la universidad, donde codificamos un analizador LR desde cero en C, antes de aprender a usar generadores de analizadores sintácticos como Lex y yacc. Fue muy educativo, y desde entonces he tenido una mejor comprensión y aprecio por todos los lenguajes de programación que usé.

Pero no estoy diciendo que todos los programadores estén obligados a trabajar arduamente encerando el automóvil del Sr. Miyagi durante años y años antes de que se les permita trabajar a un alto nivel. Mucho trabajo de programación es intelectual, decidir qué es lo que el software necesita hacer, no el trabajo mecánico de codificar en un lenguaje o herramienta en particular.

Ese trabajo intelectual es donde la inteligencia frente a la tontería es aún más importante.

4
Bill Karwin

Los marcos son geniales. Pero tienes que saber qué hay debajo del capó. Entonces, el problema es que los programadores confían demasiado en los marcos, sin tener suficiente conocimiento del sistema subyacente.

Un ejemplo algo desactualizado es MFC : un programador podría ahorrar mucho tiempo usando MFC en lugar de la API de Windows, pero sin conocimiento de la API (lo que significa tener antecedentes de trabajo real con la API sin procesar), a menudo se estancaban. Casi nunca sucedió, porque un programador típico de MFC tenía conocimientos de API de Windows.

Sin embargo, con Windows Forms en . NET , gracias a la mejor encapsulación y al mejor modelo de objetos, un programador casi puede ignorar que está usando simplemente otro contenedor de API de Windows. Por lo tanto, hay menos posibilidades de quedarse atascado, pero cuando sucede, puede doler.

Desafortunadamente, el tiempo de comercialización es siempre más corto y los proyectos son cada vez más complejos, por lo que los programadores no tienen tiempo para profundizar. Ese es el triste estado de la industria del software ...

2
Wizard

Al crear software, los marcos ahorran tiempo. Cuando se aprende a crear software, los marcos obstaculizan la comprensión.

Creo que el problema se debe principalmente a que las computadoras se han vuelto demasiado potentes. Para la mayoría de los programadores ya no existe una razón sensata para "ir a lo básico". Simplemente se necesita más tiempo para hacer lo mismo, y en el tiempo de ejecución no hay una diferencia significativa. La única forma de solucionarlo es introducir restricciones artificiales, como lo hacen las competiciones como js1k.

¿Quizás las escuelas deberían tener una asignatura dedicada al "diseño optimizado" en la que tenga que crear programas con fuertes restricciones de espacio y tiempo?

1
Joeri Sebrechts

Pone la inteligencia donde debe estar. No es necesario comprender la mecánica cuántica y la física newtoniana para configurar un mecanismo que deje caer una bola desde lo alto de un edificio. Cada nueva capa en el software debería basarse en la última y eliminar el texto estándar de la construcción de aplicaciones útiles.

Aquellos que necesitan o quieren saber las "cosas" detrás del marco estudiarán e investigarán por las buenas o por las malas.

1
Jesse C. Slicer

No absolutamente no. Los marcos son, en esencia, una combinación de una biblioteca de subrutinas y una plantilla, dos herramientas de programación probadas y verdaderas. 'Es un pobre trabajador culpa a sus herramientas ...

... y hay un montón de trabajadores pobres que usan y culpan a los frameworks.

1
Shog9