¿Por qué la programación es difícil de aprender como un tema de proyecto?

En mi opinión tres palabras; Abstracción, complejidad y alcance.

Déjame elaborar.

Abstracción: gran parte de los conceptos en programación son completamente abstractos sin equivalente del mundo real, sin pequeñas metáforas o símiles útiles para ayudar a la comprensión. Ningún objeto físico para estudiar y captar. Recuerde que el software es una abstracción: le permite controlar los electrones que fluyen alrededor de los transistores a velocidades absurdas.

Complejidad: el software es complicado, esto está relacionado con la abstracción, porque cuanto más alto es el nivel, más complejidad agregas. Puedes hacer lo mismo de múltiples maneras, pero el arte es saber cuándo usar cuál. Ha habido intentos de estandarizar la codificación, pero en realidad no hay dos programadores que escriban el código de la misma manera. Ah, y siempre puedes ir más profundo (nivel inferior) pero, una vez más, necesitas saber cuándo es adecuado hacerlo. Hay tantos conceptos que necesitas saber, comprender y recordar. Luego tiene sintaxis, diferencias de plataforma, habilidades de IDE, habilidades de matemáticas, habilidades de lógica, habilidades de resolución de problemas, depuración, optimización, bibliotecas para aprender, accesos directos, binarios (hexadecimal, octal), etc., etc.

Alcance: los programadores pueden codificar todo, desde relojes inteligentes hasta automóviles, computadoras, teléfonos, televisores, PLCs, satélites, electrónicos, tabletas, páginas web, aplicaciones web, API, DLL, decodificadores, IoT (frigoríficos, tostadores, fitbits, televisores, controles de calefacción, vehículos, aire acondicionado, cualquier cosa que pueda controlar de forma remota a través de Internet), bases de datos, big data, análisis, IA, heurísticas, cohetes, marcapasos, robótica, juegos, investigación científica, modelado, hardware, empresas, compiladores, enlazadores, Las lenguas mismas y mucho, mucho, mucho más.

¿Como puedes ver? Es por eso que nos especializamos (a pesar de que Robert Heinlein ha recibido “la especialidad es para los insectos”) y los programadores con un amplio conjunto de habilidades son personas muy buscadas y muy bien pagadas.

La programación no es codificación, es el análisis de un problema para encontrar una solución, y luego la codificación en un lenguaje de programación. La parte de codificación es una pequeña parte de la programación, y es trivial, la parte difícil es el análisis.

¿Por qué? El análisis de un problema es anti-supervivencia. Evolucionamos para luchar o huir, no para quedarnos analizando si esa cosa grande de color marrón es amigable o peligrosa. Así que muy pocas personas tienen la capacidad de analizar un problema para su solución, y como esa es la parte principal de la programación, es por eso que a la mayoría de las personas les resulta difícil.

(Algunos de nosotros estábamos analizando cosas antes de poder hablar, así que la programación solo usaba las habilidades mentales que ya teníamos para un propósito diferente. Es por eso que las personas que no pueden aprender a programar preguntan por qué algunas personas pueden aprender tan fácilmente y pueden hacerlo ”. t. Los buenos programadores aprenden la sintaxis del lenguaje en el que están trabajando, la programación en sí misma es algo que normalmente hacen, es lo que piensa un buen programador.

El problema es que si su línea genética no evolucionó para analizar problemas, usted tampoco puede, no puede modificar sus genes por “aprendizaje”. Sería como “aprender” a ser más alto. Si tienes 5 pies de altura, no trates de convertirte en un jugador profesional de baloncesto, no puedes. Si no puede analizar un problema lo suficiente como para encontrar una solución, no intente convertirse en un programador, no puede.

“¿Por qué la programación es difícil de aprender como tema del proyecto?”

¿Qué libro dice eso?

Si algo se aprendió con interés, se vuelve fácil, si se aprende por formalidad o porque TIENE QUE, si es obvio que se sentirá un poco difícil o poco interesante que la razón anterior.

Esta pregunta ha surgido en varias variaciones recientemente, pero la respuesta de TLDR es porque es una habilidad innata difícil de aprender.

La programación requiere una combinación de resolución lógica de problemas y creatividad “fuera de la caja”, que en sí misma no es una combinación de rasgos particularmente inusual.

Cuando las cosas empiezan a ponerse interesantes es cuando tenemos que entender y administrar conceptos complejos de abstracción en nuestra cabeza y encontrar maneras de sacarlos de la cabeza en forma de código funcional y libre de errores. ESTA es la verdadera dificultad en la programación.

La mayoría de las veces, el espacio del problema es demasiado grande para mantener todo el contenido en nuestro cerebro, por lo que necesitamos dividirlo en problemas cada vez más pequeños, hasta que alcancemos un nivel que podamos manejar fácilmente. En ese momento, debemos resolver cada uno de los problemas más pequeños, esencialmente agregando un copo de nieve a la bola de nieve cada vez. Eventualmente, nos quedamos sin problemas para resolver (por ahora, las correcciones de errores son problemas diferentes por sí solos) y podemos lanzar nuestra “bola de nieve” a alguien. ¡DIVERTIDO!