Soy una persona de humanidades y la programación es muy difícil de aprender. ¿Por qué es esto?

En mi humilde opinión, lo estás aprendiendo de manera incorrecta. No lo estudies solo por estudiar. Eso también sería aburrido para la mayoría de los programadores.

Identifique un proyecto de mascota del que realmente se sentiría orgulloso si lo lograra y luego aprenda a programar solo lo suficiente para terminar el proyecto. De esa forma, su motivación vendrá de lo que ama y aprenderá la programación mientras tanto.

Sólo tenga cuidado de por qué está aprendiendo a programar. Si se trata de conseguir un trabajo como programador, le recomendaría que reconsidere, ya que si encuentra que aprender a programar es aburrido, moriría de aburrimiento en un trabajo de programación promedio. Si considera que es una herramienta valiosa para ayudarlo a resolver los problemas que le interesan, entonces, por supuesto, no se rinda. Hay muchas personas que aman la programación para la programación (sé que soy uno de ellos), pero hoy en día me encanta resolver problemas más grandes utilizando la programación como una herramienta.

Pensamiento de arriba abajo vs Aprendizaje de abajo hacia arriba

La programación se enseña de abajo hacia arriba, es decir, aprendes las tuercas y los pernos de forma aislada y luego te quedas solo para construir un coche de carreras.

El software de construcción es una operación de tipo pinza.
Debe desglosar sus funciones en operaciones / interacciones de objetos (de arriba a abajo). Entonces necesitas codificar (de abajo hacia arriba). Es posible que deba recorrer esto hasta obtener el nivel de abstracción correcto.

Sin embargo, la mayoría de los libros de texto o maestros no hacen un buen trabajo al decir cómo y por qué unirlos en buenas combinaciones. Es por eso que ves mucho desorden en los programas para principiantes.

Respuesta del usuario de Quora a Para volver a aprender matemáticas, tanto los sitios web como los libros ofrecen contenido visual (el texto y algunos de ellos muestran ilustraciones). Entonces, ¿son los sitios web una alternativa a los libros (contenido en cuanto a calidad)?

Sin embargo, hay libros realmente muy, muy buenos que te dicen cómo construir y por qué ciertas combinaciones de construcciones básicas funcionan mejor que otras.

La práctica de programación de Brian Kernighan muestra exactamente “el proceso de pensamiento” de los sistemas de construcción a partir de tuercas y tornillos y el uso de las herramientas adecuadas para la situación. Es como seguir a un tío experto cuando te muestra cómo construir un auto en miniatura y luego mostrar cómo se puede hacer que funcionen los mismos principios en la construcción de un verdadero auto de carrera (con algunas modificaciones, por supuesto).

Asunciones de enseñanza

a) Deja de referirte a libros con ejemplos matemáticos aburridos. Solo está aumentando la confusión, ya que ahora tiene que envolver su cabeza en torno a 2 incógnitas en lugar de solo programar.

b) Intenta encontrar libros escritos por autores aficionados. Están tratando de ubicarse en dos dominios diferentes, por lo que se toman la molestia de explicar el significado práctico de cada cosa que dicen. No asumen tanto

c) Para obtener una visión general de las cosas, busque videos interesantes sobre el tema. Filtre los videos de corta duración ya que en realidad no pueden enseñar mucho en 5 minutos.

d) Probar libros / tutoriales que enseñan el uso de soluciones a situaciones del mundo real.

e) Trate de aprender los lenguajes más legibles y fáciles de usar pero potentes como python.

f) La serie de libros Head first / dummies son excelentes para los novatos de CUALQUIER experiencia, ya que revelan qué, cómo y por qué detrás de lo que está haciendo, es decir, el proceso de pensamiento. http://www.headfirstlabs.com/boo

Roll Your Own

Inventa tus propios problemas para resolver en lugar de ejercicios de muestra. Esto le asegura que conoce el tema y solo tiene que lidiar con la traducción a “computerese”.

Por ejemplo :
Una aplicación de revisión de libros, utilidad o sitio web.
O trata de hacer un clon de un software que uses como un editor de texto, la aplicación Pincel, y agrega funciones pequeñas a medida que avanzas.

Piense de arriba hacia abajo, código de abajo hacia arriba

Es necesario diseñar de arriba a abajo desde la casa hasta las habitaciones, las paredes y los ladrillos.
Aún debe ordenar la cantidad correcta de ladrillos y cemento y construir secciones de pared, etc.
Lo mismo se aplica en la codificación:
a) Descomposición funcional:
Divida lo que desea hacer en tareas lógicas cada vez más pequeñas hasta que alcance una abstracción lo suficientemente baja que pueda codificarse (es decir, descomposición funcional).
b) Edificio de la biblioteca:
El resultado de la descomposición funcional se puede agrupar en Clases, es decir, “Actores” en Programaciones Orientadas a Objetos (OOPS). Puede haber clases auxiliares que actúen como conductos entre diferentes subsistemas. La mayoría de la codificación real se realiza de abajo hacia arriba, es decir, a nivel de ladrillo y mortero y tuberías.

El libro Head First Object-Oriented Analysis and Design y Head First Software Development podrían ser buenos puntos de partida.

¡Puedes descubrir que eres mejor en diseño que otros programadores rápidos!

Vea también mi respuesta relacionada: la respuesta de Gurudutt Mallapur a ¿Cuánto de aprender un lenguaje de programación de computadora (como C ++) está arraigado en mathematicvs?

Respondiendo por A2A, pero mi opinión está cubierta en su mayor parte por Nick Malik.

La programación no es para todos, como la mayoría de las actividades. Sucede que es algo que suele ser romántico en las películas y series últimamente.
No estoy diciendo “no todos pueden convertirse en programadores”, solo digo que no a todos les resultará interesante como pasatiempo programar una computadora, del mismo modo que no todos encuentran divertido jugar al béisbol, pintar o jugar. piano.

La programación, al igual que todas estas otras actividades, requiere talento, pero lo que es más importante, requiere práctica. Así como no tocarás a la perfección la sonata a la luz de la luna la primera vez que toques un piano, es mucho más probable que tu primera aplicación sea un Hello World que un Facebook. Si no tiene la paciencia para seguir la curva de aprendizaje porque le resulta aburrido, no podrá entenderlo y luego dominarlo.

Para ser un buen programador, necesitas tener la capacidad de hacer una construcción lógica. Estar en humanidades en realidad no dice que no tengas tal habilidad. De hecho, hay varios campos dentro de las humanidades que usan las mismas facultades. Específicamente, he hecho un esfuerzo para contratar preferentemente personas con fondos musicales. La formación musical te enseña a conceptualizar en módulos y grupos. Además, la lingüística es muy técnica y lógica.

Pero como otros han señalado, la principal barrera que debes superar es que la encuentres “aburrida”. No aprendes programación para aprender a programar. Aprendes programación para resolver un problema. Al igual que la forma en que debe elegir qué tipo de computadora comprar debe basarse en su uso, debe aprender a programar un lenguaje de computadora en particular porque tiene un problema específico que desea superar.

E incluso si ese “problema” es simplemente “Quiero saber cómo programar”, mi recomendación es que encuentre algo que haga que requiera un programa. Encuentre un programa que haga eso, y luego comience a jugar con él. Puede ser que desee organizar su trabajo de literatura, por lo que utiliza las capacidades de Excel o incluso un programa de base de datos. O incluso que te gusta Minecraft, así que quieres personalizar el juego. Cualquier cosa de ese tipo, siempre que le interese y haya un objetivo que pueda alcanzar.

La programación requiere una gran cantidad de habilidades analíticas y lógicas. Algunas personas (como yo) tienen un talento para ello. Algunos otros tienen talento para otras cosas (arte o lenguaje).

Tengo muchos amigos que tienen dificultades para aprender a programar porque carecen de las habilidades analíticas y lógicas. Cada pueblo tiene un talento natural diferente para cada cosa. Como cómo alguien puede entender el lenguaje más rápido que otro, o dominar instrumentos musicales, etc.

Supongo que usted podría ser aquel cuyo talento no se encuentra en la región analítica / lógica. Dicho esto, todavía es posible aprenderlo, dada la dedicación y la persistencia.

Aún así, tienes que preguntarte. ¿Realmente quieres aprenderlo? Si quieres participar en el inicio, no tienes que ser un programador. Si bien la programación puede ser extremadamente divertida, también puede ser extremadamente frustrante. Imagina que escribiste el código para tus proyectos y apareció un error misterioso. Intenta arreglarlo durante semanas sin ningún resultado. Y la fecha límite está cerca, y usted es el único responsable del error.

La mejor de las suertes para ti.

La programación no es para todos. Así como a algunas personas les gusta jugar al ajedrez, mientras que a otros les gusta resolver crucigramas, la programación es una ciencia para resolver problemas. Comprender las matemáticas solo será útil si está utilizando las matemáticas, y sorprendentemente poca programación es matemática. Se trata principalmente de manipulación de datos con alguna habilidad de presentación. Honestamente, es más similar a contar historias que a las matemáticas.

Mire, si lo encuentra aburrido, aún puede ser parte de un inicio. Hacer diseño de interfaz de usuario o gestión de producto o marketing o logística o ventas. Un montón de roles que no implican código.

No sé, creo que para ser un buen programador debes tener una pasión por la lógica rigurosa. Las humanidades a menudo se caracterizan de manera poco característica como “suave” o “insípida”, pero hasta cierto punto esto es cierto. Incluso la filosofía rara vez exige el tipo de lógica implacable y despiadada que las matemáticas, la ciencia y la programación requieren como requisito previo para completar con éxito incluso las tareas más triviales. Si eso es algo que te resulta tedioso, nunca vas a encontrar la chispa.

La buena noticia es que estas cosas no se excluyen mutuamente. Amo el arte, amo el diseño, amo la literatura y la filosofía, no solo consumiéndola, sino haciéndola. También me encantan las matemáticas y la programación y la ciencia y todas las cosas “difíciles”. Puedes encontrar una pasión por ambos.

Si vas a ser un gran programador como alguien con una vida emocional y creativa rica (como uno que disfruta de las humanidades tiende a tener), debes encontrar tu “wow, ¡eso es genial!” momento. Aprecie el código como art. Encuentre los aspectos de la programación que lo inspiran, que los ilumina, que expanden su mente y lo llenan de asombro de la manera en que presumo que un gran libro o un interesante experimento mental debe haberle llevado a las humanidades en primer lugar. Están ahí fuera.

En una nota aparte, “The Social Network” y otras películas sobre software realmente no captan lo que es ser un programador. Se centran en el lado humano de las cosas: las relaciones interpersonales, los éxitos y los fracasos, el drama y la intriga. En realidad la mayoría de la programación no es así. Nadie quiere ver a un chico escribiendo intensamente durante 12 horas antes de ese momento de Eureka al final, donde todo funciona. Rara vez es divertido ver cada pincelada de un pintor, a menos que, como compañero de pintura, puedas apreciar las cuidadosas elecciones que está haciendo. Como laico quieres el producto terminado. El resto se ve tedioso. La apreciación de la artesanía está reservada a los compañeros artesanos.

Intenta encontrar un idioma que te guste. Todas las personas tienen diferentes cerebros. Alguien parece ser el lenguaje de los invasores del espacio, pero alguien afectó su belleza y simplicidad. Alguien escribe un programa de 10,000 líneas de código en Java, para hacer los cálculos que acomodarán 10 líneas en el lenguaje de J. Y cada uno argumentará que su programa es mejor. Dejar que el programa en Java sea largo, pero está claro a partir de los objetos pequeños. Pero el programador J convierte fácilmente los cubos de cuatro dimensiones en la mente. 🙂

Por cierto, aprendo el idioma Ela en este momento. Es un lenguaje muy fácil y divertido!

Ela, lenguaje funcional dinámico.

Creo que tú mismo lo has dicho: lo encuentras aburrido. Soy un desarrollador de Java y mi única calificación formal es una licenciatura en psicología. He estado en TI por 15 años y me encanta la programación. Me enseñé desde cero. Comencé con GW BASIC, pasé a Turbo Pascal y Delphi y terminé con Java y C # después de una breve aventura con C ++ y JavaScript.

Las características definitorias de un programador, en mi opinión, es que deberían poder comprender los principios básicos de la programación en su paradigma de programación elegido (ver: Comparación de los paradigmas de programación) y necesitan amar el software de escritura.

Programar es la recopilación de cientos, si no millones de horas de pruebas y errores, salir de la zona de confort, llanto suicida en la esquina de una habitación oscura (disculpe la exageración: p) y ¿qué no?

Comience con los lenguajes de programación más simples, como HTML, CSS, luego con JavaScript, Python, Ruby y luego con lenguajes más complejos. Estarás constantemente frustrado por tu falta de progreso (está bien, todos hemos estado allí).

Recuerda que si quieres algo que nunca has hecho debes hacer algo que nunca has hecho.

No tiene la visión que tienen los programadores experimentados, no ve un punto en todas las matemáticas.

Olvídese de los operadores y las características del idioma por el momento, busque las aplicaciones del idioma. Comience con los algoritmos de clasificación, avance hacia sistemas más complejos, ¡cree un sitio web! O intenta escribir tu propia aplicación Fast Fourier Transform. Mirar solo las características de un lenguaje es muy parecido a mirar una caja de legos; para mí, me parece que necesitas una fuente de inspiración sobre qué construir con ellos.

En mi experiencia, las personas que se especializan en las artes y que no están expuestas a temas difíciles y técnicamente rígidos como las matemáticas y la informática a menudo pasan por alto las complejidades de los programas de computadora. Las cosas en este lado del mundo no solo “caen en su lugar” o “simplemente existen”, tenemos que crearlas, y tienen que ser sólidas y completas. Intente examinar la complejidad de un software que utiliza todos los días e intente imitarlo. Incluso si fallas, será una buena experiencia de aprendizaje.

Si no es “lo tuyo” vuelve a lo que te gusta. Nunca podré escribir un poema, no puedo cantar o pintar. Tengo un problema incluso con el diseño de la interfaz para mi software :).
Cada uno de nosotros tiene sus propias fortalezas. Usa el tuyo.
Y recuerda: ser programador no te garantiza mucho dinero. Facebook fue uno de los cientos de sitios web muy similares.