Tradução pirata do artigo retweetado pelo @VagLigieiro

Durante toda a sua vida você sempre conviveu com todo mundo à sua volta dando um valor exagerado às pessoas que tem maior facilidade com exatas do que com humanas. Só puxar pela memória quando, na escola, qualquer pessoa que tirasse mais de 9 em matemática era tida como o gênio da sala, ao passo que todo mundo que tirava nota máxima em redação era apenas mais um, ainda que ambas fossem igualmente raras.

Corta pros anos 201x quando todo mundo só fala em startup, disrupção e ensinar crianças a programar nas escolas e você revive toda a ideia, errada, de que quem sabe matemática é uma espécie de gênio da humanidade e que, por tabela, os programadores são os semi-deuses da era moderna que entendem a linguagem de Deus na Terra e codificam ela pros humanos mortais como nós.

Nas faculdade esse estereótipo é reforça ao máximo com os professores de programação sendo oriundos de cursos como computação, matemática ou engenharias e que, por formação e preguiça, só sabem passar exemplos que envolvem cálculos matemáticos (médias, frequências, aproximações; algo que qualquer pessoa que já tenha programado na vida profissional sabe que não é o dia-a-dia de um programador) e que se baseiam em matemática para funcionar.

Críticas sociais a parte (a sociedade precisa parar de centra-se em STEM, as escolas precisam parar de incentivar a aprendizagem mecanizada e pragmática e as universidades precisam parar de ser máquinas de manutenção de estereótipos classistas e preconceituosos), o que o artigo abaixo fala é exatamente sobre o pioneiro estudo da Universidade de Washington que mostrou uma forte correlação entre aptidão linguística e capacidade de aprender mais rápido a programar em Python (uma das linguagens novas do mercado e que tende a substituir Java como linguagem dominante das empresas) do que numeracia (habilidade com matemática básica e facilidade em aprender matemática/exatas), exatamente o oposto do que nos é ensinado nas universidades e nos cursos de programação mundo afora.**

Universidade de Washington

As habilidades com linguagem figurativa são um preditor mais forte da capacidade de programação do que a numeracia, de acordo com um novo estudo da Universidade de Washington. Deseja aprender a programar? Largue o livro de matemática e pratique suas habilidades de comunicação.

Novas pesquisas da Universidade de Washington descobriram que uma aptidão natural para aprender idiomas é um preditor mais forte em relação à facilidade para aprender a programar do que o conhecimento básico de matemática. Isso porque escrever código também envolve o aprendizado de um segundo idioma, a capacidade de aprender o vocabulário e a gramática desse idioma e como eles trabalham juntos para comunicar idéias e intenções. Outras funções cognitivas ligadas a ambas as áreas, como resolução de problemas e uso da memória de trabalho, também desempenham papéis importantes.

“Muitas barreiras à programação, de cursos de pré-requisito a estereótipos da aparência de um bom programador, estão centradas na ideia de que a programação depende muito de habilidades matemáticas, contudo essa ideia não aparece em nossos dados”, disse o principal autor do estudo, Chantel Prat, professor associado de psicologia na UW e no Institute for Learning & Brain Sciences. “Aprender a programar é difícil, mas é cada vez mais importante para obter posições qualificadas na força de trabalho. Faltam informações críticas sobre o que é preciso para ser bom em programação, ainda mais em um campo que tem sido notoriamente lento em fechar a lacuna de gênero”.

Publicado on-line em 2 de março na Scientific Reports, uma revista de acesso aberto do Nature Publishing Group, a pesquisa examinou as habilidades neurocognitivas de mais de três dúzias de adultos enquanto aprendiam Python, uma linguagem de programação comum. Após uma bateria de testes para avaliar suas funções executivas, habilidades de linguagem e matemática, os participantes concluíram uma série de lições e testes on-line em Python. Aqueles que aprenderam Python mais rapidamente e com maior precisão tenderam a ter uma mistura de fortes habilidades de resolução de problemas e linguagem.

No mundo de hoje, focado em STEM, aprender a programar abre uma variedade de possibilidades de emprego e educação estendida. A programação está associada à matemática e engenharia; os cursos de programação em nível de faculdade tendem a exigir matemática avançada para se matricular e tendem a ser ministrados nos departamentos de ciência da computação e engenharia. Outra pesquisa, a saber da professora de psicologia da UW Sapna Cheryan, mostrou que esses requisitos e percepções para programação reforçam estereótipos sobre a programação como um campo masculino, desencorajando as mulheres de perseguí-lo.

Mas a programação também tem fundamento na linguagem humana: a programação envolve a criação de significado, juntando símbolos de maneira baseada em regras.

Embora alguns estudos tenham abordado os vínculos cognitivos entre o aprendizado de idiomas e a programação de computadores, alguns dados datam de décadas, usando idiomas como o Pascal que estão desatualizadas atualmente, e nenhum deles usou medidas de aptidão da linguagem natural para prever diferenças individuais em aprender a programar.

Então Prat, especialista em preditores neurais e cognitivos do aprendizado de línguas humanas, decidiu explorar as diferenças individuais na maneira como as pessoas aprendem Python. O Python era uma escolha natural, explicou Prat, porque lembra estruturas inglesas como recuo de parágrafos e usa muitas palavras reais em vez de símbolos para funções.

Para avaliar as características neurais e cognitivas da “aptidão em programação”, Prat estudou um grupo de falantes nativos de inglês entre 18 e 35 anos de idade que nunca haviam aprendido a programar.

Este gráfico mostra como as habilidades dos participantes do estudo, como numeracia e aptidão para idiomas contribuem para o aprendizado do Python. De acordo com o gráfico, cognição e aptidão linguística são maiores preditores de aprendizagem do que numeracia. Crédito: Prat et al./ Relatórios científicos Antes de aprender a programar, os participantes fizeram dois tipos de avaliação completamente diferentes. Primeiro, os participantes foram submetidos a um exame eletroencefalográfico de cinco minutos, que registrou a atividade elétrica de seus cérebros enquanto relaxavam com os olhos fechados. Em pesquisas anteriores, Prat mostrou que os padrões de atividade neural enquanto o cérebro está em repouso podem prever até 60% da variabilidade na velocidade com que alguém pode aprender um segundo idioma (nesse caso, francês).

“Em última análise, essas métricas cerebrais em estado de repouso podem ser usadas como medidas livres de cultura de como alguém aprende”, disse Prat.

Em seguida, os participantes fizeram oito testes diferentes: um que cobria especificamente numeracia; um que mede a aptidão para linguagem; e outros que avaliaram atenção, resolução de problemas e memória.

Para aprender Python, os participantes receberam 10 sessões de instruções on-line de 45 minutos, usando a ferramenta educacional Codeacademy. Cada sessão se concentrou em um conceito de programação, como listas ou condições if/then, e então concluiu com um questionário que o usuário precisava passar para avançar para a próxima sessão. Para obter ajuda os usuários podiam acessar um botão de “dica”, um blog informativo de usuários anteriores e um botão de “solução”, nessa ordem.

Em uma tela de espelho compartilhada, um pesquisador acompanhou cada participante e conseguiu calcular sua “taxa de aprendizado” ou a velocidade com que dominavam cada lição, bem como a precisão do questionário e o número de vezes que pediram ajuda.

Após concluir as sessões os participantes fizeram um teste de múltipla escolha com o objetivo de funções (o vocabulário do Python) e a estrutura da codificação (a gramática do Python). Para a tarefa final eles programaram um jogo — pedra, papel e tesouro — considerado um projeto introdutório para um novo codificador Python. Isso ajudou a avaliar sua capacidade de escrever código usando as informações que eles aprenderam.

Por fim, os pesquisadores descobriram que as pontuações do teste de aptidão linguística eram os preditores mais fortes da taxa de aprendizado dos participantes no Python. Pontuações de testes em numeracia e raciocínio fluido também foram associadas à taxa de aprendizado do Python, mas cada um desses fatores explicou menos variação do que a aptidão para a linguagem.

Apresentados de outra maneira, nos resultados da aprendizagem, a aptidão linguística dos participantes, o raciocínio fluido e a memória de trabalho e a atividade cerebral em estado de repouso foram preditores maiores do aprendizado do Python do que o numeracia, o que explicou uma média de 2% das diferenças entre as pessoas. É importante ressaltar que Prat também descobriu que as mesmas características dos dados do cérebro em estado de repouso que explicavam anteriormente com que rapidez alguém aprenderia a falar francês, também explicavam com que rapidez aprenderiam a codificar em Python.

“Este é o primeiro estudo a vincular os preditores neurais e cognitivos da aptidão da linguagem natural a diferenças individuais na aprendizagem de linguagens de programação. Conseguimos explicar mais de 70% da variabilidade na rapidez com que diferentes pessoas aprendem a programar em Python, e apenas uma pequena fração dessa quantidade estava relacionada à numeracia”, afirmou Prat. Pesquisas adicionais podem examinar as conexões entre aptidão linguística e instrução de programação em sala de aula, ou com linguagens mais complexas, como Java, ou com tarefas mais complicadas para demonstrar proficiência em codificação, disse Prat.