Un vieil adage auquel adhèrent beaucoup de programmeurs est le suivant: "Il faut un certain esprit pour apprendre à programmer, et tout le monde ne peut le faire."
Maintenant, je suis sûr que nous avons tous notre propre trésor de preuves anecdotiques, mais cela at-il été étudié scientifiquement?
case-studies
Système en panne
la source
la source
Réponses:
Une autre étude, Enquête sur la viabilité des modèles mentaux détenus par les programmeurs débutants :
Voir également les recherches ultérieures des mêmes auteurs de l’étude Sheep vs Goats (qui n’a jamais été publiée, pour être clair). Leur dernière et dernière étude sur ce sujet de 2009 est la méta-analyse de l’effet de la cohérence sur le succès dans l’apprentissage précoce de la programmation (pdf).
la source
Oui, il existe un très célèbre journal en ligne conçu pour déterminer plus ou moins "Qui est fait pour être programmeur".
Une étude cognitive de l'apprentissage précoce de la programmation - Pr Richard Bornat, Dr Ray Adams
Voici un article de blog de Jeff Atwood qui interprète les résultats et met certaines choses en contexte.
la source
Tout le monde peut être programmeur. Pensez à la facilité avec laquelle les gens saisissent les feuilles de calcul. Réfléchissez à la facilité avec laquelle Alan Kay initie les enfants à la programmation par des expériences et des explorations dans un environnement programmable.
Les gens peuvent étudier le succès dans des cours de niveau universitaire et en conclure que "certaines personnes ne sont pas aptes à apprendre la programmation". Cependant, une telle conclusion dépasse gravement les limites de la preuve observée. Combien d'échec pourrait plutôt être attribué à la manière dont la programmation est enseignée (trop abstraite?), Au style de programmation enseigné (trop impératif?) Ou à l'environnement de programmation (compilation, pas de retour immédiat?).
Il est bien entendu que les gens comprennent très bien les abstractions après avoir déjà travaillé avec plusieurs exemples concrets - c’est-à-dire que nous ne pouvons pas apprendre quelque chose avant de le savoir presque déjà. Commencer par l’abstrait est donc une façon totalement idiote d’enseigner la programmation. Beaucoup de gens qui trébuchent sur des "modèles mentaux" prémédits se développeraient bien s’ils apprenaient dans un environnement plus concret avec des retours en temps réel (comme par exemple à la Kahn Academy for CS ), puis les encourageaient à gravir les échelons de l’abstraction quand ils seraient prêts. Learnable Programming est un essai récent de Bret Victor attire l'attention sur les défis environnementaux inutiles auxquels les programmeurs sont confrontés lorsqu'ils apprennent.
Dans certains cas, ce sont les étudiants qui échouent dans leurs cours. La paresse intellectuelle et l'ignorance volontaire existeront dans tout grand groupe d'humains. Les gens intelligents ne font pas exception à la règle, comme peuvent en témoigner tous ceux qui se sont disputés avec une manivelle brillante. Mais, surtout pour la programmation et les mathématiques, ce sont souvent les cours qui échouent aux élèves.
la source
x = 1; y = x;
et la question est " Quelles sont les valeurs dex
ety
? "Is it true that not everyone can learn how to program?
phrase de la question, nos membres les plus expérimentés l'ont ignorée, réalisant qu'elle ne correspondait pas à nos directives et concentrant leurs réponses sur les aspects recherche / scientifiques de la question. Pourriez-vous s'il vous plaît faire la même chose?C'est peut-être anecdotique, mais quand j'ai enseigné la programmation d'introduction à quelques centaines d'étudiants en arts libéraux, je n'ai trouvé aucune telle "double bosse". Il me semblait qu'ils étaient tous très capables, même si certains travaillaient plus fort que d'autres, et très peu essayaient de bluffer.
Cela dépend en grande partie de la façon dont cela est enseigné.
Le désir tient également à beaucoup de choses - certains ne trouvent pas la programmation intéressante. Mais même ainsi, ils peuvent l'apprendre s'ils font un effort honnête.
la source
À mes débuts, il était courant de passer un "test d'aptitude" avant d'obtenir un emploi en programmation. Il n'y avait pas beaucoup de diplômés en informatique, il était donc courant de recruter dans d'autres disciplines.
Les tests étaient similaires à ce que vous voyez sur les tests de QI (quel est le numéro suivant dans la séquence, etc.).
La preuve anecdotique est que, même si tous les testeurs qui ont réussi le test ne sont pas devenus de bons programmeurs, ceux qui ont échoué au test mais qui ont été embauchés pour d'autres raisons ne sont jamais devenus de bons programmeurs.
Malheureusement, les drones HR n’ont pas compris ces tests (et ont échoué lorsqu’ils les ont pris!), Le recrutement dépend donc de ce que les drones HR comprennent: une bonne université, la communication et le port de vêtements.
C'est à peu près la raison pour laquelle les grands départements informatiques ont beaucoup de personnes qui sont excellentes lors de présentations PowerPoint et très peu de bons programmeurs.
la source
Pour ceux citant l'étude de Double-Bosse ou de Chèvres contre moutons de Dehnadi et Bornat, il est intéressant de consulter les modèles mentaux et Aptitude de programmation de Caspersen et al (2007) dans lesquels ils tentent de la reproduire:
la source
On peut faire des études sur les capacités d’abstraction ou d’autres connaissances utiles, mais la définition de la programmation n’est pas claire, et je pense que la citation n’est pas pertinente, car il existe des manières opposées de regarder la programmation:
Le premier type: les langages de programmation sont (ou devraient être) un genre de langage humain conçu pour décrire une tâche que l’ordinateur doit exécuter, de sorte que tous ceux qui parlent doivent pouvoir programmer. Cela s’appelle Scripting, BASIC, le système de composition TeX , etc ... La langue ou le système importe peu, c’est la façon dont leurs créateurs et leurs lecteurs ont interprété le tout: "Cher programme / ordinateur, veuillez écrire mon nom" , plutôt que "Donnez-moi un espace de la taille de onze caractères, puis donnez-moi l'adresse de cet espace, puis laissez-moi le stocker, puis entrez onze caractères dans cette mémoire que vous pouvez extraire de la mémoire tampon de votre clavier (mais n'oubliez pas de la nettoyer , etc."
Dans ce cas, il est clair que l’étude serait plutôt "Toutes les langues ne peuvent pas être assimilées rapidement?".
D'autre part, les langages de programmation ne sont qu'un moyen de décrire le fonctionnement d'un ordinateur ou comment il devrait fonctionner, comment il devrait être connecté si vous pensez aux ordinateurs des années 1950. Par conséquent, le programmeur ne peut rien faire, même s'il "parle" parfaitement le langage de programmation, si son intelligence ne peut pas atteindre ce niveau d'abstraction où vous voyez des octets stockés dans la mémoire, des chaînes comme des pointeurs, etc. retournez sur terre pour le relier au problème. Tous les humains ne peuvent donc pas programmer (en langage assembleur ...).
En dehors de cela, vous aurez besoin de toutes les qualités requises pour travailler et produire quelque chose: sachez très bien ce que vous voulez, facilitez la compréhension / complément / révision des autres, concentrez-vous sur vos objectifs, etc. un écrivain, un musicien, une prostituée ... prothésiste, etc.
Mais la plupart des humains ont de bonnes capacités d'abstraction, en particulier les enfants. Certaines écoles allemandes enseignent Haskell à des adolescents (des langages de programmation tels que Pascal ou Delphi sont enseignés dans toutes les écoles allemandes).
Donc, je dirais que la question est très difficile à répondre, et toute réponse (ou étude) est susceptible d'être sans pertinence.
Vous trouverez une très brève analyse de la façon dont les gens apprennent la programmation dans l'article Enseignez-vous à la programmation dans dix ans de Peter Norvig. Il semble penser qu'il n'y a pas de programmeur né.
la source
Il y a de nombreuses années, j'ai suivi plusieurs cours incluant la théorie du leadership militaire. Une partie de la théorie était qu’il existait un continuum de leadership, allant de ceux qui étaient des leaders naturels à ceux qui ne pouvaient pas conduire un chien en laisse. L'idée était que les gens étaient répartis sur ce continuum de leadership dans une courbe en cloche, la plupart des gens se situant quelque part entre les deux extrêmes. Mis à part les rares personnes qui se trouvaient à l'extrême "ne pouvait pas diriger un chien", presque tout le monde pouvait apprendre l'art du leadership. La quantité d'effort requise pour transformer quelqu'un en chef dépendait de son rang dans le continuum.
Je soupçonne que la programmation a un continuum similaire et une distribution similaire. Il y aura ceux qui l'obtiendront simplement sans effort, et ceux qui ne pourraient jamais l'obtenir si leur vie en dépendait. Mais ce sont les rares à la fin de la courbe en cloche. La plupart des gens sont assis entre ces extrêmes dans le continuum. Ils peuvent apprendre à programmer, mais l'effort requis pour les enseigner dépendra de l'endroit où ils se trouvent.
la source
Je ne suis pas sûr que ce soit juste de la programmation. J'ai vu le même genre de phénomène avec des gens apprenant simplement à utiliser des ordinateurs. À l'université, j'étais assistant de laboratoire dans un laboratoire qui hébergeait une classe d'initiation à l'informatique destinée aux personnes âgées.
En deux semaines, je pouvais identifier ceux qui l'obtiendraient et ceux qui ne le feraient pas avec une précision de 100%. Vous avez soit accepté le fonctionnement de l'ordinateur, soit vous vous êtes heurté contre toute la classe. Il n'y avait pas de terrain d'entente. (Le fait qu'il s'agisse d'une classe d'aînés signifiait que nous avions beaucoup de frappeurs à la tête, ce qui rendait le modèle beaucoup plus évident.)
la source