¿Enseñar programación te hace un mejor programador [cerrado]

40

Me considero un programador de Python intermedio y se me ha ofrecido la oportunidad de ser un entrenador para una clase de programación de Python para principiantes.

Me preguntaba si esto realmente ampliaría mi repertorio de programación. ¿Alguien ha tenido una experiencia esclarecedora después de haber capacitado exitosamente a un grupo de personas?

¿Depende también de esas personas, ya sean programadores o estudiantes novatos? (En mi caso, son programadores intermedios .NET y Java)

¿Qué debo esperar de ellos?

Uno de mis miedos es: ¿qué pasa si me ahogo cuando uno de ellos hace una pregunta enredada? ¿Esto es normal?

greengit
fuente
No se preocupe si no sabe una respuesta. Al señalar a sus estudiantes un área con la que no está familiarizado, le permite saber lo que necesita aprender para enseñar a los estudiantes del próximo año.
Martin York
Gracias. Pero la capacitación NO es en la universidad: es una oportunidad única para capacitar a algunos empleados de Java / .NET de un par de pequeñas empresas de desarrollo web.
treecoder
34
La enseñanza de nada le hará mejor en el que , a causa de enseñanza obliga a comprenderse bien que . Además, estás esencialmente volver a estudiar lo que se está enseñando.
Jake Berger
2
Sé tu yo natural y expresa el conocimiento. Los estudiantes son personas como tú y yo que tienen la intención de aprender escuchándote en la sala de clase. Cuando sus estudiantes obtengan altas distinciones o encuentren soluciones increíbles a sus problemas debido a su enseñanza, se mostrará. La satisfacción que puede obtener podría fácilmente desafiar la expresión.
vpit3833
2
Todos los entrenadores que he entrevistado; han fallado la entrevista para el puesto de desarrollador La programación no es solo teoría. Para ser un mejor programador tienes que aprender y practicar haciendo aplicaciones del mundo real.
Muhammad Hasan Khan

Respuestas:

37

En mi experiencia, enseñar programación me hizo mejorar. Me obligó a comprender mucho mejor los conceptos que anteriormente había aceptado o dado por sentado. Cuando tuve que articular ideas que eran viejas para mí pero nuevas para los estudiantes, de varias maneras diferentes (porque no todos aprenden de la misma manera con los mismos ejemplos), eventualmente me llevó a una comprensión más profunda del material.

Y sí, a veces los estudiantes hacen preguntas para las que no sabes la respuesta. Está bien, puedes decirles que no lo sabes, proponer una posible explicación y prometer que la investigarás antes de la próxima clase.

FrustratedWithFormsDesigner
fuente
1
@greengit Te sugiero que compares los idiomas, pero asegúrate de saber realmente de qué estás hablando cuando digas que un idioma es mejor que otro porque algunos estudiantes pueden estar en desacuerdo y tener argumentos contrarios válidos. Compararlos y mostrar formas en que python facilita las diferentes tareas que en Java / .NET es una excelente manera de ayudar a presentar los conceptos.
Ryan Matthews
2
Diría que mantenga las comparaciones al mínimo y concéntrese en cómo hacer las cosas en Python. Supongo que ya están familiarizados con construcciones básicas como asignación de variables, bucles / iteración, funciones, recursión, estructuras de flujo de control, etc. Puede ayudar diseñar el proyecto que construyen durante el curso (si es lo suficientemente largo para eso) .
FrustratedWithFormsDesigner
3
@greengit No finjas saber algo que no sabes. Si no sabe lo suficiente para hacer una comparación, úsela como un punto de aprendizaje y pídale a su estudiante que explique cómo funciona en Java / .NET e intente hacer una comparación juntos.
Davy8
2
@greengit Creo que ayuda no entrar con la suposición de que necesitas saber todo sobre el tema. Eso es como esperar que hagas un trabajo sin la capacidad de buscar referencias. Simplemente esté de acuerdo con el hecho de que no va a tener todas las respuestas, pero puede ayudar a dirigir a sus estudiantes a las respuestas. Quizás les dé términos clave a Google.
Davy8
1
+1 por admitir cuando no sabes la respuesta. Veo que demasiados instructores simplemente inventan algo en el acto en lugar de admitir que no lo saben todo. También he tenido algunos buenos instructores que usarían como una oportunidad, hacer que los estudiantes encuentren la respuesta, enseñando cómo buscar las cosas. Eso debe hacerse con cuidado para que no desaliente a las personas a hacer preguntas.
Jim C
30

Un antiguo estudio de la Universidad de Texas hizo los siguientes hallazgos.

Las personas retienen:

  • 10 por ciento de lo que leen

  • 20 por ciento de lo que escuchan

  • 30 por ciento de lo que ven

  • 50 por ciento de lo que ven y oyen

  • 70 por ciento de lo que hacen

  • 90 por ciento de lo que enseñan

Siguiendo esta lógica, la mejor manera de APRENDER algo y retener lo que ha aprendido es hacer su mejor esfuerzo para enseñárselo a otra persona.

A pesar de que me fui por la Comp Sci 101 en la escuela, tomé un trabajo de tutoría para C ++ y en realidad no APRENDÍ C ++ hasta que me vi obligado a enseñarlo a estudiantes con dificultades. Era como una orgía de bombillas que se apagaban en mi cabeza mientras ayudaba a los graduados no CS con sus tareas.

eje de arce
fuente
2
+1. Se alcanzó mi límite de votación :(
Indíqueme
22
Tal vez deberías dejar de referirte a esa tabla. willatworklearning.com/2006/05/people_remember.html
Shawn D.
55
@ShawnD. Me lo imaginé ... porque sabes lo que dicen, el 84% de las estadísticas están compuestas. Creo que lo más importante debería tomarse para el mensaje más amplio. Conservo mucho más de lo que enseño que de lo que leo. Esto es un hecho para mí como una observación natural de mí mismo. Ese fue el punto que intenté hacer.
maple_shaft
3
Buenas estadísticas, +1. Mis experiencias son en gran medida las mismas. Tenemos un dicho aquí: los que pueden, lo hacen. Los que no pueden hacer, enseñan. Los que no pueden enseñar, enseñan deportes. Es broma :)
Falcon
2
@Falcon, una versión diferente de la última oración es "Aquellos que no pueden enseñar, administrar" ;-)
Péter Török
10

No he enseñado sistemáticamente la programación, solo intenté explicar algún concepto o problema a más o menos extraños. Siempre fue una experiencia interesante, y siempre aprendí algo.

De hecho, Jan Comenius ya notó hace un par de cientos de años que la mejor manera de comprender realmente algo es explicarlo a los demás .

Así que adelante, será una experiencia valiosa y enriquecedora para ti. Seguramente obtendrá preguntas difíciles o sorprendentes, está bien. No intentes fingir que lo sabes todo, solo sé honesto y diles algo como "No sé, pero te responderé". Solo te respetarán mejor por ser honesto.

Péter Török
fuente
5

Además de lo que mencionan las otras respuestas, no olvide que, mientras enseña , también puede aprender de sus estudiantes si es de mente abierta al respecto.

Usted mencionó en un comentario que su "conocimiento de Java / .NET es casi cero". Esa es una oportunidad perfecta para aprender de sus alumnos. La enseñanza no es un proceso unidireccional.

Si no sabe la respuesta a una pregunta, no trate de ocultar ese hecho. El mayor perjuicio que un maestro puede hacerle a un estudiante es fingir que sabe algo que no sabe. En el mejor de los casos, pierde su confianza cuando descubren que no sabe de qué está hablando, en el peor de los casos, los engaña y transmite información falsa, lo que es peor que ninguna información.

revs Davy8
fuente
+1 para "también puedes aprender de tus alumnos si eres de mente abierta". Lo experimenté cuando enseñé algunas clases nocturnas, hace años.
DevSolo
4

Sí, obtendrás una comprensión más profunda. Hice experiencias similares como las otras respuestas que obtienes aquí.

Hice una experiencia adicional: me volví más rápido en los análisis de errores. Enseñas a la gente, entonces cometen errores, en los que nunca pensaste. Cuando los ayudas, tienes un ojo para el código problemático (al menos, lo hice).

Uno de mis miedos es: ¿qué pasa si me ahogo cuando uno de ellos hace una pregunta enredada? ¿Esto es normal?

Pienso que es normal. Y mis alumnos no tuvieron ningún problema cuando fui honesto (y proporcioné la respuesta más tarde). Al contrario, vieron que nadie debe saberlo todo. Lo más importante es saber cómo obtener información. Una de mis mejores lecciones fue, cuando no sabía la respuesta y miramos juntos el manual para obtener la respuesta. Después de eso, supieron leer manuales.

Knut
fuente
4

He impartido clases de nivel técnico universitario (pero no sobre desarrollo de software). Aquí está mi opinión:

¿Te hará un mejor programador?

No 1: 1. No obtendrá la misma experiencia que escribiría programas, pero eso no es malo de ninguna manera (siga leyendo).

¿Ampliaría su repertorio de programación?

Absolutamente. Tendrás nuevos desafíos y necesitarás (re) aprender algunas cosas que nunca supiste u olvidaste a lo largo de los años. Algo de eso será útil en el futuro. Te presenta muchos desafíos y conceptos nuevos. Tendrá que abordar los problemas técnicos desde nuevas perspectivas, y puede aprender mucho tomando esa perspectiva y resolviendo esos problemas. Si puede enseñar efectivamente a alguien lo que necesita para comprender los problemas técnicos, a menudo mejorará su conocimiento de los temas y extenderá sus dominios de conocimiento. Además, mencionas que ya saben otro idioma, algunos dicen que una de las mejores maneras de mejorar es aprender nuevos idiomas.

¿Depende también de esas personas?

Trabajar con profesionales en un dominio cercano cambia la estructura dramáticamente. Ya saben cómo comunicarse con las computadoras, escribir programas. La sintaxis y la lógica serán rápidas para que aprendan. Harán preguntas desafiantes en la primera semana.

¿Qué debo esperar de ellos?

Esperaría que se beneficien más si tiene la capacidad de relacionar el contenido del curso con los idiomas con los que ya están familiarizados: "Sí, el tema es similar a Java en estas formas , pero diferente por estas razones ". Esperaría que el ritmo que aprendan sea bastante rápido, por lo que debe esperar invertir una buena cantidad de tiempo fuera de clase en preparación (nuevamente, mucho que aprender, pero los temas interesarían a la mayoría de los desarrolladores).

¿Qué pasa si me ahogo cuando me hacen una pregunta enredada? ¿Esto es normal?

Bueno, son tan experimentados como tú, pero en otra área (aunque relacionada). Las explicaciones pueden ser difíciles y no se puede esperar que lo sepas todo o que tengas la misma área de experiencia que todos ellos (combinados). La capacidad de decir "No sé" es de buena calidad en un maestro. Si también tienen experiencia, a menudo puede responder a través de una breve discusión ("Oh, resolvemos ese problema utilizando esta técnica "). Si eso falla, debe encontrar la respuesta en la próxima sesión (para usted y para ellos).

justin
fuente
3

Cuando puedes enseñar a otros algo con éxito, ya sea programando o no, entonces realmente lo entiendes. Ser capaz de enseñar a otros algo definitivamente te hace mejor en la habilidad también. Los estudiantes le harán preguntas que lo sorprenderán y lo harán pensar en el tema de manera diferente. Te volverás experto en presentar el material de más de una manera, lo que también te llevará a una mejor comprensión del tema.

Ser capaz de enseñar a otros siempre ha sido mi prueba de fuego para saber si realmente entiendo algo.

Gratzy
fuente
3

Yo diría que definitivamente hace la diferencia. Desde mi experiencia personal, defiendo esto por las siguientes razones:

  • Mientras lee, a veces la mente se vuelve lo suficientemente perezosa como para ignorar los detalles o comenzar a asumir cosas en lugar de leer detenidamente para comprender la parte superior en cuestión. Esa es la razón particular de tener conocimientos incompletos mientras se lee a sí mismo.

  • En el caso de la enseñanza, todo es una historia diferente. Aquí no se pueden proporcionar suposiciones sino hechos, por lo que se realiza una lectura exhaustiva para la enseñanza. Además, los maestros sienten que es su responsabilidad proporcionar el conocimiento completo y correcto, lo que nuevamente impulsa la lectura de pruebas.

Pankaj Upadhyay
fuente
3

Absolutamente sí. La enseñanza le brinda una plataforma para pulir su conocimiento del material y mejorar su capa de presentación.

Además, le ayuda a establecer vínculos con otros desarrolladores que luego pueden traducirse en relaciones efectivas con el equipo de desarrollo.

mprototype
fuente
2

Además de lo que todos los demás han enumerado ("Debe conocer bien el material", etc.) si está escribiendo material para el curso, es una buena práctica escribir documentación, porque los documentos, ya sean notas del curso o documentos técnicos, están escritos para transferir conocimiento, incluso en la industria.

Pero cuando estás en la industria, a menudo la documentación es para alguien que no has conocido y que no conocerás, por lo que es fácil caer en la trampa de documentar lo que hiciste y no lo que el interesado / lector necesita saber.

Cuando escribe para los estudiantes de su clase, es más fácil practicar y desarrollar esa mentalidad de documentación útil, ya que está muy cerca de su parte interesada / lector. Demonios, si eres realmente afortunado, un estudiante levantará la mano y te dirá que tus notas apestan, y luego has aprendido algo que puedes mejorar.

Richard JP Le Guen
fuente
2

Sí. A menudo descubrí que realmente no entendía algo tan bien hasta que traté de explicárselo a otra persona, especialmente a alguien sin todas las suposiciones y palabras de moda que un profesional acumula a lo largo de los años, ya sea en primera persona (como maestro o mentor), o incluso responder preguntas en línea (como aquí en Stack Overflow!).

Además, los estudiantes pueden aportar una visión diferente o una metodología (¿extraña?) Al problema, ampliando el espacio de solución.

Un profesor, para ser útil, puede no tener la respuesta en la punta de la lengua, pero puede decir "No sé", investigarlo o buscarlo, y ayudar a los estudiantes a encontrar la respuesta más rápido y con mayor probabilidad de lo que pueden los estudiantes solos.

hotpaw2
fuente
1

Cuando se ve obligado a explicar algo a partir de los primeros principios, definitivamente lo obligará a comprenderlo mejor. A menudo uso esta idea cuando busco errores en el código, arrastro a alguien e intento explicarles cómo funciona el código. Por lo general, encuentro el error en unos minutos. La misma idea.

Bob Moore
fuente
1

Yo diría que No. Ser profesor no te hace mejor, aprender te hace mejor. Si tienes que aprender a ser maestro, entonces serás mejor. La enseñanza solo te ayuda a retener lo que sabes, pero en el mundo de TI todo cambia a diario. Debido a esto, no solo puedes confiar en la enseñanza, tienes que sacar a tu ... vagabundo ... del sofá y aprender.

Me he reunido con muchos profesores de TI que eran ignorantes cuando se trataba de su campo real. Tenían certificados, cursos, documentos en la pared, muchos "espectáculos". Claro que podían hablar, pero si NUNCA se salía del horario de curso prescrito, se agitarían, tartamudearían y fracasarían. No podían soportar la presión de que las cosas cambiaran. No cambiaron con los tiempos, enseñaron lo que sabían, que era obsoleto.

Así que cambiemos esto de nuevo, he tenido algunos profesores que fueron increíbles. Eran desarrolladores, desarrolladores senior, desarrolladores líderes, directores de desarrollo de aplicaciones, luego se convirtieron en programadores. Conocían escenarios del mundo real, sabían que el 99% de las cosas en los libros de texto no preparaban a las personas para el trabajo de la vida real, por lo que lo cambiaron, lo mantuvieron actualizado.

Hace 12 años, mi maestra de informática de grado 11/12 me hizo una oferta. Si durante cada año escolar pudiera romper su seguridad / cortafuegos, etc. en la escuela, me daría un A + (100%) en el curso, independientemente de mi trabajo. Diablos, lo ayudé a planificar el curso mientras trabajaba como jr. desarrollador en ese entonces. Esa oferta que me dio lo convirtió (en ese momento) en un experto en seguridad de Windows NT. Obtuve el 100%, tuve que robar su UN / PW y luego encerrarlo ... fue la única forma al final ... Pero no hace falta decir que mejoró como maestro y en TI debido a la enseñanza. trabajó con su clase, no en su propia agenda.

Entonces, ¿dónde trazas la línea? Dibujarlo en la actitud del profesor. Si ese maestro está dispuesto a aprender, mejorará. Si ese maestro solo está montando la ola, cobrando, y no le importa, van a empeorar.

Ryan Ternier
fuente
-1 Totalmente en desacuerdo. Como puede ver, realmente está en minoría aquí. Tu opinión es importante, pero creo que puedes aprender algo de la mayoría de las respuestas de los maestros aquí. Lo siento, no pude resistir el último juego de palabras, solo estaba leyendo una publicación sobre la recursividad.
junky
1

Tener que resolver docenas de "¿por qué no funciona mi código?" Los problemas al enseñar sesiones de ejercicio en un curso de programación introductorio me hicieron mucho mejor para comprender el código sobre la marcha y simularlo en mi cabeza.

mpartel
fuente
1

Basado en mi propia experiencia como profesor. Yo diría que NO .

Porque, si bien comprende mejor los conceptos básicos, al enseñar a los niños y / o novatos, no está haciendo ninguna mejora relacionada con su profesión real.

Por qué pasó esto ? - porque la programación se desarrolla más rápido de lo que la gente puede estudiar. Aparecen nuevos lenguajes y marcos, nuevas herramientas, nuevos conceptos, nuevo hardware. Y el programador profesional DEBE conocer su dominio. O bien, nadie lo necesitaría.

Es posible que desee decir: 'pero puede estudiar algoritmos fundamentales', y le digo: 'pero debería haberlos estudiado en la universidad'.

Otro tema es el ritmo de trabajo. Los "maestros" son lentos, no se usan para resolver problemas reales del mundo real rápidamente.

Y por último pero no menos importante: enseñar es dar. Cuando quieres enseñar , no puedes detenerte;) es solo una llamada desde adentro, una necesidad inquebrantable de compartir tu conocimiento, reducir la estupidez a tu alrededor y, eventualmente, hacer del mundo un lugar mejor;)

c69
fuente
Esta es la razón por la que se beneficia al aprender de sus estudiantes, quienes pueden haber adquirido más recientemente conocimientos nuevos y relacionados que no conoce, o perspectivas en las que no había pensado
junky
1

¡SÍ!

Louis E. Frenzel escribió sobre esto exactamente hace unos años:

Escribe un artículo o artículo o enseña lo que has aprendido. Tienes que saberlo para escribirlo o enseñarlo. No hay mejor manera de aprender por ti mismo que tener que explicárselo a los demás.

madriguera
fuente
1

No directamente relacionado, pero ...

Veo que esto sucede TODO el tiempo en la tropa Boy Scout de mi nieto. Los Scouts mayores piensan que "saben" algo hasta que intentan enseñárselo a sus jóvenes. No creo que la dinámica cambie mucho sin importar la edad o la experiencia que tengamos.

DaveE
fuente
¡Me encantan las correlaciones como esta!
junky
1

Muchas de las respuestas a esta pregunta han señalado que enseñar algo significa que primero debe aprenderlo y, por lo tanto, debe mejorar para poder enseñar. Yo diría que esto es casi correcto.

Si usted es responsable de desarrollar los materiales del curso , entonces deberá obtener una comprensión profunda del tema. Aprender el material a este nivel lo hará mejor, suponiendo que necesite aprender algo que aún no sabe.

Si, por otro lado, no eres más que un títere de carne que lee los materiales del curso preparados por otra persona, entonces probablemente puedas escapar sin conocer o comprender el tema. Esto es especialmente cierto para los cursos introductorios. Si usted es un desarrollador experimentado que enseña una clase de principiante, ¿realmente necesita aprender algo sustantivo?

Joel Brown
fuente
Estoy de acuerdo en su mayoría, sin embargo, creo que muchas de las publicaciones decían que aprendes por el proceso de enseñanza, especialmente cuando tus estudiantes te hacen preguntas , en lugar de la preparación de material que crees que sabes (aunque todavía hay valor en eso).
junky
0

La enseñanza no solo aumenta sus conocimientos o habilidades de programación, sino que también es útil para escribir artículos de programación y tutoriales. Si puede explicar un tema a otros de una manera comprensible, significa que también conoce y comprende ese tema.

Ventana rota
fuente
0

Creo que depende de qué tan bien decidas personalmente prepararte. No me gusta que me hagan parecer un tonto, así que cuando enseño, me preparo demasiado, entre en mucho más detalle en mis apuntes que lo que tiendo a mencionar en clase. De esa manera me siento seguro, puedo manejar la mayoría de las preguntas. Cada vez que me preparé para una clase, encontré algunos detalles que había olvidado o pasado por alto hasta entonces. Diseñar ejercicios puede ser particularmente desafiante.

La preparación para las personas que ya son programadores existentes es un nivel completo de esfuerzo adicional. Puede esperar tener algunas personas en la clase que odian que se les pida que aprendan Python a través de su querido C # (o lo que sea). Desafiarán todo lo que digas. Es posible que tenga otros que ya tengan algún conocimiento y que hagan preguntas avanzadas el primer día. En el primer caso, asegúrese de seguir con el tema y NO discuta las diferencias entre los idiomas a menos que la clase no se comporte hostilmente. Simplemente regrese al material que va a cubrir. En el segundo caso, casi todas las preguntas avanzadas se pueden consultar más adelante en la clase (dándole tiempo para buscar la respuesta si no la conoce). Eso debería darle confianza. Siempre preparo algunos ejercicios más difíciles para las personas que toman la clase porque tienen que hacerlo, pero ya están familiarizados con el tema. Una especie de estudio independiente para los que se aburren fácilmente. (¡Y se sorprenden cuando saco esos ejercicios de temas avanzados para que hagan mientras todos los demás luchan con un ejercicio que hicieron en cinco minutos!)

Sin embargo, a la mayoría de los programadores les gusta aprender y estarán ansiosos por comenzar a hacer algo útil. Probablemente puedas mantener lo básico en un mínimo, este tipo de clase se aburre haciendo ejercicios de tipo Hello World. Haga las cosas más prácticas y útiles para los negocios. Puede planear cubrir más material con experiencia que los programadores no experimentados, por lo tanto, más para prepararse. Si puede hacer los ejercicios específicos para el tipo de trabajo que harán, eso es aún mejor.

Los estudiantes tienen una capacidad notable para interpretar las cosas que usted dice de una manera única. Sus errores pueden ser cosas que nunca se te ocurrirían hacer. ¡Ayudarlos a corregir sus errores y explicar por qué son errores lo ayudará en las revisiones de códigos!

HLGEM
fuente