¿La programación de enseñanza te hace un mejor programador [cerrado]

40

Me considero un programador 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 enriquecedora después de haber capacitado con éxito a un grupo de personas?

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

¿Qué debo esperar de ellos?

Uno de mis temores es: qué pasa si me atraganto cuando uno de ellos me hizo una pregunta enredada. ¿Esto es normal?

    
pregunta greengit 11.11.2011 - 11:18

20 respuestas

37

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

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

    
respondido por el FrustratedWithFormsDesigner 27.09.2011 - 18:10
30

Un antiguo estudio de la Universidad de Texas realizó los siguientes hallazgos.

La gente retiene:

  • 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 escuchan

  • 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 has aprendido es hacer tu mejor esfuerzo para enseñárselo a otra persona.

A pesar de que aprendí sobre Comp Sci 101 en la escuela, tomé un trabajo de tutoría para C ++ y en realidad no APRENDIÉ C ++ hasta que me vi obligado a enseñarlo a estudiantes con dificultades. Era como una orgía de bombillas encendidas en mi cabeza mientras ayudaba a estudiantes que no eran alumnos de CS a realizar sus tareas.

    
respondido por el maple_shaft 27.09.2011 - 18:27
10

No he enseñado sistemáticamente la programación, solo he tratado de explicar algún concepto o problema a más o menos personas externas. Siempre fue una experiencia interesante, y aprendí algo cada vez.

De hecho, Jan Comenius señaló que hace unos doscientos años, la mejor manera de entender realmente algo es explicárselo a los demás .

Así que adelante, será una experiencia valiosa y enriquecedora para ti. Seguramente recibirás preguntas difíciles o sorprendentes, eso está bien. No intente fingir que lo sabe todo, solo sea honesto y dígales algo como "No sé, pero le responderé con una respuesta". Solo te respetarán mejor por ser honesto.

    
respondido por el Péter Török 27.09.2011 - 18:11
5

Además de lo que mencionan las otras respuestas, no olvide que, al enseñar , también puede aprender de sus alumnos si está abierto a ello.

Usted mencionó en un comentario que su "conocimiento de Java / .NET está cerca de cero". Esa es una oportunidad perfecta para aprender de sus estudiantes. La enseñanza no es un proceso de un solo sentido.

Si no conoce la respuesta a una pregunta, no intente ocultar ese hecho. El mayor perjuicio que un profesor puede hacerle a un estudiante es fingir que sabe algo que no lo hagas En el mejor de los casos, pierdes su confianza cuando descubren que no sabes de qué estás hablando, en el peor de los casos, los engañas y pasas información falsa, que es peor que ninguna información.

    
respondido por el Davy8 27.09.2011 - 22:18
4

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

Hice una experiencia adicional: obtuve análisis más rápidos de errores. Enseñas a las personas, por lo que cometen errores, nunca lo pensaste. Cuando los ayudas, tienes un ojo para el código problemático (al menos, lo hice).

  

Uno de mis temores es: qué pasa si me atraganto cuando uno de ellos me hizo una pregunta enredada. ¿Esto es normal?

Creo que es normal. Y mis académicos no tuvieron ningún problema, cuando fui honesto (y proporcioné la respuesta más tarde). En el 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 supe la respuesta y consultamos el manual para obtener la respuesta. Después de eso, supieron leer los manuales.

    
respondido por el knut 27.09.2011 - 19:56
4

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

¿Te hará un mejor programador?

No 1: 1. No obtendrás la misma experiencia que escribirías en los programas, pero eso no es malo de ninguna manera (sigue leyendo).

¿Ampliaría tu repertorio de programación?

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

¿También depende de esas personas?

Trabajar con profesionales en un dominio cercano cambia la estructura dramáticamente. Ya saben cómo comunicarse con las computadoras, para 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?

Espero 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í, subject es similar a Java en de estas maneras , pero diferente por estas razones ". Espero que el ritmo que aprenden sea bastante rápido, por lo que debería esperar invertir una buena cantidad de tiempo fuera de clase en la preparación (nuevamente, hay mucho que aprender, pero los temas serían de interés para la mayoría de los desarrolladores).

¿Qué pasa si me ahogo cuando me hacen una pregunta enredada? ¿Es esto normal?

Bueno, tienen la misma experiencia que tú, pero en otra área (aunque relacionadas). Las explicaciones pueden ser difíciles, y no se puede esperar que sepas todo o que tengas la misma área de experiencia que todas ellas (combinadas). La capacidad de decir "No sé" es una buena calidad en un profesor. Si también tienen experiencia, a menudo puede venir a responder a través de una breve discusión ("Oh, resolvemos ese problema usando esta técnica "). Si eso no funciona, debería encontrar la respuesta en la próxima sesión (para usted y para ellos).

    
respondido por el justin 04.10.2011 - 02:53
3

Cuando puedes enseñar con éxito algo a otros, ya sea programando o no, entonces realmente lo entiendes. Ser capaz de enseñar a otros algo definitivamente también te hace mejor en la habilidad. Los estudiantes te harán preguntas que te sorprenderán y te harán pensar en el tema de manera diferente. Tendrá la habilidad de presentar el material de más de una manera, lo que también lo 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.

    
respondido por el Gratzy 27.09.2011 - 18:10
3

Yo diría que definitivamente hace una 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 para tener ganancias de conocimiento incompletas al leerte.

  • En el caso de la enseñanza, todo es una historia diferente. Aquí uno no puede proporcionar suposiciones sino hechos, por lo que se hace una lectura minuciosa para enseñar. Además, los maestros sienten que es su responsabilidad proporcionar el conocimiento completo y correcto, lo que nuevamente solicita una mayor corrección de pruebas.

respondido por el Pankaj Upadhyay 27.09.2011 - 18:55
3

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

Además, le ayuda a crear vínculos con otros desarrolladores que luego se pueden traducir en relaciones efectivas de equipo de desarrollo.

    
respondido por el mprototype 27.09.2011 - 19:08
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 para redactar documentación, ya que los documentos son 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 los interesados / lectores necesitan para saber.

Cuando escribe para estudiantes en 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 tienes mucha suerte, un estudiante pondrá su mano en el aire y te dirá que tus notas apestan, y luego has aprendido algo que puedes mejorar.

    
respondido por el Richard JP Le Guen 27.09.2011 - 18:27
2

Sí. A menudo he descubierto 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 practicante construye a lo largo de los años, ya sea en primera persona (como profesor o profesor). 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 la solución.

Para ser útil, un maestro 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 una probabilidad mayor que la de los estudiantes por su cuenta.

    
respondido por el hotpaw2 27.09.2011 - 18:33
1

Cuando te veas obligado a explicar algo desde los primeros principios, definitivamente te obligará a entenderlo mejor. A menudo utilizo 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 pocos minutos. La misma idea.

    
respondido por el Bob Moore 27.09.2011 - 18:50
1

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

Me he reunido con profesores de TI que eran ignorantes cuando se trataba de su campo real. Tenían certificados, cursos, documentos en la pared, un montón de "show". Seguro que podrían hablar, pero si alguna vez te saliste del horario prescrito del curso, temblarían, tartamudearían y fracasarían. No pudieron manejar la presión de las cosas cambiando. No cambiaron con el tiempo, enseñaron lo que sabían, que estaba obsoleto.

Así que vamos a darle la vuelta otra vez, he tenido algunos profesores que fueron increíbles. Eran desarrolladores, desarrolladores senior, desarrolladores principales, directores de desarrollo de aplicaciones, y 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 y lo mantuvieron actualizado.

Hace 12 años, mi profesor de informática de 11/12 me dio una oferta. Si a lo largo de 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. Heck, lo ayudé a planear 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 dejarlo en libertad ... era la única manera al final ... Pero no hace falta decir que mejoró como profesor y en TI debido a la enseñanza - trabajó CON su clase, no en su propia agenda.

Entonces, ¿dónde trazas la línea? Dibújalo en la actitud del profesor. Si ese maestro está dispuesto a aprender, ellos mejorarán. Si esa maestra solo está montando la ola, cobrando, y podría importarle menos, van a empeorar.

    
respondido por el Ryan Ternier 27.09.2011 - 19:31
1

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

    
respondido por el mpartel 27.09.2011 - 21:31
1

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

Debido a que, si bien obtiene una mejor comprensión de lo básico, al enseñar a los niños y / o newbs, no está realizando ninguna mejora relacionada con su profesión real.

¿Por qué sucede esto? - Porque la programación se está desarrollando 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 si no, nadie lo necesitaría.

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

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

Y por último, pero no menos importante, la enseñanza es dar. Cuando quiere enseñar , no puede detenerse;) es solo una llamada desde dentro, una implacable necesidad de compartir su conocimiento, reducir la estupidez que lo rodea y, eventualmente, hacer del mundo un lugar mejor. ;)

    
respondido por el c69 27.09.2011 - 23:55
1

¡SÍ!

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

  

Escriba un artículo o artículo o enseñe lo que ha 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.

    
respondido por el warren 03.10.2011 - 20:54
1

No relacionado directamente, 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 tratan de enseñárselo a sus jóvenes. No creo que la dinámica cambie mucho sin importar la edad o la experiencia que tengamos.

    
respondido por el DaveE 04.10.2011 - 02:14
1

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

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

Si, por otro lado, usted es solo un títere de carne que lee materiales de un curso preparados por otra persona, entonces probablemente pueda escapar sin saber o entender el tema. Esto es especialmente cierto para los cursos de introducción. Si eres un desarrollador experimentado que enseña en una clase para principiantes, ¿realmente necesitas aprender algo sustantivo?

    
respondido por el Joel Brown 11.11.2011 - 13:30
0

No solo la enseñanza aumenta tus conocimientos o habilidades de programación, 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.

    
respondido por el Broken_Window 27.09.2011 - 19:54
0

Creo que depende de lo bien que personalmente decidas prepararte. No me gusta que me hagan ver como un tonto, así que cuando enseño, me preparo en exceso, entro en más detalles en mis notas que en 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 finos que había olvidado o pasado por alto hasta entonces. Diseñar ejercicios puede ser particularmente desafiante.

Preparar para personas que ya tienen programadores existentes es todo un nivel de esfuerzo extra. Puede esperar tener algunas personas en la clase que odian que se les pida que aprendan Python y luego su querido C # (o lo que sea). Ellos 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úrate de mantenerte en el tema y NO entres en discusión sobre las diferencias entre los idiomas a menos que la clase no se esté comportando de manera hostil. Simplemente regrese al material que va a cubrir. En el segundo caso, se puede hacer referencia a casi todas las preguntas avanzadas más adelante en la clase (lo que le da tiempo para buscar la respuesta si no la conoce). Por lo tanto, eso debería darle confianza. Siempre preparo algunos ejercicios más difíciles para las personas que están tomando la clase porque tienen que hacerlo pero ya están familiarizados con el tema. Tipo de estudio independiente para los fácilmente aburridos. (¡Y se sorprenden cuando saco esos ejercicios de temas avanzados para que los hagan mientras todos los demás están luchando 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 pueda mantener lo básico en un mínimo, este tipo de clase se aburre haciendo ejercicios de tipo Hello World. Hacer las cosas más prácticas y útiles para los negocios. Puede planear cubrir más material con experiencia que programadores no experimentados, por lo que hay más para preparar. Si puedes hacer los ejercicios específicos para el tipo de trabajo que van a hacer, eso es aún mejor.

Los estudiantes tienen una habilidad notable para interpretar las cosas que dices de una manera única. Sus errores pueden ser cosas que nunca se te ocurriría hacer. Ayudarles a corregir sus errores y explicar por qué son errores lo ayudarán a revisar el código.

    
respondido por el HLGEM 27.09.2011 - 22:01

Lea otras preguntas en las etiquetas