Eu me considero um programador intermediário em Python e me foi oferecida a oportunidade de ser um instrutor para uma aula de programação iniciante em Python.
Fiquei me perguntando 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?
Também depende dessas pessoas - sejam eles programadores ou estudantes noob? (No meu caso, são programadores .NET e Java intermediários)
O que devo esperar deles?
Um dos meus medos é - e se eu engasgasse quando um deles fizesse uma pergunta emaranhada. Isso é normal?
Respostas:
Na minha experiência, o ensino de programação me fez melhor. Isso me forçou a ter uma compreensão muito melhor dos conceitos que eu acabara de aceitar ou dar como garantidos. Quando tive que articular idéias antigas para mim, mas novas para os alunos, de várias maneiras diferentes (porque nem todos aprendem da mesma maneira com os mesmos exemplos), isso acabou levando a uma compreensão mais profunda 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 conhece, apresentar uma possível explicação e prometer analisá-la antes da próxima aula.
fonte
Um antigo estudo da Universidade do Texas fez as seguintes descobertas.
As pessoas retêm:
10 por cento do que lêem
20 por cento do que ouvem
30 por cento do que vêem
50 por cento do que vêem e ouvem
70% do que eles fazem
90 por cento do que eles ensinam
Seguindo essa lógica, a melhor maneira de aprender algo e reter o que aprendeu é fazer o seu melhor para ensiná-lo a outra pessoa.
Embora eu tenha percorrido o Comp Sci 101 na escola, aceitei um trabalho de professor de C ++ e não aprendi C ++ até que fui forçado a ensiná-lo a alunos com dificuldades. Era como uma orgia de lâmpadas acesas na minha cabeça enquanto eu ajudava graduados que não eram do ensino médio em suas tarefas.
fonte
Eu não ensinei sistematicamente a programação sozinho, apenas tentei explicar algum conceito ou questão para mais ou menos pessoas de fora. Sempre foi uma experiência interessante, e eu sempre aprendia algo.
De fato, Jan Comenius já observou algumas centenas de anos atrás que a melhor maneira de realmente entender profundamente algo é explicá-lo a outros .
Então vá em frente - será uma experiência valiosa e enriquecedora para você. Você certamente terá perguntas difíceis ou surpreendentes - tudo bem. Não tente fingir que sabe tudo - apenas seja honesto e diga a eles algo como "Eu não sei, mas retornarei a você com uma resposta". Eles o respeitarão melhor por ser honesto.
fonte
Além do que as outras respostas mencionam, não se esqueça de que, ao ensinar, você também pode aprender com seus alunos se tiver uma mente aberta.
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. Ensinar não é um processo de mão única.
Se você não souber a resposta para uma pergunta, não tente esconder esse fato. O maior desserviço que um professor pode fazer a um aluno é fingir que sabe algo que não sabe. 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, engana-os e passa informações falsas, o que é pior do que nenhuma informação.
fonte
Sim, você terá uma compreensão mais profunda. Fiz experiências semelhantes, como as outras respostas que você obtém aqui.
Fiz uma experiência adicional: fui mais rápido nas análises de erros. Você ensina as pessoas, para que elas cometam erros, que você nunca pensou. Quando você os ajuda, procura um código problemático (pelo menos eu fiz).
Acho que é normal. E meus estudiosos não tiveram nenhum problema quando fui honesto (e forneci a resposta mais tarde). Pelo contrário - eles viram que ninguém deve 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 procuramos juntos o manual para obter a resposta. Depois disso, eles souberam ler os manuais.
fonte
Eu lecionei aulas de nível técnico (mas não sobre desenvolvimento de software). Aqui está a minha opinião:
Isso fará de você um programador melhor?
Não 1: 1. Você não ganhará a mesma experiência que escreveria programas - mas isso não é algo ruim de forma alguma (continue lendo).
Isso ampliaria seu repertório de programação?
Absolutamente. Você terá novos desafios e precisará (re) aprender algumas coisas que nunca soube ou esqueceu ao longo dos anos. Parte disso será útil no futuro. Ele apresenta muitos novos desafios e conceitos. Você precisará abordar questões técnicas a partir de novas perspectivas, e poderá aprender muito adotando essa perspectiva e resolvendo esses problemas. Se você puder ensinar alguém a alguém o que eles precisam para entender problemas técnicos, isso geralmente melhorará seu conhecimento dos assuntos e ampliará seus domínios de conhecimento. Além disso, você menciona que eles já conhecem outro idioma, alguns dizem que uma das melhores maneiras de melhorar é aprendendo novos idiomas.
Isso também depende dessas pessoas?
Trabalhar com profissionais em um domínio próximo altera drasticamente a estrutura. Eles já sabem como se comunicar com computadores, 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 espero que eles se beneficiem mais se você tiver a capacidade de relacionar o conteúdo do curso com as linguagens com as quais eles já estão familiarizados: "Sim, o assunto é semelhante ao Java dessa maneira , mas diferente por esses motivos ". Eu esperaria que o ritmo que eles aprendessem fosse bastante rápido, de modo que você esperasse investir uma boa quantidade de tempo fora da aula em preparação (novamente, muito a aprender, mas os tópicos interessariam à maioria dos desenvolvedores).
E se eu engasgar quando for feita uma pergunta emaranhada. Isso é normal?
Bem, eles são tão experientes quanto você, mas em outra área (embora relacionados). as explicações podem ser difíceis e não se espera 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 para um professor. Se eles também são experientes, você pode frequentemente responder por meio de uma breve discussão ("Ah, resolvemos esse problema usando essa técnica "). Se isso falhar, você deve encontrar a resposta até a próxima sessão (para você e para eles).
fonte
Quando você pode ensinar aos outros algo com sucesso, seja programando ou não, então você realmente entende. Ser capaz de ensinar aos outros algo definitivamente o torna melhor na habilidade também. Os alunos farão perguntas que o surpreenderão e farão você pensar no assunto de maneira diferente. Você se tornará hábil em apresentar o material de mais de uma maneira, o que também o levará a uma melhor compreensão do assunto.
Ser capaz de ensinar aos outros sempre foi meu teste decisivo para saber se realmente entendo alguma coisa.
fonte
Eu diria que definitivamente faz a diferença. Pela minha experiência pessoal, defendo isso pelos seguintes motivos:
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 fazer uma leitura completa para entender o assunto em questão. Essa é a razão específica para obter ganhos de conhecimento incompletos enquanto lê a si mesmo.
No caso de ensino, é tudo junto uma história diferente. Aqui não se pode fornecer suposições, mas fatos, de modo que uma leitura completa é feita para o ensino. Além disso, os professores acham que é sua responsabilidade fornecer o conhecimento completo e correto, o que novamente pede mais provas.
fonte
Absolutamente sim. O ensino oferece uma plataforma para aprimorar o conhecimento do material e aprimorar a camada de apresentação.
Além disso, ajuda a criar vínculos com outros desenvolvedores, que mais tarde se traduzem em relacionamentos eficazes da equipe de desenvolvimento.
fonte
Além do que todos os outros listaram ("Você precisa conhecer bem o material" etc.) se estiver escrevendo material para o curso, é uma boa prática escrever documentação, porque os documentos - sejam notas do curso ou documentos técnicos - são escritos transferir conhecimento, mesmo na indústria.
Mas quando você está no setor, muitas vezes a documentação é para alguém que você não conheceu e não conhece, então é fácil cair na armadilha de documentar o que você fez e não o que o interessado / leitor precisa saber.
Quando você está escrevendo para os alunos de sua turma, é mais fácil praticar e desenvolver essa mentalidade de documentação útil, pois você está próximo do seu interessado / leitor. Inferno, se você tiver realmente sorte, um aluno colocará a mão no ar e dirá que suas anotações são ruins, e então você aprendeu algo em que pode melhorar.
fonte
Sim. Muitas vezes, descobri que não entendi muito bem algo até tentar explicá-lo a outra pessoa, especialmente alguém sem todas as suposições e chavões que um praticante constrói ao longo dos anos, em primeira pessoa (como professor ou professor). mentor) ou até mesmo responder 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", pesquisar ou pesquisar e ajudar os alunos a encontrar a resposta mais rapidamente e com maior probabilidade do que os alunos por conta própria.
fonte
Quando você é forçado a explicar algo a partir dos primeiros princípios, ele definitivamente o forçará a entendê-lo melhor. Costumo usar essa idéia ao procurar bugs no código, arrastar alguém e tentar explicar como o código funciona. Normalmente, encontro o bug em alguns minutos. A mesma ideia.
fonte
Eu diria que não. Ser professor não o torna melhor - o aprendizado o torna melhor. Se você precisa aprender a ser professor, ficará melhor. Ensinar apenas ajuda a reter o que você sabe, mas no mundo da TI tudo muda diariamente. Por causa disso, você não pode confiar apenas no ensino, tem que tirar seu ... vagabundo ... do sofá e aprender.
Eu conheci professores de TI que eram ignorantes quando se tratava de sua área de atuação. Eles tinham certificados, cursos, papéis na parede, muitos "espetáculos". Claro que eles poderiam conversar, mas se você NUNCA saísse da programação prescrita, eles tremulariam, gaguejariam e fracassariam. Eles não aguentavam a pressão das coisas mudando. Eles não mudaram com o tempo, ensinaram o que sabiam, que era obsoleto.
Então, vamos mudar isso de novo, eu tive alguns professores que foram incríveis. Eles eram desenvolvedores, desenvolvedores seniores, desenvolvedores principais, diretores de desenvolvimento de aplicativos e depois se tornaram programadores. Eles conheciam cenários do mundo real, sabiam que 99% das coisas dos livros didáticos não preparavam as pessoas para o trabalho na vida real; portanto, elas mudaram, mantiveram atualizadas.
Há 12 anos, meu professor de TI da série 11/12 me fez uma oferta. Se, ao longo de cada ano escolar, eu fosse capaz de violar sua segurança / firewalls etc. na escola, ele me daria um A + (100%) no curso, independentemente do meu trabalho. Caramba, eu o ajudei a planejar o curso enquanto trabalhava como jr. desenvolvedor naquela época. Essa oferta que ele me deu fez dele (na época) um especialista em segurança do Windows NT. Eu recebi 100%, tive que roubar o UN / PW e depois trancá-lo ... era o único caminho no final ... Mas nem é preciso dizer que ele melhorou 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 pegando onda, sendo pago e se importando menos - eles vão piorar.
fonte
Tendo que resolver dezenas de "por que meu código não funciona?" problemas durante o ensino de sessões de exercícios em um curso de programação introdutória me tornaram muito melhor em compreender o código rapidamente e simulá-lo na minha cabeça.
fonte
Baseado na minha própria experiência como professor. Eu diria NÃO .
Porque, embora você compreenda melhor o básico, ensinando crianças e / ou novatos, não está fazendo nenhuma melhoria relacionada à sua profissão atual.
Por que isso acontece ? - porque a programação está se desenvolvendo mais rapidamente do que as pessoas podem estudar. Novas linguagens e estruturas aparecem, novas ferramentas, novos conceitos, novo hardware. E programador profissional DEVE conhecer seu domínio. Ou então - ninguém precisaria dele.
Você pode dizer - 'mas você pode estudar algoritmos fundamentais', - e eu digo para você - 'mas você deveria tê- los estudado na universidade'.
Outro tópico é o ritmo de trabalho. Os "professores" são lentos, não são usados para resolver problemas reais do mundo real rapidamente.
E por último mas não menos importante - ensinar é dar. Quando você quer ensinar - você não pode se impedir;) é apenas uma chamada interna, um desejo inflexível de compartilhar seu conhecimento, reduzir a estupidez ao seu redor e, eventualmente, tornar o mundo um lugar melhor;)
fonte
SIM!
Louis E. Frenzel escreveu exatamente sobre isso alguns anos atrás:
fonte
Não está diretamente relacionado, mas ...
Vejo isso acontecer o tempo todo na tropa de escoteiros do meu neto. Os escoteiros mais velhos pensam que "sabem" alguma coisa até que tentam ensiná-la a seus juniores. Não acho que a dinâmica mude muito, não importa quantos anos ou experiência tenhamos.
fonte
Muitas das respostas a essa pergunta apontaram que ensinar algo significa que você precisa aprender primeiro e, portanto, precisa melhorar para poder ensinar. Eu diria que isso está quase certo.
Se você é responsável por desenvolver os materiais do curso , em seguida, você terá que obter uma compreensão completa do assunto. Aprender o material até esse nível o tornará melhor, supondo que você precise aprender algo que você ainda não sabe.
Se, por outro lado, você é apenas um fantoche de carne lendo os materiais do curso preparados por outra pessoa, provavelmente poderá fugir sem conhecer ou entender o assunto. Isto é especialmente verdade para os cursos introdutórios. Se você é um desenvolvedor experiente ministrando aulas para iniciantes, precisa realmente aprender alguma coisa substantiva?
fonte
Não apenas o ensino aumenta seus conhecimentos ou habilidades de programação, como também é útil escrever artigos e tutoriais sobre programação. Se você pode explicar um tópico para outras pessoas de uma maneira compreensível, significa que você também conhece e entende esse tópico.
fonte
Eu acho que depende de quão bem você pessoalmente decida se preparar. Eu não gosto de parecer imbecil, então, quando ensino, me preparo demais, entre em minhas anotações com muito mais detalhes do que aquilo que costumo trazer na aula. Dessa forma, me sinto seguro e posso lidar com a maioria das perguntas. Sempre que me preparava para uma aula, encontrava alguns detalhes que havia esquecido ou esquecido até então. A concepção de exercícios pode ser particularmente desafiadora.
A preparação para pessoas que já são programadores existentes é um nível extra de esforço extra. Você pode esperar ter algumas pessoas na classe que odeiam que estejam sendo solicitadas a aprender Python o seu amado C # (ou o que seja). Eles vão desafiar tudo o que você diz. Você pode ter outras pessoas que já possuem algum conhecimento e farão perguntas avançadas no primeiro dia. No primeiro caso, lembre-se de manter o tópico e NÃO discuta as diferenças entre os idiomas, a menos que a classe não esteja se comportando hostilmente. Simplesmente retorne ao material que você irá cobrir. No segundo caso, quase todas as questões avançadas podem ser consultadas mais adiante na aula (dando-lhe tempo para procurar a resposta, se não souber.) Portanto, 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 os entediados facilmente. (E eles ficam surpresos quando eu faço esses exercícios avançados para eles, 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. Provavelmente, você pode manter o básico no mínimo, esse tipo de aula é entediado ao fazer 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, para preparar mais. Se você puder fazer os exercícios específicos para o tipo de trabalho que eles farão, 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 lhe ocorreria. Ajudá-los a corrigir seus erros e explicar por que eles são erros o ajudarão nas revisões de código!
fonte