Um velho ditado que muitos programadores seguem é "É preciso um certo tipo de mente para aprender programação, e nem todo mundo pode fazer isso".
Agora, tenho certeza de que todos temos nosso próprio tesouro de evidência anedótica, mas isso foi estudado cientificamente?
case-studies
Sistema caiu
fonte
fonte
Respostas:
Outro estudo, Investigando a viabilidade de modelos mentais mantidos por programadores iniciantes :
Além disso, veja pesquisas posteriores dos mesmos autores do estudo Sheep vs Goats (que nunca foi realmente publicado, para ficar claro). Seu último e mais recente estudo sobre esse tópico, em 2009, é a meta-análise do efeito da consistência sobre o sucesso na aprendizagem precoce de programação (pdf).
fonte
Sim, existe um artigo on-line bastante famoso, criado para determinar mais ou menos "quem é que foi programado".
Um estudo cognitivo da aprendizagem precoce da programação - Prof Richard Bornat, Dr. Ray Adams
Aqui está um post de Jeff Atwood que interpreta os resultados e coloca algumas coisas em contexto.
fonte
Qualquer um pode ser um programador. Considere com que facilidade as pessoas compreendem planilhas. Considere com que facilidade Alan Kay introduz as crianças na programação por meio de experimentos e explorações em um ambiente programável.
As pessoas podem estudar o sucesso em cursos de nível superior e concluir que "algumas pessoas não estão aptas a aprender programação". No entanto, essa conclusão ultrapassa severamente os limites das evidências observadas. Quanta falha poderia ser atribuída à maneira como a programação é ensinada (muito abstrata?), Ou a qual estilo de programação é ensinado (imperativa demais?), Ou ao ambiente de programação (compilação, sem feedback imediato?).
É bem entendido que as pessoas compreendem abstrações com maior facilidade depois de já trabalharem com várias instâncias concretas - ou seja, que não podemos aprender algo até que quase já o conheçamos. A partir do resumo, portanto, é uma maneira totalmente tola de ensinar programação. Muitas pessoas que tropeçam em "modelos mentais" pré-concebidos prosperariam se fossem ensinadas em um ambiente mais concreto com feedback em tempo real (por exemplo, como na Kahn Academy for CS ), então encorajadas a subir a escada da abstração quando estiverem prontas para isso. Learnable Programming é um ensaio recente de Bret Victor que chama a atenção para desafios ambientais desnecessários que os programadores enfrentam na aprendizagem.
Em alguns casos, são os alunos que reprovam nas aulas. Preguiça intelectual e ignorância voluntária existirão em qualquer grande grupo de humanos. Pessoas inteligentes não são excepção, como qualquer pessoa que tenha discutido com uma manivela brilhante pode atestar. Mas, especialmente para programação e matemática, geralmente são as turmas que estão reprovando nos alunos.
fonte
x = 1; y = x;
e a pergunta é " Quais são os valores dex
ey
? "Is it true that not everyone can learn how to program?
linha da pergunta, nossos membros mais experientes a ignoraram, percebendo que ela não se encaixava em nossas diretrizes e concentrei suas respostas nos aspectos científicos / de pesquisa da pergunta. Você poderia fazer o mesmo?Talvez isso seja anedótico, mas quando eu ensinei programação de introdução a algumas centenas de estudantes de artes liberais, não encontrei essa "dupla corcunda". Pareceu-me que todos eram bastante capazes, embora alguns trabalhassem mais do que outros, e muito poucos tentassem abrir caminho.
Muito tem a ver com a forma como é ensinado.
Muito também tem a ver com o desejo - alguns não acham a programação nem um pouco interessante. Mas, mesmo assim, eles podem aprender se fizerem um esforço honesto.
fonte
Quando eu comecei, era comum fazer um "teste de aptidão" antes de conseguir um trabalho de programação. Como não havia tantos graduados em ciência da computação, era comum recrutar outras disciplinas.
Os testes foram semelhantes ao que você vê nos testes de QI (qual é o próximo número na sequência etc.).
A evidência anedótica era que, embora nem todos os que passaram no teste se tornaram um bom programador, ninguém que falhou no teste, mas foi contratado por outros motivos, se tornou um bom programador.
Infelizmente, os drones de RH não entenderam esses testes (e falharam quando os fizeram!); Portanto, o recrutamento hoje em dia depende de coisas que os drones de RH entendem - boa faculdade, comunicação e habilidades de uso.
Esse é o motivo pelo qual grandes departamentos de TI têm muitas pessoas ótimas nos shows do PowerPoint e muito poucos bons programadores.
fonte
Para aqueles que citam o estudo de corcova dupla de Dehnadi e Bornat ou cabras versus ovelhas, vale a pena conferir Modelos mentais e aptidão para programação de Caspersen et al (2007), nos quais tentam replicá-lo:
fonte
Pode-se fazer estudos sobre as capacidades de abstração ou outro conhecimento útil, mas a definição de programação não é clara, e acho que a citação é irrelevante, porque existem maneiras opostas de analisar a programação:
O primeiro tipo: as linguagens de programação são (ou deveriam ser) algum tipo de linguagem humana criada para descrever uma tarefa a ser executada pelo computador; portanto, todo mundo que fala deve poder programar. Chama-se script, BASIC, o sistema tipográfico TeX , etc ... A linguagem ou o sistema não importa, é a maneira como seus criadores e pessoas o encaravam: "Caro programa / computador, imprima meu nome" , em vez de "Consiga um espaço do tamanho de onze caracteres, depois me dê o endereço desse espaço, deixe-me armazená-lo e digite onze caracteres nessa memória que você pode retirar do buffer do teclado (mas não esqueça de limpá-lo etc. "
Nesse caso, fica claro que o estudo preferiria "Nem toda língua pode ser assimilada rapidamente?".
Por outro lado, as linguagens de programação são apenas uma maneira de descrever como um computador funciona ou como deve funcionar, como deve ser 'conectado' se você pensar nos computadores dos anos 50. Portanto, o programador não pode fazer nada, mesmo que ele 'fale' a linguagem de programação perfeitamente, se sua inteligência não puder atingir esse nível de abstração em que você vê bytes armazenados na memória, seqüências de caracteres como ponteiros etc. volte ao mundo para ligá-lo ao problema. Portanto, nem todo ser humano pode programar (em linguagem assembly ...).
Além disso, você precisará de todas as qualidades necessárias para trabalhar e produzir algo: saiba muito bem o que deseja, facilite a compreensão / conclusão / revisão por outros, concentre-se em seus objetivos, etc. um escritor, um músico, uma prostituta.
Mas a maioria dos humanos tem boas capacidades de abstração, especialmente crianças. Algumas escolas alemãs estão ensinando Haskell para pré-adolescentes (linguagens de programação como Pascal ou Delphi estão sendo ensinadas em todas as escolas alemãs).
Então, eu diria que a pergunta é muito difícil de responder, e qualquer resposta (ou estudo) provavelmente é irrelevante.
Você encontrará uma análise muito breve de como as pessoas aprendem programação no artigo Ensine-se a programar em dez anos, de Peter Norvig. Ele parece pensar que não há programador nato.
fonte
Muitos anos atrás, fiz vários cursos que incluíam a teoria da liderança militar. Parte da teoria era a de que existe um continuum de liderança, desde os líderes naturais até os que não podiam levar um cão na coleira. A idéia era que as pessoas fossem distribuídas nesse continuum de liderança em uma curva em sino, com a maioria das pessoas em algum lugar entre os dois extremos. Além dos poucos no extremo "não podia levar um cachorro", quase todo mundo podia aprender a arte da liderança. A quantidade de esforço necessária para transformar alguém em líder dependia de onde eles estavam no continuum.
Suspeito que a programação tenha um continuum semelhante e uma distribuição semelhante. Haverá aqueles que conseguirão sem esforço, e aqueles que nunca conseguiriam se suas vidas dependessem disso. Mas eles são os poucos na cauda da curva do sino. A maioria das pessoas se senta entre esses extremos no continuum. Eles podem aprender a programar, mas o esforço necessário para ensiná-los dependerá do local em que estão sentados.
fonte
Não tenho certeza se é apenas programação. Vi o mesmo tipo de fenômeno com as pessoas simplesmente aprendendo a usar computadores. De volta à faculdade, eu era assistente de laboratório em um laboratório que hospedava um conhecimento em informática para a classe dos idosos.
Dentro de duas semanas, eu conseguia identificar quem iria receber e quem não teria, basicamente, com 100% de precisão. Você aceitou que é assim que o computador funciona ou bateu a cabeça contra ele por toda a classe. Não havia meio termo. (O fato de ser uma aula para idosos significava que tínhamos muitos batedores de cabeça, o que tornava o padrão muito mais óbvio.)
fonte