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

40

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?

greengit
fonte
Não se preocupe (chocando) sem saber uma resposta. Ao apontar uma área que você não conhece, seus alunos permitem que você saiba o que precisa aprender para ensinar os alunos dos próximos anos.
Martin York
Obrigado. Mas o treinamento NÃO é na universidade - é uma oportunidade única para treinar alguns funcionários de Java / .NET de duas pequenas empresas de desenvolvimento da web.
treecoder
34
Ensinando alguma coisa vai fazer você melhor em que , por causa de ensino obriga a entender completamente -lo . Além disso, você está essencialmente re-estudando -o enquanto ensina.
Jake Berger
2
Seja o seu eu natural e expresse o conhecimento. Os alunos são pessoas como você e eu que pretendemos aprender ouvindo você na sala de aula. Quando seus alunos obtiverem grandes distinções ou apresentarem soluções impressionantes para os problemas deles por causa do seu ensino, isso será mostrado. A satisfação que você pode obter com isso pode facilmente desafiar a expressão.
precisa saber é o seguinte
2
Todos os treinadores que eu já entrevistei; falharam na entrevista para a posição de desenvolvedor. Programar não é apenas teoria. Para ser um programador melhor, você precisa aprender 'e' praticar criando aplicativos do mundo real.
Muhammad Hasan Khan

Respostas:

37

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.

FrustratedWithFormsDesigner
fonte
11
@greengit Eu sugiro que você compare os idiomas, mas verifique se realmente sabe do que está falando ao dizer que um idioma é melhor do que outro, porque alguns alunos podem discordar e ter contra-argumentos válidos. Compará-los e mostrar como o python facilita tarefas diferentes, então no Java / .NET é uma ótima maneira de ajudar a apresentar os conceitos.
Ryan Matthews
2
Eu diria que mantenha as comparações no mínimo e se concentre em como fazer as coisas no Python. Suponho que eles já estejam familiarizados com construções básicas, como atribuição de variáveis, loops / iteração, funções, recursão, estruturas de fluxo de controle, etc ... Pode ajudar a projetar um projeto que eles construíram durante o curso (se for tempo suficiente para isso) .
FrustratedWithFormsDesigner
3
@greengit Não finja saber algo que você não conhece. Se você não souber o suficiente para fazer uma comparação, use-a como um ponto de aprendizado e peça ao aluno que explique como ele funciona em Java / .NET e tente fazer uma comparação juntos.
precisa saber é o seguinte
2
@greengit Eu acho que ajuda não entrar com a suposição de que você precisa saber tudo sobre o assunto. É como esperar que você faça um trabalho sem a capacidade de procurar referências. Apenas aceite o fato de que você não terá todas as respostas, mas poderá ajudar a direcionar seus alunos para as respostas. Talvez dê a eles termos-chave para o Google.
precisa saber é o seguinte
11
+1 para admitir quando você não souber a resposta. Eu vejo muitos instrutores simplesmente inventando algo no local, em vez de admitir que não sabem tudo. Eu também tive alguns bons instrutores que usariam como uma oportunidade, levariam os alunos a encontrar a resposta, ensinando como procurar as coisas. Isso precisa ser feito com cuidado, para que você não desanime as pessoas de fazer perguntas.
Jim C
30

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.

maple_shaft
fonte
2
+1. Meu limite de votação é atingido :( Por favor, me aponte para o link, se houver.
treecoder
22
Talvez você deva parar de se referir a essa tabela. willatworklearning.com/2006/05/people_remember.html
Shawn D.
5
@ShawnD. Eu imaginei isso ... porque você sabe o que eles dizem, 84% das estatísticas são compostas. Eu acho que o mais importante deve ser levado para a mensagem maior. Retojo muito mais do que ensino do que leio. Isso é um dado para mim como uma observação natural de mim mesmo. Esse foi o ponto que estou tentando fazer.
maple_shaft
3
Estatísticas agradáveis, +1. Minhas experiências são basicamente as mesmas. Temos um ditado aqui: quem pode, faz. Quem não pode fazer, ensina. Quem não sabe ensinar, ensina esportes. Brincadeira apenas :)
Falcon
2
@Falcon, uma versão diferente da última frase é "Aqueles que não podem ensinar, gerenciar" ;-)
Péter Török
10

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.

Péter Török
fonte
5

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.

Davy8
fonte
+1 em "você também pode aprender com seus alunos se tiver a mente aberta". Eu experimentei isso quando lecionei algumas aulas noturnas, anos atrás.
DevSolo 27/09
4

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).

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

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.

knut
fonte
4

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).

justin
fonte
3

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.

Gratzy
fonte
3

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.

Pankaj Upadhyay
fonte
3

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.

mprototype
fonte
2

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.

Richard JP Le Guen
fonte
2

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.

hotpaw2
fonte
1

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.

Bob Moore
fonte
1

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.

Ryan Ternier
fonte
-1 Discordo totalmente. Como você pode ver, você é realmente uma minoria aqui. Sua opinião é importante, mas acho que você pode aprender algo com a maioria das respostas dos professores aqui. Desculpe, não pude resistir ao último trocadilho, eu estava lendo um post sobre recursão.
junky
1

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.

mpartel
fonte
1

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;)

c69
fonte
É por isso que você se beneficia por aprender com seus alunos que podem ter mais recentemente pegou novos conhecimentos, relacionados você não sabe, ou perspectivas que você não tinha pensado
junky
1

SIM!

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

Escreva um artigo ou artigo ou ensine o que aprendeu. Você precisa saber para escrever ou ensinar. Não há maneira melhor de aprender por si mesmo do que ter que explicar aos outros.

Warren
fonte
1

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.

DaveE
fonte
Eu amo correlações assim!
Jun12
1

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?

Joel Brown
fonte
Eu concordo principalmente, mas acho que muitas das postagens diziam que você aprende pelo processo de ensino, especialmente quando as perguntas são feitas por seus alunos , em vez da preparação do material que você acha que conhece (embora ainda haja valor naquilo).
Jun12
0

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.

Janela quebrada
fonte
0

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!

HLGEM
fonte