Bloqueios e Obstáculos no Aprendizado de Programação: Estratégias para Programadores Iniciantes/Intermediários

Matheus Vasconcelos
6 min readAug 13, 2023

--

Não é de hoje que inúmeros estudantes desesperados (me incluo) buscam posts e vídeos do tipo: “Como estudar bem” ou “Como não procrastinar”. Essa busca tornou-se cada vez mais intuitiva na mente dos estudantes e profissionais à medida que novas ideias, tecnologias, distrações e temas importantes surgiram.

É de se supor que na época de Sir Isaac Newton, por exemplo, esse questionamento não passava pela cabeça das pessoas inseridas no ambiente acadêmico.

Nos dias atuais, eu notei dois principais tipos de erros cometidos pelos alunos que buscam essa expertise, e cada um se situa em um extremo:

  1. As pessoas tendem a se eternizar no “introdução à X”, com aquele receio de dar o próximo passo, porque os assuntos são tão extensos e minuciosos que parece valer a pena passar mais tempo na base para absorver melhor os tópicos avançados. O problema é que nunca sabemos quando dar o passo seguinte.
  2. Por outro lado, alguns alunos mais ansiosos partem para os tópicos avançados sem a base necessária. No contexto da programação, costumo fazer a seguinte analogia: um programador que começa sem entender lógica é como uma criança que pula a alfabetização e segue diretamente para o ensino fundamental. Além disso, o universo de um programador oferece conteúdos avançados muito atrativos (IA, Machine Learning, etc.).

Análise Geracional e Desafios

Voltando à análise geracional, nossos estudantes estão imersos em diversos tipos de conteúdo. A internet é como um bairro diversificado: enquanto aprendemos com infinitos cursos e vídeos sobre programação e ciência em geral, também somos atraídos por “vizinhos” que representam distrações em geral. Por isso, hoje, tentamos incessantemente “aprender a como aprender”.

O ponto fundamental e talvez chocante para alguns é que você não aprende de verdade, apenas entende. Sempre que você para uns 10 minutos para ouvir alguma informação e, ao mesmo tempo, faz outra atividade (como comer ou trabalhar), você pode entender essa informação, mas não a absorve de fato.

Faça o teste em alguma aula, por exemplo. Ao ouvir um assunto pela primeira vez (apenas ouvindo), você pode sentir aquela sensação de prazer por ter compreendido tudo. No entanto, se alguém lhe pedir para explicar o tópico imediatamente após essa compreensão, certamente você não conseguirá, ou, se conseguir, perderá parte da efetividade na explicação.

Você só aprende quando age com base naquilo que pensou. O fato é que pensamento não é comportamento. Entender um assunto não é aprendê-lo. Vigotsky falou disso na década de 1920. Segundo o autor, “aula expositiva não gera aprendizagem, ela gera entendimento”.

Hoje, entendemos muitas coisas, exponencialmente mais do que alguns gênios que a humanidade teve o prazer de ter, mas certamente não aprendemos como eles.

Bloqueio de Aprendizado em Programadores Iniciantes

Dito isso, muitas pessoas sentem uma espécie de bloqueio no processo de aprendizagem da programação como um todo, inclusive nos passos iniciais com o estudo. Eu, incluído totalmente nessa descrição, só tive essa percepção depois de alguns anos programando. Acredito que também há dois motivos para isso:

  1. Não aprendemos que a programação é uma ferramenta para realizar um trabalho em qualquer área.
  2. Usamos o mesmo método de ensino que nos foi passado no período escolar.

Sobre o primeiro ponto, na verdade, programar não é apenas sobre escrever códigos; é sobre a resolução de problemas. A linguagem, seja qual for a que você utilize, é uma ferramenta acessória para solucionar determinada questão, seja no âmbito profissional, pessoal ou qualquer outro.

Eu posso resolver na minha cabeça todo um problema antes de aplicá-lo em um código. O programador já tem que partir da solução para a programação. Muitas pessoas fazem o caminho inverso, e esperar o código lhes dizer alguma coisa. Pode dar certo? Dependendo da situação e com muito trabalho, pode até funcionar. Eficiente? Com certeza não!

De fato, o segundo motivo é um dos agravantes para não compreendermos esse ponto. Algumas pessoas tendem a expandir o mecanismo de aprendizado que viram na escola para outros tópicos mais avançados e complexos, que demandam outra abordagem.

Esse mecanismo é baseado em uma visão não holística, ou seja, estudamos de maneira isolada os assuntos e desde cedo direcionamos nosso cérebro a um conteúdo por vez, sem conectá-los, mesmo que a conexão seja evidente.

A maioria de nós aprendeu assim para conseguir “separar” a enormidade de disciplinas que tínhamos no ensino médio. O que quero dizer é que os alunos costumam seguir sempre o mesmo cronograma: aprender a teoria do assunto e depois praticar.

Todas as disciplinas do ensino médio foram passadas dessa forma. Não há nada de errado com isso, mas essa metodologia sempre foi aplicada apenas depois de nos desconectarmos dos outros assuntos que aprendemos. Isso é perfeitamente compreensível, mas ineficiente a longo prazo no mercado de trabalho.

Quando se trata de linguagens de programação, aprender usando esse método é contraproducente, pois no contexto profissional elas se tornam apenas parte de um todo. O plano de ensino não é apenas o conteúdo que está sendo ensinado; ele é o motivo pelo qual aquele conteúdo está sendo ensinado.

A abordagem tradicional de ensino nos atira para o vício em aprender o conteúdo como se nos trancássemos numa sala sozinhos com aquele tópico, em vez de aprendê-lo ao “ar livre”, como se pudéssemos, além de compreender o tema em questão, observar de relance outros conteúdos que podem dialogar com aquele que estamos aprendendo.

Ao retirarmos essa abordagem mecânica do aprendizado, que nasceu na fase escolar, expandimos nossa mente para várias outras áreas. Ao aplicarmos no todo aquilo que aprendemos de maneira isolada, compreender suas interações se torna uma das sensações mais gratificantes para um programador.

Isso se torna uma mão na roda ao promovermos um novo método de aprendizado, auxiliando os alunos a não desistirem. Quando eles compreendem que tudo o que existe no ambiente educacional/acadêmico pode ser aprendido por qualquer pessoa, adquirem uma nova visão sobre os hábitos de estudo. A única variável que muda para cada um o tempo levado para desenvolver esse aprendizado.

Tendo isso em vista, o tempo se torna precioso para qualquer atuante na área, e uma boa especialização se torna questão de tempo.

Possíveis Soluções

  1. As soluções para tornar o ensino de programação mais atrativo e homogêneo deveriam ser baseadas em projetos reais. Eu senti mais vontade de continuar assistindo vídeos sobre o assunto quando havia um projeto embutido naquela explicação e, consequentemente, aprendi mais. Esse é um passo importante que quebra com os dois motivos que citei anteriormente e que contribuem para a estagnação das pessoas na área.
  2. Outro fator importante é saber escolher um caminho que se adeque aos seus objetivos. A área da TI é vasta, e a subárea da programação é igualmente abrangente. Saber para onde ir e qual especialização seguir é fundamental para se manter motivado a continuar estudando.
  3. Como dito antes, a variável tempo é a mais crítica quando falamos da psicologia do aprendizado. Não precisa de graduação X ou curso técnico Y. O necessário é aliar o direcionamento correto para aquilo que você deseja e passar tempo suficiente para aprendê-lo. Um fã de futebol, música ou filmes não precisou fazer um estudo minucioso e digno de uma metodologia científica. Ele apenas passou tempo suficiente para absorver tudo aquilo.
  4. Este é um dos pontos que mais me ajudou e é a razão pela qual estou aqui escrevendo e compartilhando o pouco que eu sei: ensinar aquilo que você aprendeu. É imprescindível que, mesmo que você não domine completamente um assunto, você ensine ou finja estar ensinando a alguém. A absorção do conteúdo é enorme. Aprendi isso ao ler artigos que tratavam da pirâmide do aprendizado, do psicólogo William Glasser. O topo é o que todos nós fazemos para entender (não aprender): ler. A base é o que deveríamos fazer: ensinar e explicar aquilo que estamos buscando aprender.
Pirâmide do aprendizado de William Glasser

--

--

Matheus Vasconcelos

Portfolio: https://www.kaggle.com/mhvasconcelos A Telecommunications Engineering student, passionate about science, programming, and data analysis.