A programação de ensino faz de você um programador melhor [fechado]

40

Eu me considero um programador intermediário de Python e tenho a oportunidade de ser instrutor para uma aula de programação em Python para iniciantes.

Eu queria saber se isso realmente ampliaria meu repertório de programação. Alguém teve uma experiência esclarecedora depois de treinar com sucesso um grupo de pessoas?

Isso também depende dessas pessoas - sejam eles programadores ou estudantes noob? (No meu caso eles são intermediários .NET e programadores Java)

O que devo esperar deles?

Um dos meus medos é - e se eu engasguei quando um deles fez uma pergunta emaranhada. Isso é normal?

    
por greengit 11.11.2011 / 11:18
fonte

20 respostas

37

Na minha experiência, ensinar programação me fez melhor. Isso me forçou a entender melhor os conceitos que eu havia acabado de aceitar ou tomar como garantidos. Quando tive que articular idéias que eram antigas para mim, mas novas para os alunos, de várias maneiras diferentes (porque nem todos aprendem da mesma forma com os mesmos exemplos), isso levou a um entendimento mais profundo do material para mim.

E sim, às vezes os alunos fazem perguntas para as quais você não sabe a resposta. Tudo bem, você pode dizer a eles que não sabe, apresentar uma possível explicação e prometer investigar antes da próxima aula.

    
por 27.09.2011 / 18:10
fonte
30

Um antigo estudo da Universidade do Texas fez as seguintes descobertas.

As pessoas mantêm:

  • 10% do que eles lêem

  • 20% do que eles ouvem

  • 30% do que eles vêem

  • 50% do que eles veem e ouvem

  • 70% do que eles fazem

  • 90% do que eles ensinam

Seguindo essa lógica, a melhor maneira de APRENDER algo e reter o que você aprendeu é fazer o melhor esforço para ensiná-lo a outra pessoa.

Apesar de ter navegado pela Comp Sci 101 na escola, fiz um trabalho de tutoria para C ++ e não aprendi C ++ até ser forçado a ensiná-lo a alunos com dificuldades. Foi como uma orgia de lâmpadas em minha cabeça enquanto eu ajudava os alunos não graduados em CS com suas atribuições.

    
por 27.09.2011 / 18:27
fonte
10

Eu não ensinei sistematicamente a programação, apenas tentei explicar algum conceito ou problema para mais ou menos pessoas de fora. Sempre foi uma experiência interessante e aprendi alguma coisa todas as vezes.

De fato, Jan Comenius observou há algumas centenas de anos que a melhor maneira de realmente entender profundamente alguma coisa é explicá-la aos outros.

Então vá em frente - será uma experiência valiosa e enriquecedora para você. Você certamente receberá perguntas difíceis ou surpreendentes - tudo bem. Não tente fingir que você sabe de tudo - apenas seja honesto e diga algo como "eu não sei, mas vou responder a você com uma resposta". Eles só vão te respeitar melhor por ser honesto.

    
por 27.09.2011 / 18:11
fonte
5

Além do que as outras respostas mencionam, não se esqueça de que, ao mesmo tempo em que ensina , você também pode aprender com seus alunos se tiver a mente aberta sobre isso.

Você mencionou em um comentário que seu "conhecimento de Java / .NET está próximo de zero". Essa é uma oportunidade perfeita para aprender com seus alunos. O ensino não é um processo unidirecional.

Se você não souber a resposta a uma pergunta, não tente esconder esse fato. O maior desserviço que um professor pode fazer para um aluno é fingir que sabe algo que ele não faça Na melhor das hipóteses você perde a confiança deles quando descobrem que você não sabe do que está falando, na pior das hipóteses você os engana e passa informações falsas que são piores do que nenhuma informação.

    
por 27.09.2011 / 22:18
fonte
4

Sim, você terá uma compreensão mais profunda. Eu fiz experiências semelhantes como as outras respostas que você recebe aqui.

Eu fiz uma experiência adicional: fui mais rápido em análises de erros. Você ensina as pessoas, então elas cometem erros, você nunca pensou. Quando você os ajuda, você fica de olho no código problemático (pelo menos, eu fiz).

One of my fears is -- what if I choked when one of them asked a tangled question. Is this normal?

Eu acho que é normal. E meus acadêmicos não tiveram nenhum problema, quando eu fui honesto (e dei a resposta mais tarde). Ao contrário - eles viram que ninguém precisa saber tudo. O mais importante é saber como obter informações. Uma das minhas melhores lições foi quando eu não sabia a resposta e olhamos juntos para o manual para obter a resposta. Depois disso, eles sabiam ler manuais.

    
por 27.09.2011 / 19:56
fonte
4

Eu ensinei aulas técnicas de nível universitário (mas não em desenvolvimento de software). Aqui está minha opinião:

Isso fará de você um programador melhor?

Não 1: 1. Você não vai ganhar a mesma experiência que você iria escrever programas - mas isso não é uma coisa ruim, por qualquer meio (continue a ler).

Ampliaria seu repertório de programação?

Absolutamente. Você terá novos desafios e precisará (re) aprender algumas coisas que nunca conheceu ou esqueceu ao longo dos anos. Algumas delas serão úteis no futuro. Ele apresenta muitos novos desafios e conceitos. Você precisará abordar questões técnicas a partir de novas perspectivas, e você pode aprender muito tomando essa perspectiva e resolvendo esses problemas. Se você puder ensinar efetivamente a alguém o que ele precisa para entender os problemas técnicos, ele geralmente melhorará seu conhecimento sobre os assuntos e ampliará seus domínios de conhecimento. Além disso, você mencionou que eles já conhecem outro idioma, alguns dizem que uma das melhores maneiras de melhorar é aprender novos idiomas.

Isso também depende dessas pessoas?

Trabalhar com profissionais em um domínio próximo muda drasticamente a estrutura. Eles já sabem se comunicar com computadores, para escrever programas. Sintaxe e lógica serão rápidas para eles aprenderem. Eles farão perguntas desafiadoras na primeira semana.

O que devo esperar deles?

Eu esperaria que eles se beneficiassem mais se você tivesse a capacidade de relacionar o conteúdo do curso com os idiomas com os quais eles já estão familiarizados: "Sim, assunto é semelhante ao Java nessas maneiras , mas diferente para estas razões ". Eu esperaria que o ritmo que eles aprendessem fosse rápido, de tal forma que você deveria esperar investir um bom tempo fora da aula em preparação (novamente, muito a aprender, mas os tópicos interessariam à maioria dos desenvolvedores.)

E se eu engasgar quando me perguntam uma questão emaranhada? Isso é normal?

Bem, eles são tão experientes quanto você, mas em outra área (embora relacionada). explicações podem ser difíceis, e não se pode esperar que você saiba tudo ou tenha a mesma área de especialização que todas elas (combinadas). A capacidade de dizer "não sei" é de boa qualidade em um professor. Se eles também são experientes, muitas vezes você pode vir a responder através de uma breve discussão ("Oh, nós resolvemos esse problema usando esta técnica "). Se isso falhar, você deve encontrar a resposta na próxima sessão (para você e para eles).

    
por 04.10.2011 / 02:53
fonte
3

Quando você consegue ensinar algo aos outros com sucesso, seja programando ou não, então você realmente entende isso. Ser capaz de ensinar aos outros algo definitivamente o torna melhor na habilidade também. Os alunos farão perguntas que irão surpreendê-lo e fazer você pensar no assunto de maneira diferente. Você se tornará habilidoso em apresentar o material de mais de uma maneira que também o levará a uma melhor compreensão do assunto.

Ser capaz de ensinar os outros sempre foi meu teste decisivo para saber se realmente entendo algo.

    
por 27.09.2011 / 18:10
fonte
3

Eu diria que definitivamente faz diferença. Pela minha experiência pessoal, defendo isso pelas seguintes razões: -

  • Durante a leitura, às vezes a mente se torna preguiçosa o suficiente para ignorar os detalhes ou começar a assumir as coisas em vez de dar uma leitura completa para entender o topo em questão. Essa é a razão particular para obter ganhos de conhecimento incompletos enquanto você lê a si mesmo.

  • No caso de ensinar, tudo é uma história diferente. Aqui não se pode fornecer suposições, mas fatos, então uma leitura completa é feita para o ensino. Além disso, os professores sentem que é sua responsabilidade fornecer o conhecimento completo e correto, o que novamente leva a mais uma revisão.

por 27.09.2011 / 18:55
fonte
3

Absolutamente sim. Ensinar dá-lhe uma plataforma para polir o seu conhecimento do material, bem como melhorar a sua camada de apresentação.

Além disso, ajuda você a criar vínculos com outros desenvolvedores, o que pode se traduzir posteriormente em relacionamentos eficazes com equipes de desenvolvimento.

    
por 27.09.2011 / 19:08
fonte
2

Além do que todo mundo listou ("Você tem que conhecer bem o material", etc.) se você está escrevendo material para o curso, é uma boa prática para escrever documentação, porque documentos - sejam notas de curso ou documentos técnicos - são escritos para transferir conhecimento, mesmo na indústria.

Mas quando você está na indústria, muitas vezes a documentação é para alguém que você não conheceu e não vai encontrar, então é fácil cair na armadilha de documentar o que você fez e não o que o stakeholder / leitor precisa sabe.

Quando você escreve para os alunos de sua turma, é mais fácil praticar e desenvolver essa mentalidade de documentação útil, já que você está muito próximo de sua parte interessada / leitora. Inferno, se você tiver muita sorte, um aluno colocará a mão no ar e lhe dirá que suas notas são ruins, e então você aprendeu algo que pode melhorar.

    
por 27.09.2011 / 18:27
fonte
2

Sim. Eu sempre achei que não entendia muito bem algo até que tentei explicar para outra pessoa, especialmente alguém sem todas as suposições e chavões que um praticante constrói ao longo dos anos, seja em primeira pessoa (como professor ou professor). mentor), ou mesmo respondendo a perguntas on-line (como aqui no Stack Overflow!).

Além disso, os alunos podem trazer uma visão diferente ou uma metodologia (estranha?) para o problema, ampliando o espaço da solução.

Um professor, para ser útil, pode não ter a resposta na ponta da língua, mas pode dizer "não sei", pesquisá-lo ou procurá-lo, e ajudar os alunos a encontrar a resposta mais rapidamente e com uma probabilidade maior do que os alunos podem por conta própria.

    
por 27.09.2011 / 18:33
fonte
1

Quando você é forçado a explicar algo dos primeiros princípios, isso definitivamente o forçará a entender melhor. Eu costumo usar essa idéia ao procurar por erros no código, eu arrasto alguém e tento explicar a eles como o código funciona. Eu costumo encontrar o bug dentro de alguns minutos. Mesma ideia.

    
por 27.09.2011 / 18:50
fonte
1

Eu diria Não. Ser professor não te faz melhor - aprender te faz melhor. Se você tem que aprender a ser um professor, então você se tornará melhor. Ensinar só ajuda a reter o que você sabe, mas no mundo de TI tudo muda diariamente. Por causa disso, você não pode confiar apenas no ensino, você tem que tirar seu ... vagabundo ... do sofá e aprender.

Eu conheci professores de TI que eram ignorantes quando se tratava de seu campo real. Eles tinham certificados, cursos, trabalhos na parede, muito "show". Claro que eles poderiam falar a conversa, mas se você já saiu da programação do curso prescrito eles iria flutter, gaguejar e falhar. Eles não conseguiam lidar com a pressão das coisas mudando. Eles não mudaram com os tempos, eles ensinaram o que sabiam, o que era obsoleto.

Então vamos inverter isso de novo, eu tive alguns professores que foram incríveis. Eles eram desenvolvedores, desenvolvedores seniores, desenvolvedores líderes, diretores de desenvolvimento de aplicativos, e então se tornaram programadores. Eles conheciam cenários do mundo real, sabiam que 99% das coisas nos livros de texto não preparavam as pessoas para o trabalho da vida real, então elas mudaram, mantiveram a corrente.

12 anos atrás, meu professor de informática da 11ª série me deu uma oferta. Se ao longo de cada ano letivo eu fosse capaz de quebrar sua segurança / firewalls etc. na escola, ele me daria um A + (100%) no curso, independentemente do meu trabalho. Heck, ajudei-o a planejar o curso enquanto trabalhava como jr. desenvolvedor na época. Essa oferta que ele me deu fez dele (na época) um especialista em segurança do Windows NT. Eu consegui 100%, tive que roubar seu UN / PW e depois prendê-lo ... foi a única maneira no final ... Mas escusado será dizer que ele ficou melhor como professor e em TI por causa do ensino - ele trabalhou com sua classe - não em sua própria agenda.

Então, onde você desenha a linha? Desenhe na atitude do professor. Se esse professor estiver disposto a aprender, ele ficará melhor. Se esse professor está apenas viajando, recebendo o pagamento e se importando menos - eles vão piorar.

    
por 27.09.2011 / 19:31
fonte
1

Ter que resolver dezenas de "por que meu código não funciona?" problemas ao ensinar sessões de exercícios em um curso de programação introdutória me tornaram muito melhor em compreender o código na hora e simulá-lo na minha cabeça.

    
por 27.09.2011 / 21:31
fonte
1

Baseado na minha própria experiência como professor. Eu diria NÃO .

Porque, enquanto você entende melhor o básico, ensinando as crianças e / ou os newbs, você não está fazendo nenhuma melhoria relacionada à sua profissão.

Por que isso acontece? - porque a programação está se desenvolvendo mais rápido do que as pessoas podem estudar. Novas linguagens e frameworks aparecem, novas ferramentas, novos conceitos, novo hardware. E programador profissional deve conhecer seu domínio. Ou então - ninguém precisaria dele.

Você pode querer dizer - "mas você pode estudar algoritmos fundamentais", - e eu digo a você - "mas você deveria tê-los estudado na universidade".

Outro tópico é o ritmo de trabalho. "Professores" são lentos, eles não são usados para resolver problemas reais do mundo real rapidamente.

E por último mas não menos importante - o ensino é dar. Quando você quer ensinar - você não pode parar a si mesmo;) é apenas um chamado de dentro, um desejo inflexível de compartilhar seu conhecimento, reduzir a estupidez ao seu redor e, eventualmente, tornar o mundo um lugar melhor ;)

    
por 27.09.2011 / 23:55
fonte
1

SIM!

Louis E. Frenzel escreveu sobre > exatamente isso há alguns anos atrás:

Write a paper or article or teach what you have learned. You have to know it to write it or teach it. There's no better way to learn for yourself than to have to explain it to others.

    
por 03.10.2011 / 20:54
fonte
1

Não diretamente relacionado, mas ...

Eu vejo isso acontecer o tempo todo na tropa de Boy Scout do meu neto. Os escoteiros mais velhos pensam que "sabem" algo até que tentam ensiná-lo aos seus juniores. Eu não acho que a dinâmica mude muito, não importa quão velho ou experiente nós nos tornemos.

    
por 04.10.2011 / 02:14
fonte
1

Muitas das respostas a esta pergunta apontam que ensinar algo significa que você tem que aprender primeiro e então você tem que se tornar melhor para poder ensinar. Eu diria que isso é quase correto.

Se você é responsável por desenvolver os materiais do curso , então você terá que ter uma compreensão completa do assunto. Aprender o material para este nível o tornará melhor, assumindo que você precisa aprender algo que você ainda não conhece.

Se, por outro lado, você é apenas um fantoche de carne lendo os materiais do curso preparados por outra pessoa, então provavelmente você pode sair sem conhecer ou entender o assunto. Isto é especialmente verdadeiro para cursos introdutórios. Se você é um desenvolvedor experiente que ensina uma aula para iniciantes, você realmente precisa aprender algo substantivo?

    
por 11.11.2011 / 13:30
fonte
0

Não apenas o ensino aumenta seu conhecimento ou habilidades de programação, também é útil escrever artigos e tutoriais de programação. Se você puder explicar um tópico para os outros de uma maneira compreensível, isso significa que você também conhece e entende esse tópico.

    
por 27.09.2011 / 19:54
fonte
0

Acho que depende de como você, pessoalmente, decide se preparar. Eu não gosto de parecer bobo, então quando eu ensino, eu me preparo muito, entro em mais detalhes nas minhas anotações do que o que eu tenho a tendência de trazer para a aula. Dessa forma, me sinto seguro para lidar com a maioria das perguntas. Toda vez que eu me preparei para uma aula, encontrei alguns detalhes que eu tinha esquecido ou esquecido até então. Projetar exercícios pode ser particularmente desafiador.

Preparar para pessoas que já são programadores é um nível extra de esforço. Você pode esperar que algumas pessoas na classe que odeiam que eles estão sendo solicitados a aprender Python vice-amada C # (ou qualquer outra coisa). Eles vão desafiar tudo o que você diz. Você pode ter outras pessoas que já tenham algum conhecimento e farão perguntas avançadas no primeiro dia. No primeiro caso, certifique-se de manter o assunto e NÃO comece a discutir as diferenças entre os idiomas, a menos que a classe não esteja se comportando de forma hostil. Simplesmente retorne ao material que você irá cobrir. No segundo caso, quase todas as questões avançadas podem ser referenciadas mais tarde na aula (dando-lhe tempo para procurar a resposta, se você não a souber). Assim, isso deve lhe dar confiança. Eu sempre preparo alguns exercícios mais difíceis para as pessoas que estão participando da aula porque precisam, mas elas já estão familiarizadas com o assunto. Tipo de estudo independente para o facilmente entediado. (E eles ficam surpresos quando eu pego esses exercícios tópicos avançados para eles fazerem enquanto todo mundo está lutando com um exercício que eles fizeram em cinco minutos!)

A maioria dos programadores, porém, gosta de aprender e estará ansiosa para começar a fazer algo útil. Você provavelmente pode manter o básico em um mínimo, esse tipo de classe está entediado fazendo exercícios do tipo Hello World. Torne as coisas mais práticas e úteis para os negócios. Você pode planejar cobrir mais material com experiência do que programadores não experientes, portanto, mais para preparar. Se você puder fazer os exercícios específicos para o tipo de trabalho que eles estão fazendo, isso é ainda melhor.

Os alunos têm uma capacidade notável de interpretar as coisas que você diz de uma maneira única. Seus erros podem ser coisas que nunca aconteceriam a você. Ajudá-los a corrigir seus erros e explicar por que eles são erros irá ajudá-lo em revisões de código!

    
por 27.09.2011 / 22:01
fonte