Os principais pilares do aprendizado de programação - e por que os iniciantes devem dominá-los.
Os principais pilares do aprendizado de programação – e por que os iniciantes devem dominá-los
Os principais pilares do aprendizado de programação – e por que os iniciantes devem dominá-los.

Eu programo há mais de 20 anos. Durante esse período, tive o prazer de trabalhar com muitas pessoas, com quem aprendi muito. Também trabalhei com muitos estudantes, recém-saídos da universidade, com os quais tive que assumir o papel de professor ou mentor. Eu programo há mais de 20 anos. Tive o prazer de trabalhar com muitas pessoas durante esse período e aprendi muito com elas. Também trabalho com muitos alunos recém-saídos da faculdade e tenho que assumir o papel de professor ou mentor.
Ultimamente, tenho estado envolvido como treinador em um programa que ensina codificação para iniciantes. Recentemente, trabalhei como treinador em um projeto ensinando programação para iniciantes.
Aprender a programar é difícil. Muitas vezes descubro que cursos universitários e bootcamps perdem aspectos importantes da programação e adotam abordagens inadequadas para ensinar novatos. Aprender a programar é difícil. Muitas vezes descubro que os cursos universitários e bootcamps ignoram aspectos importantes da programação e adotam uma abordagem inadequada para ensinar iniciantes.
Quero compartilhar os cinco pilares básicos que acredito que um curso de programação de sucesso deve basear. Como sempre, estou abordando o contexto dos principais aplicativos da web. Quero compartilhar os cinco pilares fundamentais sobre os quais acredito que um curso de programação de sucesso deve ser construído. Como sempre, estou trabalhando no contexto de um aplicativo web convencional.
O objetivo de um novato é dominar os fundamentos da programação e compreender a importância das bibliotecas e frameworks. O objetivo para iniciantes é dominar os fundamentos da programação e compreender a importância das bibliotecas e frameworks.
Tópicos avançados como nuvem, operações em geral ou ferramentas de construção não devem fazer parte do currículo. Também sou cético quando se trata de Padrões de Design. Eles presumem uma experiência que os iniciantes nunca têm. Tópicos avançados como computação em nuvem, operações gerais ou ferramentas de construção não devem fazer parte do currículo. Também sou cético quando se trata de padrões de design. Eles presumem que os iniciantes nunca tiveram experiência.
Então, vamos ver por onde os novos programadores devem começar. Vejamos por onde os novos programadores devem começar.
Desenvolvimento Orientado a Testes (TDD) Desenvolvimento Orientado a Testes (TDD)

TDD traz muitos benefícios. Infelizmente, é um tópico avançado para o qual os iniciantes não estão totalmente preparados. TDD traz muitos benefícios. Infelizmente, este é um tópico avançado para o qual os iniciantes não estão preparados.
Iniciantes não devem escrever testes. Isso seria demais para seus níveis básicos de habilidade. Em vez disso, eles deveriam aprender como usar e trabalhar com testes. Iniciantes não devem escrever testes. Isso é muito alto para seu nível de habilidade básico. Em vez disso, eles deveriam aprender como usar e usar testes.
Cada curso de programação deve centrar-se em exercícios. Estendo meus exercícios com testes unitários e forneço aos alunos um ambiente já configurado para a execução desses testes. Todo curso de programação deve ser focado em exercícios. Estendi meu exercício com testes unitários e forneci aos alunos um ambiente para executar esses testes.
Tudo o que os alunos precisam fazer é escrever seu código e observar as luzes do testrunner passando de vermelho para verde. A gamificação resultante é um bom efeito colateral. Tudo o que os alunos precisam fazer é escrever seu código e observar a luz do testrunner mudar de vermelho para verde. A gamificação resultante é um bom efeito colateral.
Por exemplo: Se a tecnologia selecionada for Spring, forneço os exercícios e testes dentro de um projeto Spring. Os alunos não precisam saber nada sobre o Spring. Basta saber a localização dos exercícios e o botão para acionar os testes. Por exemplo: Se a tecnologia escolhida for Spring, disponibilizarei exercícios e testes no projeto Spring. Os alunos não precisam saber nada sobre a primavera. Eles só precisam saber onde estão os exercícios e o botão que aciona o teste.
Além disso, os alunos devem saber como usar um depurador e ter um Read-Eval-Print Loop (REPL) à mão. A capacidade de analisar código durante o tempo de execução e de ter um playground para pequenos experimentos é essencial no TDD. Além disso, os alunos devem saber como usar um depurador e ter um loop read-eval-print (REPL) à mão. No TDD, a capacidade de analisar código em tempo de execução e fornecer um local para pequenos experimentos é essencial.
O ponto principal é garantir que os alunos não precisem aprender comportamentos básicos de TDD depois de adquirirem habilidades básicas de programação. Mudar hábitos mais tarde na carreira dos alunos será muito mais difícil do que aprender esses hábitos agora. É por isso que eles deveriam viver e respirar testes unitários desde o início. O objetivo é garantir que os alunos não precisem aprender comportamentos básicos de TDD depois de terem dominado as habilidades básicas de programação. Mudar hábitos mais tarde na carreira de um estudante é muito mais difícil do que aprendê-los agora. É por isso que devem ser testados em unidades de sobrevivência e respiração desde o início.
Mais tarde em sua vida profissional, eles deverão ter antipatia por projetos sem testes unitários. Eles deveriam ver intuitivamente a ausência de testes unitários como um antipadrão. Mais tarde em suas carreiras, eles deverão se ressentir de projetos sem testes unitários. Eles devem intuitivamente ver a falta de testes unitários como um antipadrão.
Fundamentos Primeiro Fundamentos Primeiro

Ouço muitas vezes que os novatos devem começar imediatamente com uma estrutura. Isto é como ensinar as pessoas a dirigir, colocando-as em um carro de rali e pedindo-lhes que evitem a sobreviragem. Isso simplesmente ignora o fato de que eles ainda confundem o freio com o acelerador. Costumo ouvir que os novatos devem começar imediatamente com uma estrutura. É como ensinar as pessoas a dirigir, colocá-las em um carro de rali e pedir-lhes que evitem sobreviragem. Isso ignora completamente o fato de que eles ainda confundem o freio com o acelerador.O mesmo se aplica quando iniciamos os alunos com uma estrutura como o Angular. Os iniciantes precisam primeiro entender os fundamentos da programação. Eles precisam estar familiarizados com os elementos básicos e o que significa escrever código antes de poderem usar o código de outra pessoa. O mesmo vale para estruturas como Angular. Os iniciantes primeiro precisam entender os fundamentos da programação. Antes de usar o código de outras pessoas, elas precisam estar familiarizadas com os elementos básicos e o que significa escrever código.
O conceito de função, variável, condição e loop é completamente estranho aos novatos. Esses quatro elementos constroem as bases da programação. Tudo o que um programa é feito depende deles. Os conceitos de funções, variáveis, condicionais e loops são completamente estranhos para iniciantes. Esses quatro elementos formam a base da programação. Todos os componentes do programa dependem deles.
Os alunos estão ouvindo esses conceitos pela primeira vez, mas é de extrema importância que os alunos se tornem proficientes com eles. Se os alunos não dominarem os fundamentos, tudo o que se segue parece mágico e leva à confusão e à frustração. Os alunos estão ouvindo esses conceitos pela primeira vez, mas o mais importante é que eles se tornem proficientes neles. Se os alunos não dominarem o básico, tudo o que se segue pode parecer mágico, levando à confusão e à frustração.
Os professores deveriam dedicar mais tempo a esses fundamentos. Mas, infelizmente, muitos avançam muito rapidamente. O problema é que alguns professores lutam para se colocar no papel de aluno. Eles programam há muito tempo e se esqueceram dos tipos de problemas com os quais um iniciante tem que lidar. É bastante semelhante a um piloto de rali profissional. Ele não consegue imaginar que alguém precise pensar antes de frear. Ele simplesmente faz isso automaticamente. Os professores deveriam dedicar mais tempo à construção dessas bases. Mas, infelizmente, muitas pessoas progridem muito rapidamente. O problema é que alguns professores têm dificuldade em se colocar no papel de seus alunos. Eles programam há tanto tempo que se esqueceram dos tipos de problemas com os quais os iniciantes precisam lidar. É muito semelhante a um piloto de rali profissional. Ele não conseguia imaginar alguém precisando pensar antes de frear. Ele apenas faz isso mecanicamente.
Eu planejo meus exercícios de forma que sejam desafiadores, mas solucionáveis em um período de tempo razoável, usando uma combinação dos quatro elementos principais. Eu planejo meus exercícios de forma que sejam desafiadores, mas solucionáveis em um período de tempo razoável, usando uma combinação dos quatro elementos principais.
Um bom exemplo é um conversor para números romanos e arábicos. Este desafio exige paciência dos alunos. Depois de aplicarem com sucesso os quatro elementos para resolver o desafio, eles também obtêm um grande impulso na motivação. Um bom exemplo é o conversor de algarismos romanos para arábicos. Esse desafio exige paciência por parte dos alunos. Depois de aplicarem com sucesso estes quatro elementos para resolver um desafio, a sua motivação também aumentará significativamente.
Os fundamentos são importantes. Não siga em frente até que eles estejam resolvidos. O básico é muito importante. Não saia até que eles resolvam isso.
Bibliotecas e Frameworks Bibliotecas e Frameworks

Depois que os alunos passam muito tempo codificando, eles devem aprender que a maior parte do código já existe na forma de uma biblioteca ou estrutura. Isso é mais uma mentalidade do que um padrão. Depois que os alunos passam muito tempo codificando, eles devem compreender que a maior parte do código já existe na forma de bibliotecas ou estruturas. Não é tanto um padrão, mas uma mentalidade.
Como escrevi antes: Os desenvolvedores modernos conhecem e escolhem a biblioteca certa. Eles não passam horas escrevendo uma versão com bugs por conta própria. Como escrevi antes: os desenvolvedores modernos conhecem e escolhem as bibliotecas certas. Eles não passam horas escrevendo versões com bugs.
Para tornar essa transição de mentalidade um sucesso, os exemplos da “fase dos fundamentos” devem ser resolvidos usando bibliotecas conhecidas como Moment.js, Jackson, Lodash ou Apache Commons. Para que essa mudança de mentalidade seja bem-sucedida, os exemplos da “Fase Básica” devem ser resolvidos usando bibliotecas bem conhecidas, como Moment. js, Jackson, Lodash ou Apache Commons.
Desta forma, os alunos compreenderão imediatamente o valor das bibliotecas. Eles analisaram esses problemas complicados. Agora eles descobrem que uma biblioteca resolve o exercício num piscar de olhos. Desta forma, os alunos compreenderão imediatamente o valor da biblioteca. Eles lidam com questões complexas. Agora eles encontraram uma biblioteca que pode resolver esse problema em pouco tempo.
Semelhante ao TDD, os alunos devem ficar desconfiados quando os colegas se gabam de sua biblioteca de gerenciamento de estado criada por eles mesmos, o que torna o Redux desnecessário. Semelhante ao TDD, os alunos devem suspeitar quando os colegas se gabam de criar uma biblioteca de gerenciamento de estado que torna o Redux desnecessário.
Quando se trata de frameworks, os alunos não terão problemas em compreender a importância, uma vez que compreendam a utilidade das bibliotecas. Quando se trata de frameworks, uma vez que os alunos compreendam a utilidade das bibliotecas, eles não terão problemas para compreender a sua importância.
Dependendo do cronograma do curso, pode ser difícil dedicar tempo aos frameworks. Mas, como já mencionei, o aspecto mais importante é mudar a mentalidade do aluno, deixando de programar tudo do zero para explorar e usar bibliotecas. Dependendo do período do curso, pode ser difícil dedicar tempo à estrutura. Mas como já apontei, o aspecto mais importante é mudar a mentalidade do aluno, passando de programar do zero para explorar e usar bibliotecas.
Não adicionei ferramentas a este pilar, pois elas são úteis apenas para desenvolvedores experientes. Nesta fase inicial, os alunos não precisam aprender como integrar e configurar ferramentas. Não adicionei ferramentas a este pilar porque elas são úteis apenas para desenvolvedores experientes. Nesta fase inicial, os alunos não precisam aprender como integrar e configurar ferramentas.
Mestre e Aprendiz Mestre e Aprendiz
Aos 20 e poucos anos, queria aprender a tocar piano. Eu não queria um professor e pensei que poderia aprender sozinho. Cinco anos depois, consultei um tutor profissional. Bem, o que posso dizer? Aprendi mais em 1 mês do que nos cinco anos anteriores.
Quando eu tinha 20 e poucos anos, queria aprender a tocar piano. Não quero professor, acho que posso aprender sozinho. Cinco anos depois, consultei um mentor profissional. O que posso dizer? Aprendo mais em um mês do que há cinco anos.
Meu professor de piano apontou erros na minha execução que eu não conseguia ouvir e me alertou sobre coisas de interpretação que eu nunca teria imaginado. Afinal, ela incutiu em mim a mentalidade para a música e a arte, coisas que estavam fora do meu alcance como pessoa técnica. Minha professora de piano apontou erros que eu não conseguia ouvir quando tocava e me fez perceber algo interpretativo que eu nunca tinha pensado. Afinal, ela me incutiu uma forma de pensar musical e artística, ambas fora do meu alcance como técnico.
É o mesmo na programação. Se alguém não tem experiência em programação, o auto-estudo pode ser uma má ideia. Embora existam muitas histórias de sucesso, questiono a eficiência de fazer isso sozinho. O mesmo vale para a programação. Se alguém não tem experiência em programação, provavelmente é uma má ideia aprender sozinho. Embora existam muitas histórias de sucesso, duvido da eficácia de fazer isto sozinho.
Em vez disso, deveria haver uma relação “mestre e aprendiz”. No início, o mestre dá regras que o aprendiz deve seguir – cegamente! O mestre pode explicar as regras, mas normalmente o raciocínio está além da compreensão do aprendiz. Em vez disso, deveria haver uma “relação mentor-discípulo”. No início, o mestre dá ao aprendiz regras que devem ser seguidas – siga-as cegamente! O mestre pode explicar as regras, mas normalmente o raciocínio é incompreensível para o aprendiz.
Estas regras internalizadas formam uma espécie de rede de segurança. Se alguém se perder, sempre terá algum terreno seguro para onde retornar. Estas regras internas constituem uma espécie de rede de segurança. Se uma pessoa estiver perdida, ela sempre poderá encontrar um lugar seguro.
Ensinar não deve ser um monólogo. O mestre tem que lidar com cada aluno individualmente. Ele deve verificar como os alunos trabalham, dar conselhos e adaptar a velocidade do curso ao seu progresso. Ensinar não deve ser um monólogo. O diretor deve lidar com cada aluno individualmente. Ele deve verificar como os alunos estão trabalhando, dar conselhos e ajustar o ritmo do curso de acordo com seu progresso.
Uma vez que os aprendizes atinjam um certo nível de domínio, devem ser incentivados a explorar novos territórios. O mestre evolui para um mentor que compartilha “sabedoria” e está aberto a discussões. Uma vez que os aprendizes atinjam um certo nível de domínio, devem ser incentivados a explorar novas áreas. O guru torna-se um mentor que compartilha “sabedoria” e está aberto à discussão.
Desafio e Motivação Desafio e Motivação

“Vamos criar um clone do Facebook!” Isto não vem de um CEO apoiado por uma horda de desenvolvedores de software seniores e um orçamento multimilionário de euros. É um exercício de um curso introdutório para programadores. Tal empreendimento é virtualmente impossível. Pior ainda, os alunos são colocados no país das maravilhas e iludidos, acreditando que possuem habilidades que estão realmente além do seu alcance. “Vamos criar um clone do Facebook!” Não é isso que diz um CEO apoiado por uma equipa de desenvolvedores de software seniores e um orçamento multimilionário. É um exercício em um curso introdutório de programador. Esse trabalho é virtualmente impossível. Pior ainda, os alunos são transportados para um país das maravilhas e levados a acreditar que possuem habilidades que estão realmente além de suas capacidades.
Sem dúvida o professor tem consciência disso, mas cria tais exercícios por motivos motivacionais. Não há dúvida de que o professor sabe disso, mas há uma razão motivacional para criar tal exercício.
O principal objetivo de um exercício não é entreter. Deve ser criado em torno de uma técnica específica e deve ajudar os alunos a compreender essa técnica. O principal objetivo da prática não é o entretenimento. Deve ser criado em torno de uma tecnologia específica e deve ajudar os alunos a compreender essa tecnologia.
A motivação é boa, mas não sacrifica o conteúdo. Programar não é fácil. Se os alunos não tiverem uma motivação intrínseca, a codificação pode não ser o caminho a seguir. A motivação é boa, mas não à custa do conteúdo. Programar não é fácil. Se os alunos não estiverem intrinsecamente motivados, escrever código pode não ser a escolha certa.
Os novatos devem experimentar o que significa ser um desenvolvedor profissional. Eles devem saber o que os espera antes de investirem muitas horas. Os novatos devem experimentar o que significa ser um desenvolvedor profissional. Eles devem saber o que os espera antes de investir muito tempo.
Por exemplo, muitos aplicativos de negócios giram em torno de formulários e grades complexos. Criá-los é uma habilidade importante que os exercícios podem transmitir. Construir um aplicativo semelhante ao Facebook pode não ser a melhor lição para os alunos aprenderem imediatamente. Por exemplo, muitos aplicativos de negócios estão centrados em formulários e grades complexos. Criá-los é uma habilidade importante que a prática pode ensinar. Criar um aplicativo semelhante ao do Facebook pode não ser o melhor curso para os alunos fazerem imediatamente.
Da mesma forma, um não programador pode se surpreender com o número de linhas de código que um desenvolvedor escreve por dia. Há até momentos em que removemos o código ou não conseguimos nada. Da mesma forma, não-programadores podem se surpreender com o número de linhas de código que os desenvolvedores escrevem todos os dias. Há até momentos em que excluímos o código ou não fazemos nada.
Por que? Porque as coisas dão errado o tempo todo. Passamos horas intermináveis corrigindo alguns bugs extremamente estranhos que acabam sendo um simples erro de digitação. Algumas ferramentas podem não estar funcionando apenas porque uma biblioteca recebeu uma atualização de versão secundária. Ou o sistema trava porque alguém esqueceu de adicionar um arquivo ao git. A lista pode continuar indefinidamente. Por que? Porque as coisas sempre dão errado. Passamos inúmeras horas corrigindo alguns bugs realmente estranhos, apenas para termos um simples erro de impressão. Algumas ferramentas podem não funcionar corretamente apenas porque uma biblioteca passou por uma atualização de versão secundária. Ou o sistema trava porque alguém esqueceu de adicionar um arquivo ao git. A lista é infinita.Os alunos devem aproveitar essas experiências. Um exercício direcionado a uma biblioteca desconhecida sob pressão de tempo pode ser exatamente a coisa certa. ;) Os alunos devem aproveitar essas experiências. Um exercício direcionado a bibliotecas desconhecidas sob pressão de tempo pode ser adequado. ,)
O sol nem sempre brilha na vida real. Os iniciantes devem estar bem preparados para a realidade da programação. O sol nem sempre brilha na vida real. Os iniciantes devem estar bem preparados para a realidade da programação.
Conselho FinalConselho Final
Por último, mas não menos importante: não se pode tornar um programador profissional em duas semanas, dois meses ou mesmo um ano. É preciso tempo e paciência. Por último, mas não menos importante: não se pode tornar um programador profissional em duas semanas, dois meses ou mesmo um ano. Isso leva tempo e paciência.
Os formadores não devem apressar-se nem fazer falsas promessas. Eles devem se concentrar em saber se os alunos entendem os conceitos e não avançam muito rápido. Os treinadores não devem apressar as coisas nem fazer falsas promessas. Eles devem se concentrar em saber se os alunos entendem os conceitos, em vez de progredirem muito rapidamente.
Texto original: https://medium.freecodecamp.org/the-main-pillars-of-learning-programming-and-why-beginners-should-master-them-e04245c17c56
What to read next
Want more posts about Translation?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #Translation?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home