A base de toda programação está em… quebra-cabeças

Saudações, Habrenses!

Neste artigo, quero compartilhar minha experiência como professor de programação em C++ em um colégio vinculado a uma universidade técnica. Foi uma experiência única na vida, que me ensinou muito. Quando se trata de fatos interessantes do meu passado pessoal, esse relato vem à mente como um dos primeiros.
Vamos lá.

Primeiro, um pouco sobre mim.
Em 2016, me formei com honras em 'Segurança da Informação em Sistemas Automatizados'. Durante o curso, pude frequentemente explorar meu potencial escrevendo artigos científicos, participando de competições e editais. Em 2015, tive a sorte de ser o vencedor do concurso nacional de jovens cientistas 'UMNIK'. Em 2016, antes de concluir meus estudos, fui contratado por uma grande organização da cidade como 'Especialista em Segurança da Informação, Criptografia e Cifrado'.
Resumindo, foi assim. Podemos supor que eu tinha, de fato, alguma noção sobre programação.

E chegou 2017. Pós-graduação. Fui convidado a lecionar C++ por um semestre no colégio, pelo que me prometeram boas vantagens em relação à carga do programa de pós-graduação e nada mais.

Honestamente, estava sinceramente interessado em me aventurar nesse papel.

A primeira aula
Setembro. Primeira semana de aula. Os alunos chegaram até mim. 'A turma mais problemática' — assim eram chamados.
23 pessoas. 'Programadores'.

Como de costume, primeiro me apresentei. Fiz uma breve introdução sobre a parte 'Primeiro, um pouco sobre mim'...
Então começou o terror. Quando perguntei 'O que vocês sabem fazer?', os alunos (daqui em diante, chamaremos assim) responderam que sabiam pouco mais do que nada (o que significava que alguns deles conheciam a interface do MS VS e podiam criar um projeto 'Hello world')... Programadores. Último ano...

Depois, eles explicaram detalhadamente, 'com cores', que nada havia sido ensinado e que, na verdade, estavam desanimados com a programação...

Quase todos os dias até a próxima aula foram assim:
A base de toda programação está em… quebra-cabeças

... mas um dia antes, surgiu a ideia de dedicar esforços para corrigir a situação que se estabelecera nas mentes e consciências daquela juventude. E então 'Ostap começou a agir'.

Introdução à programação
Na próxima aula, trouxe... um quebra-cabeça.
Sim, sim. Quebra-cabeça. "Como Treinar o Seu Dragão". As regras eram simples. O grupo foi dividido em 3 equipes. Cada equipe montava sua parte. Uns cuidavam da floresta, outros da terra, e os últimos do dragão no centro da imagem. Enquanto eles montavam o quebra-cabeça naquele período, eu falei que montar um quebra-cabeça também é programação, que os programadores frequentemente usam código de outros, que em cada projeto existem várias equipes, funcionalidades, módulos…
Gradualmente, até os alunos mais desmotivados se envolveram no processo.
Quando terminei de introduzir a ideia de programação dentro das concepções de negócios, processos e… quebra-cabeças, chegou a hora de estabelecer as regras de ensino.
A cada aula, cada aluno deveria anotar em um caderno 10 termos de TI. Qualquer um. Cada um tinha seus próprios. A ideia era que eu pegasse o caderno de um aluno, encontrasse entre todos os termos os mais práticos e perguntasse a outro aluno sobre eles. Quando o outro aluno dizia "Eu não anotei esse termo", isso não era penalizado (por uma questão de bom senso), mas aquele aluno deveria anotar os "termos faltantes" (assim como todos que não os tinham) e encontrar seus significados até a próxima aula.

Assim fizemos. Cada aula começava com um leve sorteio de dois ou três alunos. Os alunos estavam animados com esse processo.

Temas das aulas
Ao iniciar o treinamento, é muito importante fornecer aos alunos uma boa literatura. Na minha opinião, o material ideal era o livro:
A base de toda programação está em… quebra-cabeças

Na época, tive que ler isso cuidadosamente junto com o Microsoft Visual Studio. Assim, consegui entender programação praticamente do zero. Um resultado perfeito.

Você entra discretamente para os alunos e diz: "Para se tornarem programadores, vocês precisam apenas ler e tentar tudo que está neste livro", e joga o livro na mesa. O principal é não confundir os livros na sua mochila…

Antes de cada tema, eu, sem dúvida, precisava me preparar bem. Li o mesmo Lafore e várias outras fontes interessantes da internet.
Precisava explicar quase que do zero. E era importante entender onde estavam as lacunas no conhecimento básico dos alunos de forma dedutiva.
Arrays -> Trabalhando com memória (construtores) -> Referências -> Como a memória funciona -> Dispositivos de armazenamento -> O que é um dispositivo de armazenamento físico -> Representação binária de dados…
A base de toda programação está em… quebra-cabeças

Um teste de conhecimento muito rigoroso sobre fatos fundamentais da programação. Já não sou programador, sou historiador!

E então, parecem ocorrer batalhas históricas por várias rodadas consecutivas. Uma vez, uma secretária do departamento entrou em nossa sala e, ao ver o grupo, arregalou os olhos, olhou fixamente e fechou a porta. Depois, soube que ela estava em choque porque ESTE grupo estava tão quieto e prestando atenção em mim… Tchê, fácil.

Trabalhos laboratoriais
As primeiras informações práticas - os primeiros "labs". No total, ao longo do semestre, o grupo entregou 10 trabalhos laboratoriais. Nos primeiros, faziam simples console a+b, e nos últimos — escreviam, embora também em console, aplicativos bastante interessantes, como calcular o valor de uma integral de uma função arbitrariamente especificada usando um dos três métodos — tarefas muito semelhantes às da avaliação final — trabalho de curso.

Mas a abordagem de avaliação não era familiar. Durante toda a minha vida acadêmica, enfrentei o fato de que ser inteligente e conseguir passar um relatório de trabalhos não é a mesma coisa. Isso me incomodava profundamente.

— Pessoal, pensei sobre isso. Vamos estabelecer relações "conceituais". Se algum de vocês acha que programação não é necessária — a porta está ali. Estou ensinando de graça. Quero ver aqui apenas curiosos, engajados e entusiastas não indiferentes. Todos os outros, por favor, não desperdicem nosso tempo — falei no primeiro dia de entrega dos trabalhos laboratoriais. Depois disso, 5 pessoas pararam imediatamente de frequentar as aulas. Isso foi lógico e esperado. Com os demais, era possível tentar fazer algo razoável.

— ... não me interessa ver alguém fazendo o trabalho por vocês, contanto que consigam entregar. Vocês podem não ser programadores, mas terão que ser pessoas aqui..

Isso se pareceu assim:

case excelente

Um estudante vem até mim para entregar o trabalho.
— Fez você mesmo?
— Sim.
— O que é isso?
— *responde corretamente*.
*Pergunto mais sobre alguns pontos. Responde certo*
— aceito. Excelente.

case falador

— Fez você mesmo?
— Sim.
— O que é isso?
— *responde ERRADO / não responde*.
*Pergunto mais sobre alguns pontos. O mesmo resultado*
— NÃO aceito. REPROVADO. Estou esperando pela recuperação.

case bom aluno

— Fez você mesmo?
— Sim.
— O que é isso?
— *responde corretamente, mas de forma hesitante, sem certeza*.
*Pergunto mais sobre alguns pontos. O mesmo resultado*
— aceito. Bom.

case aluno mediano

— Fez você mesmo?
— Não.
— Por quê?
— Difícil. Eu tive ajuda… *nomeia honestamente um estudante excelente do grupo*
— Entendeu?
— Sim, quase tudo entendi.

— O que é isso?
— *responde corretamente*.
*Ainda pergunto sobre alguns pontos. Responde de forma mais ou menos correta, às vezes totalmente fora, mesmo que seja 50 a 50 entre corretas e incorretas.*
— aceito. Bom.

Não faz sentido descrever todos os outros casos. Sim, um "bom aluno" pode ficar insatisfeito quando um "aluno mediano" recebe a mesma nota apenas por ser honesto. Aí tudo depende do humor. Ou eu peço ao "bom aluno" para olhar para baixo, pois "agora vou compartilhar uma pitada de sabedoria", e então explico a essência da abordagem, descrevendo o que tem mais valor na vida e explico que foi muito mais difícil para o "aluno mediano" passar do que para ele, o "bom aluno", e etc…
… ou, como meu professor fez uma vez, desenho um pequeno dente na grade do diário na frente do insatisfeito e na próxima vez eu completo o trabalho de laboratório pessoalmente para ele. Assim, só para que ele não "esfrie" seus colegas.

A base de toda programação está em… quebra-cabeças

Notas
O processo educacional, assim como o mundo todo, está literalmente inundado de preços e avaliações.
Os estudantes também são pessoas, no entanto, as "barreiras", na minha opinião, precisam ser "abaladas" aqui.
Durante o semestre, todos receberam uma tarefa bônus. Registrar-se em github.com, enviar um projeto vazio em C++, fazer 2 atualizações, comitar e enviar. Para essas ações, foi atribuído 15. Sim, isso mesmo, não 4, não 5, mas 15. Três entenderam. O psicotipo do estudante era de alguma forma compreensível, no entanto, aconteceu outra situação.
Uma vez, nossa aula foi remanejada de tal forma que se tornou a última, e ainda por cima, com uma pausa. No entanto, ainda assim compareceram 15 pessoas. Não queria explicar um novo tópico em comemoração a tal heroísmo, já que já havíamos avançado bem nos conteúdos + o próximo tópico não era muito fácil para mentes cansadas (as minhas e dos alunos). Então decidi falar sobre filosofia.

— Declaro um espetáculo de generosidade sem precedentes. Todos me dizem que nota colocar para ele nesta aula.
Todos queriam um "cinco".
— Contem, já está feito, — eu disse. Todos ficaram felizes.
Silêncio.
— E por que ninguém quis 7-um ou 10-uma?
Todos ficaram com os olhos arregalados e começaram a sorrir idiotamente.
— Você vai dar a nota? No diário?! — foi a voz que veio da última carteira.
— Claro! — eu disse, — declaro um quiz sobre termos, quem responder 10 das minhas perguntas — eu coloco 20 pontos no diário, sem pegadinhas, quem não responder — leva -10 (menos dez).

A equipe se animou, começou a discussão; todos tinham notas conquistadas de forma honesta. Dois se ofereceram. Com algumas imprecisões, eles responderam um a um a 10 perguntas sobre pilha, fila, construtor, destrutor, coletor de lixo, encapsulamento, polimorfismo, funções hash...
Cada um teve um desenho no caderno 20... mas a importância do caderno e das notas diminuiu aos olhos de todos. Agora me arrependo de não ter perguntado se eles queriam "compartilhar" suas notas com alguém. Acho que teriam compartilhado... Daquela época em diante, cada um entregava a "prova" com conhecimentos e honestidade.

A partir daquele momento, surgiu mais um tipo de entrega da prova:


case honestamenteNãoÉIssoMasEleTentou

— Fez você mesmo?
— Não.
— Por quê?
— Difícil. Eu tive ajuda… *nomeia honestamente um estudante excelente do grupo*
— Entendeu?
— Sergey Nikolaevich, sendo honesto — não entendo nada, escrevi os comentários ao lado de cada linha — não é para mim, vou ser tratorista.
— O que é isso?
— *lê o comentário ao lado da linha*.
— …
— …
— Qual é a diferença entre o Belarus MTZ e o Don 500 e o K700?
— ??!.. O primeiro é um trator de rodas de produção de Minsk, frequentemente usado em tipos leves e médios de produção agrícola. Ele ainda tem rodas pequenas na frente e grandes atrás. Don 500 é, principalmente, uma colheitadeira, enquanto o K-700 "Kirovets" é um trator de rodas soviético de uso geral com alta capacidade de trânsito, classe de tração 5.
— Aceito. Muito bem (!!!).
— Obrigado, Sergey Nikolaevich!!!

Na minha terra, conversar sobre trator é quase como aqui sobre SOLID.

Gênio
Tive um Gênio na minha turma. Um aluno que chegou muito atrasado na primeira aula e não se juntou a todos para montar aquele quebra-cabeça. Então eu pedi a ele para fazer o que planejei para todos na próxima aula — escrever em um papel sobre si mesmo, o que gosta, o que lhe interessa. Nos resultados, o "Gênio" tinha 2-3 linhas: algo como "conhecendo a futilidade da existência"...

... Oh, Deus, eu tinha em minha turma, numa só pessoa, ao mesmo tempo o segundo Laozi e Kojima...
A base de toda programação está em… quebra-cabeças

Para minha surpresa, nas duas primeiras aulas ele realmente respondeu brilhantemente às perguntas sobre os termos, no entanto, o efeito não durou muito. O "Gênio" parou de frequentar as aulas e só apareceu na entrega do primeiro trabalho de laboratório, que não conseguiu entregar por razões objetivas. Depois, devido às faltas, ele acumulou dívidas que, como ele acreditava, eu deveria contabilizar para ele, assim, "fraternalmente"..
A ausência nas aulas + o ego inchado contradizia os princípios estabelecidos para a frequência às minhas aulas. O 'Gênio' só tinha duas opções — se reabilitar (o caminho esperado) ou ignorar as aulas e torcer por uma 'nota três', concedida pela coordenação, para se livrar de ser considerado um vagabundo.
Bem, esse é o 'Gênio'... aqui tinha que agir de forma 'genial'. Este jovem não encontrou nada melhor do que escrever em um diálogo geral no VK (onde eu e todos os estudantes daquele grupo estávamos) uma tirada raivosa cheia de xingamentos e ofensas a meu respeito.

Hum... Decepção.
O que mais me surpreendeu foi que, antes de finalizar o processo punitivo por parte da administração da faculdade, ele decidiu se desculpar comigo. Por quê? — sinceramente, não entendi. Naquele momento, eu já estava há muito tempo desapegado de críticas, ainda mais criticas tão claramente ridículas. Minha personalidade não foi atingida, mas os processos são os processos, como professor não pude deixar de comunicar isso. Como se revelou, durante seu tempo como aluno, ele acumulou tantas reclamações que este caso se tornou o último. Ele foi expulso. Da turma final da escola técnica.
Talvez ele já esteja me observando há muito tempo através da mira de um rifle de precisão, mas, para ser sincero, não me importo.
Ah, genialidade, quão insensível você é...

Epílogo
Pessoalmente, para mim, a experiência de ensino foi uma das mais instrutivas. Isso me ajudou a consolidar conhecimentos fundamentais em programação após meus estudos na faculdade. Senti confiança na especialidade escolhida (dentre as opções disponíveis). O que é especialmente importante é que 'o grupo mais indisciplinado' desenvolveu respeito e amizade por mim — isso tem um grande valor. Consegui encontrar um caminho para os inovadores internos deles, tentei transmitir a realidade, e não essas prioridades clichês. Que pena que não chegamos aos 'puzzles' na programação — onde cada um deveria fazer uma parte do código, e, unindo todas as partes em uma, obteríamos um grande programa funcional...
Espero que algum dia cada um deles sinta isso... mas por enquanto, abaixo estão capturas de tela com as avaliações de alguns estudantes após 2 anos.

A base de toda programação está em… quebra-cabeças

Ainda é cedo para tirar conclusões sobre o sucesso da carreira de programador de qualquer um deles, já que agora a maior parte desse grupo está se formando em uma universidade. O tempo dirá.

Espero que o artigo tenha sido útil. Obrigado pela atenção!
Desejo sucesso criativo e uma atitude positiva, colegas!

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster