¿Cuál es la forma más efectiva de aprender o enseñar programación?

Gracias por la A2A. No hay mucho que añadir al comentario de Miles Fidelman. La habilidad solo se puede dominar en el trabajo, al igual que otras profesiones “difíciles” con una alta remuneración: la medicina y la ley. Realmente no se puede “intentar” o “jugar” con esos.

La programación es más accesible, pero aún así, muy pocas personas son creativas y están organizadas para embarcarse en su propio proyecto de “pasatiempo”, en lugar de ser lideradas por el jefe. Y quieren aprender a programar para “conseguir un trabajo”. Free Code Camp proporciona una solución: proyectos sin ánimo de lucro. Si no puede administrar la contribución a esos, entonces, simple y llanamente, no tiene la aptitud para la programación. No estoy asociado ni pagado por ellos.

La percepción es el problema. Mirando hacia atrás en mis años de escuela secundaria y universidad, cuando decidí seguir adelante con la programación, nunca tuve expectativas de programar, por ejemplo, el primer juego de autos en 3D: Test Drive de Accolade (que más tarde se convirtió en The Need for Speed) o el primer vuelo de combate sim: Falcon, después de aprender C en el nivel “Hola, mundo”. Estaba bastante contento con la reproducción de un Centipede alfanumérico. Sabía la diferencia en esfuerzo y conocimiento. ¿Es tan difícil de entender? Como programador, se le confiarán estimaciones de soluciones muy complejas. Comienza con la comprensión de lo que se puede hacer en su nivel actual y lo que necesita investigar, por su cuenta. No tenía Google (o Internet) a finales de los ochenta.

Se trata de la paciencia, la capacidad de atención y el desarrollo analítico general de la mente: para comprender, no puede pasar de la consola o la versión web de “Hola, mundo” a un producto de calidad industrial. Perdón por ser un viejo gruñón, en aquel entonces nadie anunciaba “campos de entrenamiento”, “autoestudio” o, en general, borraba la línea entre ser un usuario avanzado y un creador de software. Las computadoras también eran caras y exigían respeto. ¿Es realmente difícil entender la cantidad de complejidad y trabajar detrás de un producto comercial aparentemente simple? ¿O son innumerables las historias de Cenicienta? Zuckerberg fue educado en CS. Así fue Elon Musk.

Comencemos con la necesidad de aprender al menos dos idiomas: por ejemplo, Java y SQL. No se puede construir un producto comercial con uno. Luego vienen los marcos complejos que conectan esos idiomas y paquetes. Siempre ha habido marcos. Incluso de vuelta en el tiempo de DOS. ¿Alguien recuerda la visión turbo de Borland? Y antes de Internet, era solo la documentación oficial (ayuda de hipertexto) que venía con el producto. No hay libros en mi caso. No google No StackOverflow. Una vez que haya puesto su mente en esto, debería poder ver cómo puede aplicar el marco para construir el producto completo (de lo que Miles está hablando).

Lo cual, volviendo al primer párrafo, requiere la “visión general” del producto que desea construir en lugar de simplemente querer aprender la “habilidad” para obtener un “trabajo”. Comience con algo pequeño, pero completo, por ejemplo, un administrador de contactos (CRM de personas pobres). Siempre he tenido algo en mente, por lo que recuerdo. En mi opinión, la industria no necesita que los pequeños especialistas queden encasillados en acrónimos “candentes” específicos de sus jefes. Un verdadero trabajo en equipo solo es posible, cuando todos comprenden la gran meta / imagen y se alinean con ella.

Comienza por entender lo que quieres. Escoja alguna aplicación o sitio web y pregunte: ¿qué necesito aprender para construirlo? No al revés: escribir un “Hola, mundo” y preguntarte cómo puedes pasar de eso a algo “genial”. Sé muy específico en tu visión. Nuestra ocupación requiere claridad de cristal.

No puede haber una respuesta universal a esta pregunta. Realmente depende del individuo. A algunas personas les va bien ir a la universidad. Algunos lo harán bien asistiendo a un bootcamp de codificación. Algunos preferirán los cursos en línea o MOOCs. Algunos encontrarán el aprendizaje por su cuenta, y a su propio ritmo, ideal. También puede existir la cuestión del costo (las universidades y los campamentos de entrenamiento no son baratos).

Este es mi mejor consejo si quieres una forma agradable y suave de aprender a programar:

Primero, comienza con un buen lenguaje de enseñanza . Es una locura comenzar con un lenguaje industrial como Java, Python, JavaScript, C, Swift, etc. Los lenguajes industriales llevan una gran cantidad de equipaje que puede distraer a un principiante que debería enfocarse en aprender conceptos básicos de programación, NO en sus peculiaridades en el idioma de partida. y rarezas.

En segundo lugar, para el idioma de enseñanza elegido, siga uno o dos tutoriales de idioma para calentarse. También puede echar un vistazo a la referencia del idioma para familiarizarse con el idioma, a vista de pájaro.

Tercero, realice una serie de ejercicios de programación, cosas como rutinas de clasificación, algoritmos de búsqueda, cálculo de números de Fibonacci, etc.

Cuarto, comienza a escribir pequeños programas para hacer tareas simples. Trabaja en tu camino hacia proyectos de software más grandes. Recuerda, la clave para aprender a programar es la práctica . Mucha y mucha práctica de escribir software.

Para ser honesto, no hay muchos buenos idiomas para enseñar. Solo puedo pensar en Basic, Logo, Pascal, Scheme y Smalltalk. De estos, recomiendo altamente Smalltalk.

Por un lado, Smalltalk fue diseñado por Alan Kay y su equipo en Xerox PARC para enseñar programación a niños . Eso es un buen pedigrí.

Por otro lado, el lenguaje es sumamente simple y fácil de aprender. ¡Sólo tiene seis palabras reservadas! La sintaxis completa puede caber en una tarjeta postal.

Y, sin embargo, Smalltalk es increíblemente poderoso. Lea por qué Pharo podría ser el futuro del desarrollo de software.

Una vez que haya aprendido la programación de Smalltalk, es muy fácil seleccionar lenguajes posteriores como Java, Python y JavaScript. Eso es porque ahora tienes una base sólida.

Aquí hay algunos grandes recursos:

  • un tutorial agradable y suave – Aprende Smalltalk con el Profesor Stef
  • el Smalltalk más desarrollado – ¡Bienvenido a Pharo!
  • un libro gratis – Pharo actualizado por ejemplo
  • una guía de introducción para Pharo — Inicio rápido de Pharo
  • un MOOC (curso en línea abierto masivo): programación de objetos en vivo en Pharo
  • Algunos videos geniales – Smalltalk 4 You
  • un libro que me gusta (no basado en Pharo) – Smalltalk by Example
  • otro libro que me gusta (no basado en Pharo) – Programación de computadoras usando GNU Smalltalk
  • Algunos recursos adicionales – Recursos

Este libro (no gratuito) es mi favorito para aprender a usar Smalltalk para la programación orientada a objetos: Smalltalk, Objects, and Design, de Chamond Liu.

Yo mismo he publicado un montón de tutoriales de Smalltalk. Los últimos son:

  • Aprende a programar
  • Tetera: la programación web es fácil
  • Cómo utilizar el depurador Pharo

Buena suerte.

He enseñado en muchas instituciones, he visto diferentes enfoques, y seré honesto, no me gustan ninguno de ellos. A pesar del arduo trabajo y las enormes mejoras, no estoy convencido de que sepamos cómo enseñar ciencias de la computación en general o programación específicamente. Richard Kenneth Eng aborda un tema clave; ¿que lenguaje? No hemos resuelto esto. Tampoco es justo esperar que lo sepamos; hemos estado enseñando ciencias modernas durante unos pocos cientos de años, y matemáticas y retórica durante miles de años, escribiendo para miles más, pero solo hemos estado enseñando ciencias de la computación y programación durante algunas décadas.

La clave, sin embargo, es superar la joroba para que puedas hacer lo que otros sugieren; piensa en un programa y muévete en esa dirección. ¿Cómo superar la joroba? Creo que (aunque tengo pruebas limitadas) de que aprender con un maestro o profesor, en un aula que usa aprendizaje activo (también conocido como laboratorios), es lo mejor. Esto no debería sorprender, ya que el argumento a favor de este modelo se llama “escuela”; Se ha demostrado su eficacia. Sin embargo, un estudiante suficientemente motivado puede aprender de un libro de texto (posiblemente) o un MOOC. No me gustan los libros de texto, ya que la mayoría quita la creatividad del trabajo. Hay algunas pruebas de que la mayoría de las personas que tienen éxito en una programación MOOC ya tienen una licenciatura en STEM, pero esto no es para todos. A veces, también hay oportunidades de aprendizaje en los hackerspaces o como parte de grupos de usuarios locales.

Una vez que superes la joroba, haz las cosas. Hará un mal trabajo al principio, pero está bien, ya que el objetivo es aprender, no despertar a un artesano experto en el primer día. ¡Buena suerte y diviertete!

Aprender programación es mucho un ejercicio para superar la cabeza. Como dijo Dan Salyards, hay tantos estilos diferentes en tantos idiomas diferentes, tienes que estar dispuesto a dar un salto de fe y simplemente aferrarte a algo. Desde ese punto, es una cuestión de involucrarse, de atormentar tu cerebro y de practicar sin parar hasta que finalmente llegas a un punto de hacer algo semi funcional.

Enseñar es otra cosa. Lo más importante es hacer conexiones y conceptualizar ideas de manera que el estudiante tenga momentos constantes de “¡ajá!”. Elogiando sus logros y no siendo despectivo cuando cometen los muchos errores inevitables. A menudo, el alumno tendrá que reescribir completamente segmentos enteros de código porque la lógica que pensaron que entendían está muy lejos de la funcionalidad que pensaban que tenían. La paciencia necesaria para aprender es algo completamente diferente de la paciencia necesaria para enseñar.

En cualquier caso, trabajar en proyectos que tengan un impacto en el mundo real tendrá el mayor beneficio para el alumno. El script clásico de “hola mundo” no es un mundo real, ni tampoco le dice nada más acerca de un lenguaje de programación que lo que la punta de la nariz de alguien le dice acerca de esa persona. Participar en aplicaciones funcionales y de uso real, incluso si solo duran una hora al día, permitirá a las personas hacer grandes saltos sobre sus compañeros que están en su habitación leyendo sobre idiomas 10 horas al día. Esto viene de alguien que hizo esto último durante años y solo después de ingresar a una posición de desarrollador web junior realmente llegué a entender realmente lo que estaba estudiando todo ese tiempo.

¡Hola! Aunque no soy un experto en el arte que está programando (ni mucho menos, de hecho), no hace mucho estaba en una posición similar. Aprendí mis principios básicos de programación a través de:

  1. Codecademy: una plataforma gratuita para dominar la sintaxis básica de varios idiomas, tanto antiguos como nuevos.
  2. MOOCs – estas fueron mi principal fuente de aprendizaje. Una que recomendaría ampliamente es la “Metodología de programación” de Stanford Engineering Everywhere (CS106A), que se concentra en Java. ¡El profesor Sahami es simplemente el mejor maestro que uno podría tener!

De dos maneras, los problemas en línea y el aprendizaje de una API, aprender una API generalmente implica probar diferentes formas de realizar una tarea. Podría comenzar con un adaptador de cursor básico y usarlo con una vista de lista, luego podría crear su propio adaptador personalizado y usarlo con su clase de ayudante de base de datos de SQLite, esto le proporcionaría un diseño limpio a su código. Luego, puede probar una solución utilizando RecyclerView con RecyclerViewCursorAdapter jugar con cosas, experimentar con diferentes patrones y refactorizar sus propios proyectos codificando usando un diseño diferente. Luego pregúntese qué funciona mejor y qué es plausible en la producción.

Cuando enseñé electrónica en la fuerza aérea, una de mis formas preferidas es hacer pequeños proyectos. Tuve clases de 16 a 20 alumnos.

Un poco de teoría para ponerlos en marcha y establecer de qué se trataba el proyecto.

Luego, déjelos trabajar en grupos de dos, teniendo solo una estación de entrenamiento por grupo. De esta manera tenían que trabajar juntos, y eso generó muchas buenas discusiones y, a menudo, podían encontrar soluciones juntos.

Luego disuelva los grupos y haga una discusión plenaria:
* Qué aprendiste
* Lo que fue difícil
* ¿Dónde podemos llevarlo a continuación?

Como instructor, estaba ocupado, porque tenía que atender a 8-10 grupos. Pero como podrían trabajar juntos, podría darles a todos los grupos la atención que necesitaban.

Un tiempo fantástico. Todos nos divertimos

Creo que puedes aplicar esto a la formación en programación.
Pero si dejas que todos tengan su propia computadora, no trabajan mucho juntos. Ellos te estarán esperando.

Creo que la forma más efectiva de aprender programación es buscar buenos sitios web que enseñen programación. w3Schools es un gran sitio web y la mayoría de sus tutoriales son concisos y directos. Aprendí de w3schools hablar de html, html5, css, css3, bootstrap, javascript, jquery, angular, php, sql, ajax. También puedes aprender de los libros. Tenemos quienes han estado programando por año y ponen toda la experiencia que han reunido en un solo libro para facilitar el aprendizaje para los principiantes. Buscar buenos libros en línea y leer. Si haces esto, llevarás tu habilidad de programación al siguiente nivel …

La forma más fácil es aprender un lenguaje fácil y de alto nivel mediante la práctica. Recomiendo algo como esto

Aprendiendo Python – La guía del autoestopista de Python

La codificación tiene mucho más en común con la escritura que la mayoría de los hackers están dispuestos a admitir. Hay tantos estilos diferentes para codificar como programadores.

¿Cómo le enseña a alguien a hacer pequeñas revisiones que solo son importantes para la unidad de trabajo que están realizando?

¿Cómo le enseña a alguien a usar las pestañas, porque alguien de su equipo usará la barra espaciadora 3 veces, en lugar de la pestaña macro, y en un año mantendrá el código y tendrá que dedicar 30 minutos a corregir la sangría?

¿Cómo le enseña a una persona que es mejor tener un conteo de línea negativo que un gran conteo de línea positivo?

Bueno, dedicas el tiempo a revisar su código y lo mantienes hasta que lo hagan bien. Al igual que su maestra de 3er grado le hizo presentar su trabajo, los panda no son osos , 7 veces, y ella le hizo corregir todos los pequeños errores que cometió, reescriba párrafos enteros para que sean más claros.

Simplemente hazlo.

Encuentre un proyecto de código abierto en el que le gustaría contribuir, escriba un juego simple o una aplicación para el teléfono, o haga algo más donde realmente tenga que programar.

Sí, es frustrante y difícil. Pero crecerás mucho.

¿Cuál es la mejor y más eficiente manera de aprender a bailar? Danza. ¿Como dibujar? Dibujar. ¿Cómo tocar el piano? Siéntate y juega.

Lo mismo con la programación. Simplemente hazlo.

Ingredientes:

  • Alguien que encuentra su sabor inicial emocionante como el infierno.
  • Proyectos del mundo real para trabajar
  • Alguien en su espacio al que acudir para recibir consejos / direcciones ocasionales

Aprender lo clave es la práctica.

Para enseñar es lo que hay que hacer hoy en Toronto. Enseñar a alguien, es mejor programar para tomar ejemplos y relacionarlos.

Siempre me ha gustado hacerlo. Luego, cuando cometí un error, descubrí dónde y cómo ocurrió el error. Enjuague y repita.