Passer aux informations sur le produit
Le cerveau du programmeur
Le cerveau du programmeur
Description
Introduction au livre
Comment améliorer le flux de travail des développeurs grâce aux sciences cognitives

Ce livre utilise différentes méthodologies basées sur les sciences cognitives pour aider les développeurs à apprendre rapidement de nouveaux langages et frameworks et à améliorer leur productivité.
Au-delà d'une meilleure compréhension de votre code, il présente des techniques scientifiquement prouvées pour la prévention des bogues, la dénomination claire, la refactorisation et l'amélioration à grande échelle de la base de code.
  • Vous pouvez consulter un aperçu du contenu du livre.
    Aperçu

indice
Préface du traducteur xi
Recommandation XIII
Revue du lecteur bêta xvi
Préface (John Skeet) xviii
Pour commencer xx
Remerciements xxii
À propos de ce livre xxiv
À propos de la couverture xxvi

PARTIE | Mieux lire le code

CHAPITRE 1 Comprendre la confusion lors du codage 3
1.1 Trois types de confusion causés par le code 4
1.1.1 Le premier type de confusion : le manque de connaissances 5
1.1.2 Le deuxième type de confusion : le manque d'information 6
1.1.3 Le troisième type de confusion : Manque de capacité de traitement 6
1.2 Processus cognitifs qui affectent le codage 7
1.2.1 LTM et programmation 8
1.2.2 STM et programmation 8
1.2.3 Espace mémoire de travail et programmation 10
1.3 Interaction des processus cognitifs 10
1.3.1 Brève description de l'interaction des processus cognitifs 10
1.3.2 Processus cognitifs liés aux tâches de programmation 11
Résumé 13

CHAPITRE 2 : Analyse rapide du code 14
2.1 Lisez rapidement le code 15
2.1.1 Que se passe-t-il dans le cerveau ? 16
2.1.2 Réexamen du code reproduit 17
2.1.3 Retour sur la deuxième expérience 19
2.1.4 Pourquoi est-il difficile de lire un code inconnu ? 19
2.2 Surmonter les limitations de taille de la mémoire 20
2.2.1 Le pouvoir de la reliure unitaire 20
2.2.2 Les experts retiennent mieux le code que les débutants 23
2.3 Voir, c'est plus que lire 25
2.3.1 Espace mémoire image 25
2.3.2 Ce n’est pas ce dont vous vous souvenez qui importe, mais comment vous vous en souvenez. 27
2.3.3 Exercice de segmentation 33
Résumé 35

CHAPITRE 3 : Apprendre rapidement la grammaire de la programmation 36
3.1 Conseils pour mémoriser la grammaire 37
3.1.1 Les effets négatifs des interruptions au milieu 37
3.2 Apprendre la grammaire à l'aide de flashcards 38
3.2.1 Quand utiliser les flashcards 39
3.2.2 Extension de carte mémoire 39
3.2.3 Réduire le nombre de fiches à 40
3.3 Comment ne pas oublier ? 40
3.3.1 Raisons de la perte de mémoire 41
3.3.2 Répéter à intervalles de 43
3.4 Se souvenir de la grammaire plus longtemps 44
3.4.1 Deux formes de mémorisation de l'information 44
3.4.2 Ne vous contentez pas d'avoir l'air d'avoir 45 ans
3.4.3 Se souvenir des informations renforce la mémoire 46
3.4.4 Renforcer la mémoire par la pensée active 47
Résumé 50

CHAPITRE 4 Comment lire un code complexe 51
4.1 Pourquoi est-il difficile de comprendre un code complexe ? 52
4.1.1 Différences entre la mémoire de travail et la mémoire à court terme 53
4.1.2 Types de charge cognitive liés à la programmation 53
4.2 Techniques de réduction de la charge cognitive 55
4.2.1 Refactorisation 55
4.2.2 Remplacement des éléments linguistiques inconnus par d'autres 57
4.2.3 Ajouter des synonymes de code aux fiches 60
4.3 Aides-mémoire utilisables lorsque la mémoire de travail est sollicitée 61
4.3.1 Création d'un graphe de dépendances 61
4.3.2 Utilisation des tables d'état 64
4.3.3 Combinaison de graphes de dépendance et de tables d'états 66
Résumé 68

PARTIE || Réflexion sur le code

CHAPITRE 5 Comprendre le code en profondeur 71
5.1 Le cadre du « rôle variable » 72
5.1.1 Les variables ont des rôles différents 72
5.1.2 11 Rôles 73
5.2 Rôles et paradigmes 76
5.2.1 Avantages liés au rôle 76
5.2.2 Notation hongroise 78
5.3 Pour obtenir des connaissances approfondies sur le programme, 80
5.3.1 Connaissances textuelles vs. connaissances en matière de planification 80
5.3.2 Étapes de la compréhension du programme 81
5.4 La lecture de ce texte est similaire à la lecture du code 84
5.4.1 Que se passe-t-il dans notre cerveau lorsque nous lisons du code ? 85
5.4.2 Si vous pouvez apprendre le français, vous pouvez apprendre Python 86
5.5 Stratégies de compréhension de texte applicables à la lecture du Code 90
5.5.1 Activation des connaissances existantes 91
5.5.2 Surveillance 91
5.5.3 Détermination des lignes importantes dans le code 92
5.5.4 Déduction de la signification des noms de variables 93
5.5.5 Visualisation 94
5.5.6 Poser une question 96
5.5.7 Résumé du code 96
Résumé 97

CHAPITRE 6 : Comment améliorer sa capacité à résoudre les problèmes de programmation 98
6.1 Réflexion sur le code à l'aide de modèles 99
6.1.1 Avantages du modèle 99
6.2 Modèles mentaux 102
6.2.1 Un examen plus approfondi des modèles mentaux 103
6.2.2 Apprentissage d'un nouveau modèle mental 104
6.2.3 Comment utiliser efficacement les modèles mentaux lors de la réflexion sur le code 105
6.3 Machines conceptuelles 110
6.3.1 Qu'est-ce qu'une machine conceptuelle ? 111
6.3.2 Exemple de machine conceptuelle 111
6.3.3 Couches de la machine conceptuelle 113
6.4 Machines conceptuelles et langages 114
6.4.1 Extension de la machine conceptuelle 114
6.4.2 Plusieurs machines conceptuelles peuvent créer des modèles mentaux contradictoires 115
6.5 Machines conceptuelles et schémas 117
6.5.1 Pourquoi les schémas sont-ils importants ? 117
6.5.2 Une machine conceptuelle est-elle sémantique ? 117
Résumé 117

CHAPITRE 7 : Le virus de la pensée 119
7.1 Pourquoi le deuxième langage de programmation est-il plus facile que le premier ? 120
7.1.1 Comment augmenter les chances de tirer parti des connaissances existantes en programmation 122
7.1.2 Autres formes de transition 123
7.1.3 Savoir quelque chose est-il une malédiction ou une bénédiction ? 124
7.1.4 Difficultés de transition 125
7.2 Idée fausse : Le bug de la pensée 127
7.2.1 Corriger les idées fausses par un changement conceptuel 128
7.2.2 Surmonter les idées fausses 129
7.2.3 Idées fausses sur les langages de programmation 130
7.2.4 Éviter les idées fausses lors de l'apprentissage d'un nouveau langage de programmation 132
7.2.5 Diagnostic des idées fausses dans une nouvelle base de code 132
Résumé 133

PARTIE ||| Écrire du bon code

CHAPITRE 8 Comment bien nommer 137
8.1 Pourquoi les noms sont importants 138
8.1.1 Pourquoi nommer est important 139
8.1.2 Différentes perspectives sur la dénomination 140
8.1.3 Les pratiques de dénomination précoce ont des effets durables 142
8.2 Aspects cognitifs de la dénomination 144
8.2.1 Noms avec formats d'aide STM 144
8.2.2 Des noms clairs aident LTM 145
8.2.3 Les noms de variables peuvent contenir différents types d'informations qui facilitent la compréhension 146
8.2.4 Quand évaluer la qualité des noms 147
8.3 Quels types de noms sont les plus faciles à comprendre ? 148
8.3.1 Faut-il abréger ou non ? 148
8.3.2 Étui serpent ou étui chameau ? 152
8.4 Comment les noms influencent les bogues 153
8.4.1 Le code avec des noms mal choisis contient plus de bogues (153).
8.5 Comment choisir un meilleur nom 154
8.5.1 Cadre de nom 154
8.5.2 Le modèle en trois étapes de Peitelson pour de meilleurs noms de variables 157
Résumé 158

CHAPITRE 9 Deux cadres pour prévenir le mauvais code et la charge cognitive 159
9.1 Pourquoi les défauts de conception du code entraînent une charge cognitive 160
9.1.1 Brève introduction aux codes d'odeur 160
9.1.2 Comment les odeurs du code affectent les processus cognitifs 163
9.2 L’effet des noms péjoratifs sur la charge cognitive 165
9.2.1 Antimodèles linguistiques 166
9.2.2 Mesure de la charge cognitive 167
9.2.3 Anti-modèles linguistiques et charge cognitive 170
9.2.4 Pourquoi les anti-modèles linguistiques causent la confusion 171
Résumé 172

CHAPITRE 10 : Améliorer ses compétences en résolution de problèmes complexes 173
10.1 Qu'est-ce que la résolution de problèmes ? 174
10.1.1 Éléments de dépannage 174
10.1.2 Espace d'état 174
10.2 Quel est le rôle de la mémoire à long terme dans la résolution des problèmes de programmation ? 175
10.2.1 La résolution de problèmes est-elle en soi un processus cognitif ? 175
10.2.2 Méthodes d'entraînement à long terme pour la résolution de problèmes 177
10.2.3 Deux types de mémoire qui jouent un rôle dans la résolution de problèmes 177
10.3 Automatisation : Création de souvenirs implicites 180
10.3.1 Mémoire implicite au fil du temps 181
10.3.2 Pourquoi l'automatisation peut accélérer l'exécution des programmes 184
10.3.3 Amélioration de la mémoire implicite 185
10.4 Apprendre du code et des commentaires 186
10.4.1 Un nouveau type de charge cognitive : la charge innée 187
10.4.2 Utilisation d'exemples résolus dans le développement 189
Résumé 190

PARTIE |V Collaboration en programmation

CHAPITRE 11 L'acte de rédaction du Code 193
11.1 Activités diverses pendant la programmation 194
11.1.1 Recherche 194
11.1.2 Comprendre 195
11.1.3 Guerrier 195
11.1.4 Augmentation de 195
11.1.5 Exploration 196
11.1.6 Qu'en est-il du débogage ? 197
11.2 Interruption du programmeur 197
11.2.1 Échauffement requis pour les tâches de programmation 198
11.2.2 Que se passe-t-il après une pause ? 198
11.2.3 Comment se préparer à une panne 199
11.2.4 En cas d'interférence avec le programmeur 202
11.2.5 Réflexions sur le multitâchage 204
Résumé 205

CHAPITRE 12 Conception et amélioration des systèmes à grande échelle 206
12.1 Analyse des caractéristiques du code source 207
12.1.1 Dimension cognitive 207
12.1.2 Utilisation de CDCB pour améliorer le code source 217
12.1.3 Manœuvres de conception et compromis 218
12.2 Dimensions et activités 219
12.2.1 L'impact des dimensions sur l'activité 219
12.2.2 Optimisation du code source pour l'activité attendue 221
Résumé 221

CHAPITRE 13 Intégration des nouveaux développeurs 222
13.1 Problèmes liés à l'assistance à l'adaptation 223
13.2 La différence entre experts et débutants 224
13.2.1 Compréhension approfondie du comportement des débutants 225
13.2.2 La différence entre percevoir un concept concrètement et abstraitement 229
13.3 Amélioration du support à l'adaptation 231
13.3.1 Limiter une tâche à une seule activité de programmation 231
13.3.2 Soutien à la mémoire des nouveaux membres de l'équipe 232
13.3.3 Lecture du code ensemble 234
Résumé 237

En conclusion 238
Recherche 241

Image détaillée
Image détaillée 1

Dans le livre
Le manque de connaissances signifie que le contenu n'est pas stocké dans la mémoire à long terme (MLT) du cerveau.
La mémoire à long terme est l'endroit où les informations dont vous vous souvenez sont stockées de manière semi-permanente.
En revanche, lorsqu'il y a un manque d'informations autres que des connaissances, c'est parce que le contenu correspondant n'est pas dans la mémoire à court terme (MCT).
Lorsque nous recueillons des informations, nous les stockons temporairement dans notre mémoire à court terme, mais lors de la recherche d'autres informations, nous oublions certaines des informations que nous avions déjà recueillies.
Enfin, lorsque nous traitons une grande quantité d'informations, cela affecte notre mémoire de travail, c'est-à-dire la zone que nous utilisons lorsque nous réfléchissons.

--- p.7

Des études montrent que près de 60 % du temps d'un programmeur est consacré à la « compréhension » du code, et non à son « écriture ».
Par conséquent, si vous parvenez à améliorer votre capacité à comprendre rapidement le code tout en maintenant sa précision, vous améliorerez considérablement vos compétences en programmation.
(…) Lorsque vous débutez en programmation, vous êtes très intéressé par la création de code.
Que ce soit à l'université, au travail ou dans un camp d'entraînement intensif, une fois que vous aurez appris la programmation, vous consacrerez beaucoup plus de temps et d'attention à l'écriture de code.
Nous nous concentrons sur la formation à la résolution de problèmes et à leur implémentation dans le code.
Il y aura très peu, voire pas du tout, d'exercices de lecture de code.
J'espère que ce chapitre vous aidera à améliorer vos compétences en lecture de code.

--- p.14~15

Panin a enregistré 10 000 sessions de programmation pour 85 programmeurs.
Il a observé à quelle fréquence les développeurs étaient interrompus par des courriels ou des collègues (ce qui arrivait très souvent !) et ce qui se passait ensuite.
Sans surprise, Panin a conclu que les interruptions de travail ont un impact négatif sur la productivité.
Ses recherches ont montré que si l'on est interrompu pendant la programmation, il faut environ 15 minutes pour reprendre la tâche.
Dans seulement 10 % des cas environ, lorsqu'une tâche de modification de méthode était interrompue, la tâche reprenait en moins d'une minute.
(…) Apprenons maintenant à apprendre la grammaire rapidement.
--- p.38

Les capacités de calcul, c'est-à-dire les connaissances et les compétences qui nécessitent l'application de capacités mathématiques, n'avaient que peu de pouvoir prédictif sur les capacités de programmation.
Il n'y avait qu'une variance (écart) de 2 % parmi les participants à l'expérience.
Il a été constaté que les compétences linguistiques étaient un meilleur indicateur, expliquant 17 % de la variance.
C'est un résultat intéressant.
Les développeurs valorisent généralement les compétences en mathématiques, et beaucoup de programmeurs que je connais disent ne pas être doués pour les langages de programmation.
Les facteurs qui ont montré le plus grand pouvoir prédictif dans les trois tests étaient la capacité de la mémoire de travail et la capacité de raisonnement.
--- p.87

Malheureusement, de nombreuses preuves démontrent que les gens ne peuvent pas effectuer plusieurs tâches simultanément tout en réalisant des tâches cognitives complexes.
Cela peut paraître absurde, car certaines personnes pourraient lire ce livre en écoutant de la musique, ou l'écouter en courant ou en tricotant. Comment puis-je alors affirmer que l'on ne peut pas faire deux choses simultanément ? (...) Examinons quelques données scientifiques qui montrent que le multitâchage n'est pas aussi efficace qu'on le croit.
--- p.204

Avis de l'éditeur
Connaissez votre cerveau, visualisez votre code : une nouvelle façon d’utiliser votre cerveau pour une programmation efficace

La programmation est une activité cognitive exigeante.
Vous devez résoudre des problèmes à un niveau abstrait tout en écrivant du code.
En analysant scientifiquement la façon dont notre cerveau traite le code, nous pouvons comprendre les causes des difficultés de programmation et trouver des solutions.
Ce livre explique comment exploiter pleinement votre cerveau pour devenir un meilleur programmeur.
Comprendre les mécanismes des trois activités cognitives — la mémoire à long terme, la mémoire à court terme et la mémoire de travail — vous aidera à mieux comprendre le code.
De plus, il présente des résultats de recherche et des techniques scientifiquement éprouvées pour tout, de la prévention des bogues et la sélection claire des noms de variables à la refactorisation et à l'amélioration à grande échelle des bases de code, aidant ainsi les développeurs à apprendre rapidement de nouveaux langages et frameworks et à accroître leur productivité.
Les élèves de première année qui ont du mal à apprendre de nouveaux concepts peuvent réduire l'auto-accusation inutile en apprenant que c'est ainsi que leur cerveau « fonctionne tout simplement ».
Les cadres supérieurs qui se sentent frustrés par le retard dans l'intégration des nouveaux membres de l'équipe qu'ils ont sélectionnés pour leur expérience réaliseront également que cela est dû à leur propre fonctionnement cérébral et seront ainsi capables de mieux comprendre leurs nouveaux collègues.
Recommandé à tous les lecteurs qui rêvent de devenir de meilleurs programmeurs.


Contenu principal

■ Comment fonctionne le cerveau lors de la reconnaissance d'un code
■ Méthode de lecture pour comprendre rapidement le code
■ Techniques pour modifier facilement les codes et les problèmes complexes
■ Conseils pour améliorer votre code source dans un environnement collaboratif

Public cible

■ Tous les développeurs qui souhaitent améliorer leurs compétences en programmation
■ Développeur junior qui se sent inférieur parce qu'il ou elle est le/la seul(e) à ne pas être doué(e) dans un domaine particulier
■ Un développeur senior frustré par un junior qui ne progresse pas malgré tous ses efforts pour lui apprendre.
SPÉCIFICATIONS DES PRODUITS
- Date de publication : 12 janvier 2022
Nombre de pages, poids, dimensions : 272 pages | 528 g | 188 × 245 × 13 mm
- ISBN13 : 9791191600650
- ISBN10 : 1191600653

Vous aimerez peut-être aussi

카테고리