Comment la programmation est-elle affectée par l'aptitude spatiale? [fermé]

19

Contexte

Plus je travaille sur un projet, moins il devient clair. C'est comme si je ne pouvais plus séparer différentes classes / objets dans ma tête. Tout commence à se mélanger, et il est extrêmement difficile de tout démonter à nouveau. Je commence à mettre des fonctions dans des classes où elles n'appartiennent vraiment pas, et je fais des erreurs stupides telles que l'écriture de code que je trouve plus tard 100% obsolète; les choses ne sont plus clairement mappables dans ma tête. Ce n'est que lorsque je prends du recul pendant plusieurs heures (ou parfois des jours!) Que je peux réellement voir ce qui se passe à nouveau et être productif.

J'essaie généralement de lutter contre cela, je suis tellement passionné par le codage que je ne saurais pas pour la vie de moi-même ce que je pourrais faire d'autre. C'est à ce moment-là que les choses peuvent devenir vraiment étranges, je me mets tellement dans la tête que je sorte de perdre le contact avec la réalité (dans une certaine mesure) dans la mesure où diverses actions, telles que verser un verre d'eau, ne se produisent plus à un niveau concis. Cela se produit sur le pilote automatique, au cours duquel presque toute ma concentration consciente (est-ce même une chose?) Est consacrée à la résolution de problèmes inutile et limite (essayant de séparer les éléments de code). Cela ressemble à une bataille perdue.

J'ai donc passé un test de QI il y a quelque temps (Wechsler Adult Intelligence Scale, je crois que c'était le cas) et il s'est avéré que mon aptitude spatiale était assez faible. J'ai toujours obtenu un score total décent , juste au-dessus de la moyenne, donc je n'aurai pas à piquer des choses avec un bâton pour gagner ma vie, mais je suis un peu inquiet que ce soit un tel handicap lors de l'écriture / ingénierie de programmes informatiques que j'ai gagné '' t jamais être en mesure de le faire sérieusement ou professionnellement.

Question

Je suis très intéressé par ce que les autres en pensent ...

Une faible aptitude spatiale pourrait-elle être la cause des problèmes décrits ci-dessus?

Comment la programmation est-elle affectée par l'aptitude spatiale?

Peut-être que je devrais regarder plus dans le sens de l'ADD ou quelque chose de similaire, parce que j'ai été diagnostiqué avec l'ADD à l'âge de 17 ans (il y a 5 ans) mais le médicament que j'ai reçu ne semblait pas m'affecter autant que je n'ai jamais pris tout cela si grave.

Pour autant que je sache, les gens sont nés avec une aptitude spatiale faible / moyenne / élevée, donc je pense qu'il est intéressant de savoir si les plus chanceux sont de meilleurs programmeurs de naissance.

natli
la source
5
it turned out my Spatial Aptitude was quite low. I still got a decent score, just above average,Je ne suis pas psychologue, mais si je lis l' anglais correctement et comprendre la définition d'une moyenne, je ne vois vraiment pas comment obtenir cela se traduit quite low... Peut - être que vous overthinking ça ... :)
haylem
1
Ah, aussi, les tests de QI sont de la merde, pour résumer carrément les recherches à leur sujet. Vivez-vous aux États-Unis? (Je demande juste parce qu'il semble y avoir une utilisation plus élevée des tests de QI - et une peur largement surestimée de l'ADD - aux États-Unis que partout ailleurs)
haylem
1
@psr: Je ne serais pas vraiment surpris. Cela peut ne pas sembler avoir beaucoup à voir avec cela, mais les personnes ayant des problèmes avec les représentations spatiales et le mal des transports chronique ont généralement un peu plus de mal à gérer beaucoup de choses. Je ne pense pas que ce soit un peu différenciateur (mais je ne suis pas un psychologue ou un neurologue), et que vos compétences et votre passion en matière de programmation soient ce qui vous distinguera du reste du peloton.
haylem
2
@haylem Je ne sais pas en général, mais la plupart des tests de QI en ligne seront classés sur plusieurs axes. Aptitude spatiale, compétence logique, etc., etc. Je pense que ce que natli dit, c'est que la moyenne de tous était juste au-dessus de la moyenne, mais le score d'aptitude spatiale était assez bas.
Izkata
1
Je languis un emploi où je flanquer un coup de poing des choses avec un bâton.
Dan Ray

Réponses:

27

Il existe en fait des données de recherche dures à ce sujet, principalement collectées au cours des 35 dernières années, et j'ai également connu quelques phénomènes similaires, mais pas de manière régulière. Voir ci-dessous pour en savoir plus.

Données de recherche

Il semble y avoir une corrélation, mais mineure, basée sur les recherches effectuées et résumées dans les travaux suivants. Comme souvent avec la recherche cependant, les modèles d'étude diffèrent entre les études et ils devraient être examinés attentivement pour comprendre pourquoi les résultats présentent des différences dans les conclusions.

Prenez-le avec une pincée de sel: certains sont relativement datés, les tests de QI peuvent avoir changé depuis. Je n'ai pas fait de recherche approfondie pour trouver des citations de chaque article pour voir si elles ont été confirmées ou démystifiées plus tard.

Certains liens (en particulier le type [PDF]) peuvent ne pas fonctionner pour vous si vous n'avez pas d'affiliation à une bibliothèque donnant accès à ces contenus en ligne.


Opinion personnelle

Avertissement et divulgation: Je ne suis ni psychologue NI neurologue, mais j'ai étudié et enseigné la programmation à la fois aux jeunes enfants (à partir de 6 ans) et aux étudiants universitaires (jusqu'à 60 ans!).

Ayant moi-même étudié avec AND comme professeur d'université, y compris certains étudiants affectés par des problèmes spatiaux (et d'autres avec des handicaps plus forts), je dois dire que même si cela aurait pu être (je n'ai pas suivi mes étudiants en fonction du handicap, évidemment) que certains se seraient inscrits dans une partie inférieure de la courbe générale, je me souviens encore clairement de certains scores élevés (et même un en particulier étant le major de la classe depuis au moins 2 ans).

Mon point est que, bien qu'il puisse avoir un effet, et comme le montrent certaines recherches ci-dessus, il ne représente pas la plus grande partie de votre capacité à apprendre à programmer et à penser comme un programmeur. C'est sans conséquence, car cela ne vous empêchera pas d'apprendre si vous le voulez vraiment et ne vous empêchera pas de travailler dans le cas général, bien que cela puisse (comme cela pourrait être votre cas) le rendre légèrement plus difficile pour vous.

Il n'y a pratiquement aucune limite à quoi et à quelle vitesse vous pouvez apprendre .

Après tout, aucun programmeur n'aime un bon défi, non? (Je te regarde, RSI)


Expérience personnelle (éventuellement indépendante)

Il se peut que vous soyez trop passionné. Combien d'heures travaillez-vous par jour et par semaine? Prenez-vous des pauses régulières?

Un cas similaire?

À une période de ma vie, j'ai travaillé des jours d'au moins 14 heures tous les jours de la semaine, toute l'année, au point où cela a culminé à enregistrer des semaines de 120 heures de travail devant un écran d'ordinateur . Oui, il ne reste que 48 heures par semaine pour manger, dormir, se rendre au travail et en revenir ( astuce: éviter de conduire !! ), prendre une douche et d'autres fonctions vitales. À ce stade particulier, je pouvais à peu près m'endormir en un battement de cœur (même si j'avais généralement des problèmes de sommeil), maisJe rêvais presque toujours de code, et je réalisais aussi soudainement sous la douche ou même en marchant, en courant ou en faisant des tâches subalternes que mon esprit y retournait en pilote automatique, comme vous l'avez dit vous-même. Malheureusement, je ne résoudrais pas comme par magie les problèmes de mon sommeil; ce serait plus proche de ce que vous semblez décrire et vivre: un tourbillon géant de pensées confuses se retournant dans ma tête, qui aurait en quelque sorte (semble) un sens à plus grande échelle, mais n'exprimerait clairement aucune solution et sans grand succès en saisissant l'une de ces pensées pour se concentrer sur elle, la disséquer clairement et la transformer en quelque chose d'utile. Et c'était généralement assez fatigant et pénible.

La relaxation pourrait aider

Peut-être avez-vous besoin de vous calmer un peu, de vous détendre et de travailler moins. Essayez de trouver quelque chose qui vous dérange. À l'époque, je finissais souvent par renoncer à de précieuses heures de sommeil pour plutôt faire quelque chose qui arrêterait vraiment ce train de pensées folles. Cela semble contre-productif, mais j'ai préféré faire quelques trucs où je me détendrais vraiment plutôt que de dormir plus et de ne pas me reposer. La distraction pour les batteries nerveuses, et le sommeil pour les batteries physiques, dans un sens.

Identification des déclencheurs

Si ce n'est pas votre cas, alors peut-être que quelque chose d'autre est impliqué dans le déclenchement de cet état pour vous. Essayez d'isoler les éléments qui sont présents dans ces situations et voyez si vous pouvez reproduire cette condition dans d'autres environnements, pour voir si vous trouvez également ces éléments. Cela se produit-il davantage au travail ou à la maison, etc ...

Isolement

De plus, vous avez peut-être déjà entendu et essayé cela, mais j'ai un ami avec un handicap spatial mineur, et généralement cela aide pour lui, si vous travaillez sur des ordinateurs, d'être dans une pièce plus sombre, pour éviter d'avoir trop de vues et de fenêtres complexes ouvert (pour éviter les distractions), et en général pour garder les choses plutôt minimalistes (à la fois en termes de design et de couleurs, et en termes de contenu et de représentation).

Essayez également de faire des pauses régulières et de laisser votre esprit libre pendant de courtes périodes toutes les 1 ou 2 heures, en fonction de ce qui vous convient le mieux. Peut-être adopter la technique de Pomodoro ou quelque chose de similaire (je n'ai pas de recherche sur une corrélation avec cela, mais cela pourrait être utile pour vous forcer à faire des pauses).

haylem
la source
Une question très intéressante, une fois que vous commencez à creuser, et au début je n'avais pas repensé à ma propre expérience. J'espère que cela aide. Pour plus d'articles de recherche, une recherche rapide sur Google Scholar pour la «programmation d'aptitude spatiale» donne une tonne de résultats supplémentaires. L'utilisation de leur outil de citation pourrait aider à identifier les œuvres les plus citées.
haylem
1
Merci d'avoir mis tant d'efforts dans votre réponse, de très bonnes informations là-dedans. J'écris définitivement du code environ 10 heures par jour, parfois plus. La relaxation peut être la clé ici, mais ça va être difficile à réaliser. Comme vous l'avez dit, je suis probablement trop passionné par mes propres projets; Je ne veux pas faire autre chose. Donc, alors que je fais peut-être physiquement autre chose que de la programmation, mon esprit va toujours y aller ... Je ne pense pas qu'il soit possible d'empêcher votre esprit de faire ce qu'il veut.
natli
@natli: c'est un peu la même approche que d'abandonner une habitude de prise. Si vous voulez arrêter de fumer, vous devez remplacer la cigarette par quelque chose. Un passe-temps particulier que vous appréciez vraiment, à part la programmation? Ensuite, utilisez ça. Pour certaines personnes, des activités intenses pourraient faire (prendre du squash, par exemple ...), tandis que pour d'autres c'est le contraire: elles ont besoin de quelque chose d'extrêmement passif. Vous pourriez peut-être essayer la méditation. Apprendre à vider votre esprit est une compétence importante à apprendre. Cela m'a beaucoup aidé avec mes problèmes de sommeil, par exemple.
haylem
@natli: Je n'ai pas fait attention à "l'effort". J'ai trouvé que c'était une question intéressante et la plupart des articles étaient de bonnes lectures. Ce type de recherche peut parfois, aussi souvent lorsque l'on essaie d'identifier des facteurs psychologiques et neurologiques, être un peu vague car il est difficile de spécifier un bon modèle d'étude. C'est aussi potentiellement effrayant lorsque la recherche tend à «fermer les portes» aux gens. Ce n'est évidemment pas l'intention: vous n'orientez pas la recherche; mais cela pourrait néanmoins être le résultat. J'ai quand même été ravi de découvrir qu'il s'agit d'un domaine de recherche actif . Merci pour cela et heureux que cela ait aidé.
haylem
+1 pour la technique Pomodoro. Je l'ai utilisé pour étudier pour mes examens quand j'étais encore à l'université. Cela doit avoir fonctionné, car j'ai passé tout <- toute la phrase est basée sur une science douteuse, à ne pas prendre au sérieux.
Jamie Taylor
4

Ech ... cela mérite plus qu'un commentaire.

"J'essaie généralement de me battre"

Cesser les combats. Vous obtenez des choses tordues et faites des erreurs non? Vous avez peut-être des problèmes uniques, mais la façon dont votre cerveau se rebelle est normale pour quiconque a passé trop de temps à se concentrer sur un problème. Quand j'étais plus jeune, je passais beaucoup trop de ma journée à penser à ce niveau très conscient et je ne me rendais pas service. Votre problème n'est pas que vous n'essayez pas assez fort, c'est que vous ne savez pas quand arrêter.

J'ai finalement appris à apprécier la valeur de mettre les choses en veilleuse quand j'ai compris que la seule façon de s'endormir à une heure raisonnable était de vouloir ne penser à absolument rien et j'ai été choqué de découvrir qu'en moins de 10 minutes Je m'endormais alors que normalement je pensais-pensais-pensais pendant au moins quelques heures avant de tomber d'un épuisement mental.

À partir de là, j'ai trouvé plus facile d'apprendre à reconnaître quand je mettais beaucoup trop de réflexion consciente dans un problème et de le laisser partir un moment. J'ai été surpris de découvrir combien cela contribue réellement à vous aider à résoudre un problème.

Je recommande ce qui suit:

  • Lorsque quelque chose se tord dans la tête et que vous n'avez pas le luxe de pouvoir faire une pause et faire une promenade ou quelque chose, essayez de changer de vitesse et de vous concentrer sur un élément très différent du problème pendant un certain temps.

  • Ne sautez jamais le déjeuner et quittez toujours le bureau. Donnez-vous jusqu'à ce que vous arriviez à la porte pour arriver à un point d'arrêt ou laissez-le simplement tomber. Tout ce qui mérite d'être gardé dans votre tête sera là lorsque vous y reviendrez et tout ce dont vous n'aviez pas besoin aura disparu. Plus vous découvrez cela, plus c'est facile.

  • Régulièrement, vous ne penserez à rien pendant la journée. Même si ce n'est que pour une minute, vous obtenez ce verre d'eau.

  • Essayez de tirer parti de la POO ou de toute autre approche architecturale centrée sur le domaine du problème pour penser à moins. Quels sont les acteurs de votre code au plus haut niveau? Ils ne devraient pas avoir de relations complexes entre eux. Cela vous permet de vous concentrer davantage sur une partie du problème à la fois.

Quelques principes de codage qui pourraient aider

  • DRY est une pratique de codage générale car "Voler mal" peut être appliqué à presque toutes les éthiques / morales. Il existe de très rares exceptions. Gardez-les très rares.

  • Si vous avez l'habitude de trop résoudre les problèmes que vous pourriez rencontrer à l'avenir, supprimez-le. Rien n'est plus évolutif ou "évolutif" que du code qui n'est pas plus complexe qu'il ne devrait l'être. "Entreprise" est un mensonge.

  • Les modèles complexes promettent souvent de longues listes de récompenses. Il n'y a que 3 choses qui devraient compter la plupart du temps. C'est facile à lire. Il est facile à réutiliser. C'est facile à modifier. Pensez en termes d'utilisation minimale de la force qu'un artiste martial pourrait et appliquez ce principe à la complexité. L'idéal est de résoudre exactement le problème.

  • Écrivez d'abord votre interface. Et non, je ne veux pas dire les constructions C # / Java qui ne devraient être utilisées qu'en cas de besoin, je veux dire l'API de vos objets. Que doit faire la classe / l'objet? Écrivez ces méthodes vides et donnez-leur des noms d'arguments. Ne remplissez pas les blancs avant d'avoir terminé. Il est normal de faire des ajustements plus tard, mais une fois que vous avez établi ce qu'il doit être en mesure de faire, vous pouvez vous concentrer sur la façon dont chaque chose, une à la fois, doit être effectuée. La raison pour laquelle vous pouvez vous retrouver à tenir autant dans votre tête que vous le faites souvent est peut-être parce que la mise en œuvre se produit pour des problèmes qui auraient dû être résolus bien avant d'arriver à une étape donnée d'un processus. Vous en avez beaucoup et a des méthodes? C'est ce dont je parle.

Diagnostic?

Je pense que le problème de conscience spatiale a été bien couvert. Quoi que vous décidiez sur ce front, je reverrais la chose ADD, surtout si vous étiez réticent à ce sujet la première fois. Cela ressemble certainement beaucoup à une hyper-concentration extrême. En fin de compte, laissez cet amour du codage vous conduire à trouver des moyens d'atténuer ces problèmes et je pense que votre carrière se déroulera très bien.

Erik Reppen
la source
3

Pendant combien d'heures travaillez-vous avant de commencer à voir ce flou? Beaucoup de programmeurs moyens à bons que je connais du travail 4, peuvent être 5 heures avant de prendre un café ou un déjeuner ou quelque chose. Le plus long de ces sprints que j'ai lus, c'est quand Guy L Steele et Richard M Stallman ont fait un sprint d'une dizaine d'heures en écrivant Emacs. Steele poursuit en disant qu'il ne voudrait plus refaire un si long sprint.

Si vous êtes relativement nouveau (moins de, disons, 5000 heures (ce chiffre provient du post de Peter Norvig sur l'apprentissage de la programmation en dix ans, en divisant par deux les 10000 heures qu'il recommande de devenir un programmeur expert)), cela semble très normal sauf pour la partie où vous dites que vous avez besoin de jours de pause. Peut-être que vous vous épuisez pour vous faire besoin d'une si longue pause?

vpit3833
la source
Je ne pense pas avoir plus de 2000 heures d'expérience, même si ce n'est pas vraiment comme si j'ai gardé une trace. De plus, avoir besoin de quelques jours de lecture (deux; deux) de récupération est assez rare. Les premiers jours, je n'ai besoin que d'une bonne nuit de sommeil pour résoudre les problèmes le lendemain, mais je travaille probablement trop longtemps, essayant de lutter contre la confusion. Si je continue comme ça assez longtemps, je finis certainement par avoir besoin de prendre quelques jours de congé pour coder pour pouvoir regarder mon code avec des yeux neufs et voir instantanément les erreurs stupides que je faisais. Les choses qui ont pris des heures à faire ne prennent littéralement que 15 minutes après la pause.
natli
1

D'après ce que vous décrivez, votre problème peut avoir différentes causes:

  • Inexpérience

  • Perte de concentration / fatigue

  • Faible capacité spatiale

L'inexpérience peut être résolue en ... eh bien, en acquérant plus d'expérience, en gros. Aussi évident que cela puisse paraître, en pratiquant plus, vous vous retrouverez plus souvent dans des situations de programmation complexes et apprendrez progressivement à les gérer. À l'heure actuelle, vous n'avez peut-être pas les schémas mentaux et les réflexes pour établir les bonnes connexions, tirer les bonnes conclusions et déverrouiller ces situations, ce qui peut vous donner l'impression d'être lent et d'écrire du "code obsolète", mais ces schémas de résolution de problèmes seront progressivement avoir lieu dans votre tête au fur et à mesure que vous devenez plus expérimenté (vous n'avez que 22 ans si je comprends bien, ce qui est encore très jeune).

Il existe différentes techniques pour améliorer votre concentration. Pomodoro et Getting Things Done en sont deux exemples. Dans le domaine de la programmation, le développement piloté par les tests est également quelque chose que je recommanderais vraiment car il vous oblige à vous concentrer sur un petit objectif réalisable à la fois (étapes bébé). Avec une approche TDD, vous êtes beaucoup moins susceptible de «mettre des fonctions dans des classes où elles n'appartiennent vraiment pas», car vous êtes obligé de définir clairement la responsabilité de votre classe avec un test, puis de vous concentrer uniquement sur sa mise en œuvre lorsque vous codez , au lieu de sauter entre plusieurs classes et de les remplir aléatoirement petit à petit.

La fatigue et les chutes d'attention peuvent être évitées en adoptant un rythme durable avec des pauses fréquentes. Vous pourriez être intéressé par cette présentation de Linda Rising sur le fait d'être plus productif en respectant notre cerveau: Born to Cycle .

En ce qui concerne les faibles capacités spatiales, je crains que vous ne puissiez pas faire grand-chose. Cependant, un travail acharné peut l'atténuer et c'est loin d'être la seule compétence requise en programmation. Des choses comme la créativité, la passion, l'enthousiasme, la rigueur, les compétences analytiques, la netteté, la bonne compréhension des problèmes commerciaux, les compétences de collaboration, peuvent plus que compenser une visualisation mentale plus faible que la moyenne de la base de code.

En bref, ce dont vous avez besoin est l'OMI:

  • La discipline

  • Entraine toi

  • Un rythme durable

guillaume31
la source