¿Cuáles son las dificultades que enfrentan las personas al aprender a programar?

  1. El acceso a Internet está limitado a una interfaz de correo electrónico lenta para un cliente ftp.
  2. Ninguna familia, amigos o maestros que estuvieran en la programación (o al menos ninguno a quien quisiera acercarme).
  3. Libros limitados a lo que pude encontrar en mi librería local (en West Virginia).
  4. Microsoft Quick C para Windows.

Pensándolo bien, ciertamente había clases de programación que se impartían en el colegio comunitario local, pero como estudiante de secundaria nunca se me ocurrió aprovecharme de ellas. No tenía ganas de ganarme la vida con las computadoras.

Cuando comencé mi licenciatura, el internet era tan nuevo que mi asesor me dio su cuenta de la universidad para usar (ya que no tenía ningún uso terrenal para ella). Así que, a pesar de tener la gran cantidad de recursos disponibles en BITNET (y el conjunto completo de manuales VAX que estaban encadenados a la pared posterior en el centro de cómputo), mis primeros programas serios fueron macros de hoja de cálculo que se modificaban a sí mismos. (Parecía una buena idea en ese momento.)

Luego se mudó a Seattle, donde me perdí por completo la escena tecnológica. Tenía una copia de Mosaic, pero no pensé en buscar en esta nueva “World Wide Web” para obtener ayuda con la programación. Y ahí es donde aprendí C y el ensamblaje utilizando MS Quick C y los libros que encontré en el contenedor.

Una terrible escasez de información.

Vengo de una familia muy pobre de un pequeño pueblo en Inglaterra. Comencé a programar en los años 80 (me dieron el antiguo decrépito Spectrum 48k de mi amigo cuando recibió un nuevo 128k para su cumpleaños). Más tarde conseguí un Amiga de segunda mano. Ah, buenos días.

No tenía acceso a internet ni a libros técnicos. Ninguno de mis amigos estaba interesado en la programación, solo en los juegos, mis padres no tenían mucha educación y mis profesores no me ayudaban en absoluto. Crecí en una burbuja rural totalmente no técnica.

Mi único acceso a la información era de las revistas de juegos mensuales que ocasionalmente tenían listas de códigos que se podían ingresar cuidadosamente a mano. O algún código fuente interesante para demostraciones que mis amigos lograron obtener a través de los tablones de anuncios.

Toda mi adolescencia fue así. Un programador aficionado que exploraba y probaba cosas raras, arrebatando desesperadamente los pocos fragmentos de información que podía detectar de vez en cuando.

  • Sin internet
  • 1k de RAM, que tenía que soportar cualquier carácter mostrado
  • Un pequeño teclado de membrana sin retroalimentación.
  • Monitor fue un CRT de 3 pulgadas en blanco y negro
  • Se bloquea el programa y se reinicia la computadora.
  • Sin sistema operativo
  • Almacenamiento de cinta de cassette
  • Solo dos libros para ayudar: el manual básico de Sinclair y Entendiendo el Z80 por Rodnay Zaks
  • No hay padres que puedan ayudar.
  • Grandes cantidades de tareas escolares en diez asignaturas de nivel O
  • Sin dinero
  • Pocos amigos que puedan ayudar
  • Tuvo que traducir manualmente el código de ensamblaje y los mapas de bits en hexadecimal para ingresarlos

“Fue el mejor de los tiempos, fue el peor de los tiempos! ”

Trabajé como asistente de enseñanza en el departamento de informática e ingeniería durante 1,5 años. He visto a muchos estudiantes enfrentando dificultades mientras aprenden programación. Algunas razones son:

  1. Intentan aprender primero la sintaxis, no la forma de resolver problemas . A menudo se encuentra que están tratando de recordar la sintaxis de C, C ++, etc., pero difícilmente intentan practicar la resolución de problemas.
  2. Escribiendo el código de inmediato. Se encontró que, cuando empiezan a resolver un problema, comienzan a codificar a ciegas. Lo cual es totalmente incorrecto. Deben resolver el problema, encontrar el algoritmo en lápiz y papel y luego escribir el código.
  3. No se pueden identificar las partes pequeñas de un problema complejo . Se vio que no podían darse cuenta de que los problemas complejos se podían dividir en partes más pequeñas y se podían resolver fácilmente.
  4. Entendiendo Muchos tenían tendencia a codificar sin previo entendimiento.

Hubo razones comunes por las que he visto a los estudiantes sufrir mientras aprenden programación.

Bueno, se podría decir que nunca dejas de aprender como desarrollador para que siempre surjan nuevos desafíos. Sin embargo, cuando comencé a programar, estas serían las 11 dificultades principales que enfrenté.
Dificultades:
1. Poner en palabras lo que se supone que debe hacer una llamada de método o variable
2. Llevar los conocimientos teóricos a la práctica.
3. Comprender la diferencia entre clases privadas, públicas, protegidas e internas.
4. Tomar una idea y ponerla en forma de código.
5. Resolviendo problemas
6. Saber cuándo algo era demasiado complejo para mi nivel de conocimiento actual
7. Saber cuándo pedir ayuda.
8. Saber qué idioma aprender y cuántos debo aprender.
9. Aprender los fundamentos del desarrollo de software.
10. Qué temas estudiar o cómo debo estudiar un tema determinado
11. ¿Por qué algo funcionó o no funcionó?

Eso fue hace tres años, y las 5 principales dificultades que enfrentaría ahora serían.

Dificultades que enfrento ahora:
1. Averiguar qué proyectos quiero construir.
2. Qué tecnologías quiero practicar.
3. Reflexionando sobre la pila completa o la especialidad de desarrollador backend
4. Poner en palabras por qué estoy aprendiendo F # a mis amigos desarrolladores (piensan que es una pérdida de tiempo porque no es un lenguaje popular)
5. Cómo conseguir un trabajo como desarrollador junior

Actualmente estoy trabajando como ingeniero de software en una empresa que hace software integrado.

No planeaba convertirme en ingeniero de software. De hecho, mi mayor dificultad fue que al principio odiaba la programación con pasión.

Mi mayor problema al principio, con mucho, fue que encontraba que la programación era aburrida. Me sentí tan malditamente repetitivo y tedioso que me recuerdo diciéndome que nunca haría eso como un trabajo. Todo esto gracias a mi primer curso de introducción a la programación, que consistió en aprender prácticamente la mayor parte de la sintaxis de Java durante 6 meses y luego trabajar en un proyecto aburrido y predefinido.

Había hecho algo de programación antes de eso. Haciendo algo de modding para juegos en línea usando scripts simples. Sin embargo, en ese momento no creía que eso fuera realmente programación y ese curso introductorio me mostraría qué era la programación real . Así que sí…

Pero aquí estamos. En algún momento, llega a un acuerdo con el hecho de que la programación no se trata de aprender lenguajes de programación. Básicamente, se trata de aprender a hacer que una computadora haga lo que usted quiere y mejore con esto con el tiempo. Y eso puede llegar a ser muy divertido y adictivo.

Aprender idiomas, comprender marcos y otras herramientas es solo eso. Herramientas Puede ser bastante molesto a veces, pero afortunadamente hoy en día es increíblemente rápido y fácil de obtener respuestas sobre cómo superar problemas que se centran en el trabajo con herramientas.

Un programador aspirante está lleno de energía y entusiasmo para conquistar el mundo, pero encontrar el mentor adecuado o un buen curso / tutorial para aprender es realmente difícil. Por ejemplo: si desea aprender JavaScript, Google le sugerirá 100 fuentes para aprender. Como principiante, si comienzas con un tutorial incorrecto, te perderás en el desorden de codificación y perderás tu entusiasmo muy pronto. Así que encontrar el mejor tutorial para aprender es realmente importante.

Puede probar https://hackr.io para encontrar los mejores cursos de programación en línea y tutoriales votados por la comunidad de programación. Encuentre un buen tutorial y comience con la codificación. La codificación puede ser realmente abrumadora, especialmente al principio. No renuncies ¡Todo lo mejor!

Acceso telefónico extremadamente lento, y solo una pequeña cantidad de tiempo (a menudo supervisado) que realmente podría usar por semana. Creo que tal vez tenía una hora a la semana o algo así (a menos que estuviera descargando algo).

Esto fue un gran dolor, porque cualquier cosa que quisiera, como Visual Studio o simplemente el paquete de instalación de PHP tomaría toda la noche. Si no tuviera un buen descargador, la conexión podría romperse y habría perdido la noche.

Además … Google realmente no fue de mucha ayuda durante los primeros 4 años, aproximadamente, cuando salió Stack Overflow. Realmente no podrías encontrar respuestas a problemas exactos. La mayoría de las veces usé la web para tutoriales ocasionales y descargué muchos códigos y scripts para revisarlos (aparte del alojamiento y otras cosas así, que eran terriblemente lentas).

Una vez a la semana, mi familia asistía a una reunión en este lugar que tenía WiFi abierta. No fue terriblemente rápido, pero tal vez fue 10 veces más rápido que nuestro dial-up. Era como una tienda de golosinas. Cada semana, descargué tantos scripts, instalé tantas plataformas de desarrollo, tomé tanto software y herramientas como pude en las 3 horas que teníamos, y luego jugaba y trabajaba con ellos durante el resto de la semana.

La mayor parte de lo que aprendí temprano vino de los libros. Iría a la biblioteca y vería pilas que descansaban debajo de mi barbilla cuando salía. JavaScript, Diseño Web, PHP, MySQL, Linux, etc.

El desarrollo de front-end era un juego completamente diferente en aquel entonces. No se llamaba así, solo era “diseño web”. Ahora tenemos todos estos pequeños marcos que puedes enchufar y jugar, pero en ese entonces era principalmente crear y / o cortar las imágenes correctas y escribir CSS sin formato con quizás un poco de JS para cosas elegantes como botones flotantes o … espera a que … menús desplegables que soplaron las jodidas mentes de todos.

Debido a que carecía de SO, los errores podían tardar años en resolverse (sin mencionar muchas de las herramientas de depuración de fantasía que ahora no eran una cosa) y encontrar la solución más directa para algo a menudo no era una opción. Las soluciones de Hacky eran la norma por esto. Podrías buscar en el índice de un libro de O’Reilly, pero eso fue acertar o fallar.

Recuerdo haber comprado un libro en Ubuntu una sola vez porque me mostraba cómo hacer algo en shell-scripting que había querido desesperadamente hacer. Valió la pena, aunque esas eran prácticamente las únicas páginas del libro que usé.

Avance rápido hoy …

El desarrollo es el maldito cielo.

StackOverflow puede responder a casi todo en cuestión de segundos .

El WiFi está ardiendo rápidamente, y si eso no es lo suficientemente bueno, tienes Ethernet justo ahí.

Los marcos, las herramientas y los IDE se han desarrollado hasta el punto de que puede reunir proyectos complejos en días que habrían tardado semanas.

Las API cognitivas que están disponibles de forma gratuita a través de Bluemix y otras plataformas (sin mencionar el vasto mundo de las API disponibles en general) me habrían hecho marear como un niño.

Sin mencionar, para aquellos que recién comienzan a aprender, los programas de educación de hoy son increíblemente buenos y fáciles de usar, con vastas comunidades disponibles con solo hacer clic en un botón para ayudarlo.

Es una locura lo lejos que han llegado las cosas en tan solo 10-12 años. Tengo muchas ganas de ver lo que nos depara la próxima década.

En cuanto a hace más de 15 años en una pequeña ciudad polaca, fue sin duda la falta de recursos educativos. Aprendí yo mismo a Pascal, no porque pensé que era el mejor lenguaje de programación, sino simplemente porque el libro sobre Pascal era el único libro sobre programación en librerías locales y quería desesperadamente saber cómo se hacían los programas de computadora y nadie en mi entorno podía responder a eso. pregunta. Luego aprendí y usé Perl por un tiempo porque era el segundo libro sobre programación que pude encontrar (incluso hice algunas cosas interesantes con él como el cliente SMS2IRC que me permitió usar IRC en mi Nokia 3210)

Incluso cuando conseguí mi primera información de modem eran escasas. Mi tiempo en línea se limitaba a unas pocas horas a la semana, el descubrimiento en la web era terrible y podía agarrar la cantidad de manuales, hack y phreak zines y listas de correo electrónico en Linux y programación que pudiera encontrar. Luego aprendí de ellos durante toda una semana antes de poder obtener algunos nuevos, o para aclarar cosas que no entendí de la semana anterior.

Hoy pongo los ojos en blanco cada vez que veo preguntas como “qué lenguaje de programación debería aprender” o “cuál es el mejor motor de juego para aprender” porque se repiten varias veces al día en mi canal de Quora, mientras que la respuesta es muy simple: cualquiera de ellas acaba de empezar a programar por el bien de Pete.

Los nuevos conceptos y la superación de la dificultad de resolver un problema técnico y los errores realmente difíciles de solucionar.

En promedio, la implementación de su función que su mente no ha hecho antes (a pesar de ser un concepto simple) llevará de 3 a 7 días.

Averiguar cómo solucionar un error … oh, niño, cuando se trata de un código que no has visto durante mucho tiempo a pesar de tener comentarios. Es un número difícil de conseguir.

Desarrollar nuevos hábitos mientras estás atrapado con viejos hábitos (esto es inevitable, ya que haces las cosas a tu manera, por así decir, en lugar de las convencionales, pero debes comenzar en algún lugar para aprender). Pero esto es sorprendentemente fácil de superar de alguna manera a través de recordatorios diarios).

No te preocupes, viene con practicar y aprender un poco al día. No hay un libro que diga “hazte bien con la programación, rápido y fácil”. Tomará tiempo y no sucederá de la noche a la mañana. Cuando su mente nunca lo haya hecho antes, a veces puede ser abrumador. Pero si pones tu mente en tomar pasos pequeños para resolver el problema, confía en mí, ¡aprenderás cómo programar y hacerlo bien eventualmente, amigo mío!

Al aprender cualquier programación no es tan difícil. La dificultad viene cuando tienen que usar su propia lógica. cuando se desarrolle la lógica, no habrá ningún problema en el aprendizaje de ningún idioma, ya que la mayoría de los lenguajes funcionan de manera similar, solo que tienen una sintaxis diferente. Entonces, mejora tu lógica y estarás bien con cualquier idioma.

No tenía internet y tenía terribles problemas para entender las variables. No tengo idea de por qué, porque ahora parecen muy simples. Aprendí programación solo porque accidentalmente descubrí Microsoft QBasic y me interesé en él, luego compré un libro sobre él. Después de eso seguí comprando libros, gastando demasiado en ellos y no progresando mucho con la mayoría de ellos. Pero poco a poco se fue juntando.

Desde que estaba en la fundación en mi universidad, solía enseñar a mis amigos cómo codificar. Lo que veo todo el tiempo. Desde siempre. Algunas personas tienen problemas para dividir el gran problema en trozos más pequeños con el fin de atacar los problemas más pequeños y poco a poco y luego terminar el gran problema.
Antes de empezar a escribir ese código. Asegúrate de que todas las líneas funcionen. Pruebe cada línea por línea antes de tener un gran lío con el que lidiar. Incluso yo todavía cometo el error de no dividir el gran problema en pedazos más pequeños. Sólo me gusta apostar a veces. ¡Pero sí, solo sé bueno en dividirlo en pedazos más pequeños y estarás volando!
¡Buena suerte!

Tener que volver a escribir lo que hice cada vez que reinicié la computadora está arriba. Aprendí en un portátil VTech para niños. Tenía solo 2 líneas de pantalla LCD y un montón de ejercicios de combinación / gramática. Sin embargo, también vino con un intérprete básico y un libro que lo acompaña.

El único inconveniente fue que no tenía un cardridge de almacenamiento que se vendía por separado. Así que al final del día. Todo lo que hice fue perdido.

Aún así, la mejor compra que he hecho. Es lo que me metió en la programación.