wiki:resumes-de-livres:proprement-codeur
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
wiki:resumes-de-livres:proprement-codeur [2023/02/07 21:31] – Chapitre 4 alyve | wiki:resumes-de-livres:proprement-codeur [2023/02/26 14:18] (Version actuelle) – [Chapitre 9 : gestion du temps] alyve | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Résumé de « Proprement codeur : code de conduite pour développeurs professionnels » ====== | ====== Résumé de « Proprement codeur : code de conduite pour développeurs professionnels » ====== | ||
+ | Un ami et ancien collègue m’a offert ce livre pour Noël (livre qu’il s’est lui-même acheté). J’ai eu l’idée de faire se résumé pendant la lecture car je pense réellement que les conseils présents en valent le coup. L’ISBN du livre est 978-2-3260-0289-0 si vous souhaitez vous le procurer. Si vous bossez dans l’IT ou même si vous êtes étudiant·e·s en IT, n’hésitez pas à le demander à votre CTO ou dans la bibliothèque de votre établissement. | ||
+ | |||
+ | => Avoir une bibliothèque fournie de livres de ce genre permettra aux équipes d’être encore meilleures. | ||
===== Chapitre 1 : professionnalisme ===== | ===== Chapitre 1 : professionnalisme ===== | ||
Ligne 83: | Ligne 86: | ||
Aussi, on peut avoir besoin d’aide. Si la personne qui a accepté de vous aider ne le fait pas vraiment, **proposez d’en rester là et remerciez-là**. | Aussi, on peut avoir besoin d’aide. Si la personne qui a accepté de vous aider ne le fait pas vraiment, **proposez d’en rester là et remerciez-là**. | ||
- | ==== Monitorat ==== | ||
+ | ===== Chapitre 5 : développement dirigé par les tests ou TDD ===== | ||
+ | ==== Trois lois du TDD ==== | ||
+ | - Vous ne vous autorisez pas à écrire du code de production tant que vous n’avez pas écrit d’abord un test unitaire qui doit évidemment échouer. | ||
+ | - Vous ne vous autoriserez pas à écrire plus de code de test unitaire que nécessaire pour provoquer l’échec de compilation. | ||
+ | - Vous ne vous autoriserez pas à écrire plus de code de production que celui qui permet au final de réussir le test unitaire qui échouait. | ||
+ | ==== Bénéfices ==== | ||
- | ===== Chapitre 5 : développement dirigé par les tests ou TDD ===== | + | Si les tests réussissent, |
+ | Un taux de coverage d’au moins 90% est conseillé. La plupart des outils qui calculent ce taux ne prennent pas en compte les cas d’exceptions // | ||
+ | |||
+ | Lorsqu’on ne fait pas de TDD, on peut être frileux·se de refactorer une partie du code de peur de rendre l’ensemble non opérationnel. Un code propre est plus facile à relire, à maintenir et à enrichir. | ||
+ | |||
+ | ==== Documentation ==== | ||
+ | |||
+ | * La lecture des tests permet de savoir comment chaque élément du système fonctionne et comment l’exploiter | ||
+ | * Les test sont la documentation qui décrivent la conception du système | ||
+ | * Les tests sont écrit dans un langage qui quiconque devra comprend | ||
+ | |||
+ | ==== Conception ==== | ||
+ | |||
+ | Il est nécessaire de concevoir les tests avant d’écrire le code. Cela permet de concevoir des fonctions qui ne feront pas appels à d’autres fonctions. Écrire les tests avant de rédiger le code nous oblige à concevoir une bonne approche de conception. | ||
+ | |||
+ | Si on veut écrire les tests après avoir écrit le code, on peut avoir une masse informe et difficile à tester // | ||
+ | |||
+ | Deux approches différentes : | ||
+ | |||
+ | * Approche offensive : | ||
+ | * Approche défensive : | ||
+ | |||
+ | Faire du TDD favorise la certitude, le courage //(de refactorer)//, | ||
+ | |||
+ | ==== Ce que le TDD n’est pas ==== | ||
+ | |||
+ | Le TDD n’est pas une formule magique. Faire des tests s’apprend : | ||
===== Chapitre 6 : entraînement ===== | ===== Chapitre 6 : entraînement ===== | ||
+ | |||
+ | Selon l’auteur, l’entraînement fait partie intégrante du métier pour //un développeur professionnel// | ||
+ | L’objectif est d’être capable de détecter une grande variété de problèmes et de //savoir// comment y réagir. | ||
+ | |||
+ | ==== Kata ==== | ||
+ | |||
+ | Dans les Arts Martiaux, l’entraînement solitaire s’appelle un //kata//. Il s’agit du même principe pour le développement ; | ||
+ | |||
+ | La répétition permet d' | ||
+ | |||
+ | * La résolution de l’exercice n’est pas l’objectif | ||
+ | * L’objectif est la mise en pratique des mouvements et des décisions | ||
+ | * Apprendre les raccourcis clavier et à maîtriser nos outils | ||
+ | |||
+ | Quelques sources & katas (tous en anglais) : | ||
+ | |||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | |||
+ | ==== Waza ==== | ||
+ | |||
+ | Un Waza est l’équivalent d’un Kata mais en duo. | ||
+ | |||
+ | * Les deux partenaires choississent un kata ou un problème simple à résoudre | ||
+ | * Læ premier·ère rédige le test unitaire, læ second·e rédige le code qui doit réussir le test | ||
+ | * Échange des rôles | ||
+ | |||
+ | Les développeur·euse·s pratiquent et évaluent les capacités de frappe de touche et l’utilisation de la souris ainsi que le degré de perfection du kata. | ||
+ | |||
+ | On peut également s’imposer des contraintes, | ||
+ | |||
+ | * Contrainte de performance | ||
+ | * Occupation mémoire | ||
+ | * Etc | ||
+ | |||
+ | Le jeu en devient ainsi enthousiasmant et amusant. | ||
+ | |||
+ | ==== Randori ==== | ||
+ | |||
+ | Le randori est un combat libre. Il se fait en groupe de plusieurs personnes. | ||
+ | |||
+ | * Une première personne écrit un test et puis s’éloigne | ||
+ | * La personne suivante se charge de la réussite du test et écrit le test suivant | ||
+ | |||
+ | Les participants peuvent être assis autour d’une table ou se promener dans la pièce. | ||
+ | On élargit ainsi notre horizon technique tout en renforçant nos compétences. | ||
+ | |||
+ | ==== Extension du domaine de l’expérience ==== | ||
+ | |||
+ | Nombreuses sont les professionnels qui manque de diversité dans le genre de problème que nous savons résoudre. Les employeurs obligent souvent à n’utiliser qu'un seul langage, qu’une seule plateforme et qu’un seul domaine métier. Sans entraînement, | ||
+ | |||
+ | Une solution serait de contribuer à l’open source dans un langage que nous ne connaissons pas, par exemple un·e dev Javascript peut participer à un projet Python, un·e dev C# peut participer à un projet Java, etc. | ||
+ | |||
+ | ==== Éthique de l’entraînement ==== | ||
+ | L’employeur n’est pas censé financer le maintien de nos compétences dans un état optimal. Ce n’est pas son rôle ; nous ne sommes pas payés pour nous entraîner. | ||
+ | |||
+ | On s' | ||
+ | |||
+ | Tous les professionnels s’entraînent pour pouvoir fournir la meilleure prestation possible. On s’entraîne pour pouvoir être payé·e et être payé·e correctement. | ||
===== Chapitre 7 : tests d’acceptation ou recette ===== | ===== Chapitre 7 : tests d’acceptation ou recette ===== | ||
+ | Læ développeur·euse professionnel·le veille à ce que nos productions soient toujours exactes et univoques. | ||
+ | |||
+ | ==== Communication et exigences ==== | ||
+ | |||
+ | Le domaine dans lequel les problèmes de communication entre les développeur·euse·s et les clients ont le plus d’impact est celui des exigences ou du cahier des charges. | ||
+ | |||
+ | ==== Précision prématurée ==== | ||
+ | |||
+ | Le client et les personnes du métier veulent définir dans les moindres détails ce qu’iels vont financer avant d’autoriser le lancement du projet. On va chercher alors un degré de précision que nous ignorons à ce stade. | ||
+ | |||
+ | ==== Le principe d’incertitude ==== | ||
+ | |||
+ | Les choses se présentent différent sur le papier que dans un système réel. Ce n’est pas tout à fait voir pas du tout ce que læ client·e avait demandé. Ce n’est que lorqu’iel voit ses exigences traduites à l’écran qu’iel peut se former un eidée plus précise de ce qu’iel a besoin. | ||
+ | |||
+ | **Plus les exigences ou spécifications sont détaillées au départ, moins elles seront pertinentes une fois prises en compte dans le système.** | ||
+ | |||
+ | ==== Angoisse des estimations ==== | ||
+ | |||
+ | On risque de déployer inutilement des efforts inutiles en recherchant la précision maximale lors de nos estimations. Les exigences évoluent inévitablement, | ||
+ | |||
+ | Pour combler ce risque, nous pouvons donner une plage d’incertitude de telle manière que læ client·e en soit informé. (voir chapitre 10) FIXME | ||
+ | |||
+ | ==== Ambiguïté tardive ==== | ||
+ | |||
+ | Pour éviter les précisions prématurées, | ||
+ | |||
+ | Le business ainsi que l’IT présument que les autres lecteurs du document savent parfaitement de quoi iels parlent. C’est dans ces ambiguïtés que nous devons travailler. Aussi bien les développeur·euse·s que les parties prenante doivent éliminer toute ambiguïté dans les exigences. | ||
+ | |||
+ | Pour y parvenir, il n’y qu’une seule chose : | ||
+ | |||
+ | ==== Tests d’acceptation ==== | ||
+ | |||
+ | Les tests d’acceptation sont ceux qui sont issus de la collaboration entre le business et l’IT. Cela permet de déclarer que le travail correspondant est réellement achevé… sans ambiguïté. | ||
+ | |||
+ | ==== La définition d’achèvement, | ||
+ | |||
+ | L’achèvement c'est quand le code source est écrit, que tous les tests ont réussi, que le contrôle qualité a accepté le produit et les parties prenantes aussi. L’état d’achèvement est alors total. | ||
+ | |||
+ | Lorsque les tests d’acceptation de la fonction considérée réussissent, | ||
+ | |||
+ | ==== Communication ==== | ||
+ | |||
+ | Les tests d’acceptation servent à communiquer clairement et précisément. C’est la manière **exacte** de comment le système devrait se comporter. | ||
+ | |||
+ | ==== Automatisation ==== | ||
+ | |||
+ | Læ développeur·euse professionnel·le se sent responsable dans la mesure où iel s’assure que les tests d’acceptation sont automatisés. | ||
+ | |||
+ | ==== Supplément de travail ==== | ||
+ | |||
+ | Les tests automatisés sont une source d’économie énorme en terme de temps et d' | ||
+ | |||
+ | ==== Rédaction des tests : par qui et quand ? ==== | ||
+ | |||
+ | //Dans un monde idéal//, les tests sont rédigés par les parties prenante et le service qualité puis les développeur·euse·s les vérifient afin de garantir leur cohérence. | ||
+ | |||
+ | Lorsque la rédaction est faites par les devs, il faut s’assurer que ce n'est jamais la personne même qui rédige le test et qui code la fonctionnalité. | ||
+ | |||
+ | * Les premiers tests doivent être prêts lors du premier jour de l’itération. | ||
+ | * À la moitié de l’itération, | ||
+ | * Si ce n’est pas le cas, les devs redoublient d’efforts pour les achever. | ||
+ | * Si ce retard ce produit, c'est qu’il faut sans doute renforcer l’équipe d’analystes métier ou de l’assurance qualité. | ||
+ | |||
+ | ==== Négociation et agression passive ==== | ||
+ | |||
+ | Ceux qui rédigent les tests sont humains et donc susceptibles de faire des erreurs. Le car échéant, læ développeur·euse qui est chargée de faire réussir le test peut vraiment se sentir frustré·e. | ||
+ | |||
+ | Notre travail consiste à aider l’équipe à produire le logiciel de la meilleure qualité possible. | ||
+ | |||
+ | ==== Tests d’acceptation et tests unitaires ==== | ||
+ | |||
+ | * Les tests unitaires sont écrits par des devs our des devs. | ||
+ | * Les tests d’acceptation sont écrits par le client pour le client. Les destinataires de ces tcests sont aussi bien le métier que les devs. | ||
+ | |||
+ | Ces deux types de tests ne sont absolument pas interchangeables. | ||
+ | |||
+ | Les tests unitaires comme les tests d’acceptation sont d’abord des documents, leur rôle est d’obliger à expliciter de façon formelle la conception, la structure et le comportement du système. | ||
+ | |||
+ | |||
+ | ==== Interface graphique et autres complications ==== | ||
+ | |||
+ | * Une UI est mouvante et change constamment | ||
+ | * Il faut pouvoir considérer l’UI comme un système utilisant une interface API et non comme un ensemble de boutons. | ||
+ | |||
+ | si on veut vraiment tester l’UI, il est préférable de déclencher l’action en citant le nom du bouton plutôt que des positions absolues à l’écran. | ||
+ | |||
+ | ==== Tester via la bonne interface ==== | ||
+ | |||
+ | L’idéal est de rédiger les tests de sorte à appliquer les fonctions du système concerné en passant par une interface API réelle et non pas une en attaquant directement l’interface. | ||
+ | |||
+ | L’interface UI pose toujours problème, il faut donc prendre soin de décrire nos tests concernant les règles métier en utilisant une API sous le niveau de l’interface UI. | ||
+ | |||
+ | ==== Intégration continue ==== | ||
+ | |||
+ | Nous devons nous assurer de faire exécuter nos tests unitaires et tests d’acceptation le plus souvent possible (par exemple au commit ou push) si on travaille dans un environnement d’intégration continue. | ||
+ | |||
+ | ==== Arrêtez tout ! ==== | ||
+ | |||
+ | Il faut considérer tout blocage de la production en contexte CI comme une **urgence absolue** ! | ||
+ | |||
+ | ==== Conclusion ==== | ||
+ | |||
+ | Il n’est jamais simple de communiquer de façon détaillée et c’est particulièrement le cas lors des échanges entre les développeur·euse·s, | ||
+ | |||
+ | La seule technique que connaît l’auteur pour éliminer les erreurs de communication est la rédaction des tests d’acceptation automatisés, | ||
===== Chapitre 8 : stratégie de test ===== | ===== Chapitre 8 : stratégie de test ===== | ||
- | ===== Chapitre 9 : gestion du temps ===== | + | ==== L’assurance qualité doit être bredouille ==== |
+ | |||
+ | Principe important : | ||
+ | Vu que cela est // | ||
+ | |||
+ | Il est **impératif** de chercher comment cela a pu se produire et prendre des mesures pour que le défaut ne réapparaisse jamais. | ||
+ | |||
+ | ==== L’assurance qualité fait partie de l’équipe ==== | ||
+ | |||
+ | Les deux départements doivent travailler **ensemble**, | ||
+ | |||
+ | L’assurance qualité doit cependant jouer deux rôles: | ||
+ | |||
+ | * Spécifier : | ||
+ | * production de tests d’acceptation automatisés (de manière générale, les analystes écrivent les cas nominaux et la QA les cas d’exception). | ||
+ | * recueillir les exigences de façon itérative | ||
+ | * Caractériser : | ||
+ | |||
+ | ==== Pyramide de l’automatisation des tests ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | === Tests unitaires === | ||
+ | |||
+ | Les tests unitaires sont rédigés par les développeurs (**mais pas cellui qui développera la feature derrière**) juste avant la rédaction du code de production. Le taux de couverture des tests unitaires doit être le **plus proche possible des 100%**. | ||
+ | |||
+ | La couverture doit être véritable : | ||
+ | |||
+ | === Tests de composants === | ||
+ | |||
+ | Les composants sont des éléments mis ensemble afin d’**incarner une règle métier**, ils correspondent ainsi à une partie des tests d’acceptation. **Les autres composants que celui testé être isolés** avec des mocks ou grâce à la [[https:// | ||
+ | |||
+ | Ils sont rédigés par la QA en collaboration avec les analystes mais éventuellement des dévelopeur·euse·s. Mais attention : | ||
+ | |||
+ | === Tests d’intégration ==== | ||
+ | |||
+ | Ce niveau de test n’est pertinent que pour des systèmes constitués de nombreux composants. Ils ne testent pas les règles métiers mais vérifient qu’un ensemble de composants opère de **manière harmonieuse** au sein du système. C’est également ici qu’on **commence à rencontrer des tests de performance et de débits**. | ||
+ | |||
+ | À ce niveau, **les tests cessent d’être exécutés dans un contexte d’intégration** continue mais doivent l’être de manière période, le plus souvent possible. | ||
+ | |||
+ | === Tests système === | ||
+ | |||
+ | Les tests systèmes sont des tests appliqués à la **totalité du système** une fois celui-ci intégré avec les parties tierces, ils servent donc **à vérifier que le système a été correctement connectés avec ces parties**, à l’instar d’un CRM ou d’un ERP. Ceux-ci peuvent également inclure des tests performances. | ||
+ | |||
+ | En général, la rédaction des tests système se fait par les **architectes systèmes** et/ou les **responsables techniques**. | ||
+ | |||
+ | La fréquence d’exécution dépend de leur durée mais doivent, au mieux, se faire le plus fréquemment possible. | ||
+ | |||
+ | **=>** Pour les exécuter, il faut que les éléments inférieurs de la pyramide soient verts. | ||
+ | |||
+ | === Tests manuels d’exploration === | ||
+ | |||
+ | Ces tests sont fait plus rarement et **uniquement par des humains**. Il s’agit de test manuels sans aucun protocole (car ces protocoles sont censés être testé dans les niveaux en dessous) mais l’objectif est de **trouver des bugs** et **vérifier que le système se comporte correctement** quand c’est un humain qui pilote le système… //et les humains peuvent se montrer très surprenant// | ||
+ | |||
+ | ==== Conclusion ==== | ||
+ | |||
+ | Les tests d’acceptation sont indispensables pour qu’on puisse se permettre de dire au business que quelque chose est terminé. Les équipes de développement et de QA doivent collaborer ensemble pour l’objectif commun qu’est de fournir un logiciel **fonctionnel** et **conforme aux exigences**. | ||
+ | |||
+ | Les test doivent être exécutés le plus souvent possible. | ||
+ | Vous ===== Chapitre 9 : gestion du temps ===== | ||
+ | |||
+ | ==== Réunions ==== | ||
+ | |||
+ | Les deux vérités à toute réunion : | ||
+ | |||
+ | * Elles sont nécessaires | ||
+ | * Elles constituent un énorme gaspillage de temps | ||
+ | |||
+ | On peut évaluer à 200 € la participation de chaque personne à chaque réunion par heure. Il ne faut donc jamais perdre de vue le prix pour une réunion et que **notre temps est précieux**. | ||
+ | |||
+ | ==== Décliner l’invitation ==== | ||
+ | |||
+ | Rien ne nous oblige à participer à toutes les réunions auxquelles nous sommes invités. Il s’agirait d’un manque de professionnalisme de toutes les accepter. Avant d’accepter, | ||
+ | |||
+ | Certaines réunions sont intéressantes sans que notre présence y apporte une plus-value, peut-être qu' | ||
+ | |||
+ | D’ailleurs, | ||
+ | |||
+ | ==== Écourter sa présence ==== | ||
+ | |||
+ | Les réunions où notre présence est devenue inutile, on connaît. Il faut trouver un moyen d’écourter notre présence poliment dès que nous considérons qu’il s’agit d’une perte de temps. Attendons le moment opportun pour demander si notre présence est toujours nécessaire tout en précisant que vous n’avez plus de temps disponible. | ||
+ | |||
+ | ==== Avoir un ordre du jour et un objectif ==== | ||
+ | |||
+ | Pour utiliser le temps de chacun·e efficacement, | ||
+ | |||
+ | Si la réunion digresse, on peut demander à ce que le sujet en cours y soit ajouté. Si vous êtes insatisfait·e·s, | ||
+ | |||
+ | === Les réunions debout (stand-up) ==== | ||
+ | |||
+ | Réunions quotidiennes, | ||
+ | |||
+ | * Qu’est ce que j’ai fait hier ? | ||
+ | * Qu’est ce que je compte faire aujourd' | ||
+ | * Quels sont les points bloquants auxquels je suis confronté·e ? | ||
+ | |||
+ | Et **rien d' | ||
+ | |||
+ | ==== Les réunions de planification d’itération (sprint planning) ==== | ||
+ | |||
+ | Elles servent à sélectionner les tâches en puisant dans les tâches à réaliser (// | ||
+ | |||
+ | Les tests de composants et d’acceptation ont été au moins ébauchés, au mieux rédigés. | ||
+ | |||
+ | Au cours de la réunion, chaque tâche est **décrite**, | ||
+ | |||
+ | De manière générale, la réunion ne doit pas consommer plus de 5% de la durée de l’itération. Pour un sprint de deux semaines, la réunion ne doit donc pas excéder 2 heures. | ||
+ | |||
+ | ==== La rétrospective d’itération et la démonstration (sprint review) ==== | ||
+ | |||
+ | Il s’agit de décrire ce qui s’est bien passé et ce qui s’est moins bien passé. Vu que ce genre de réunion peut s’éterniser, | ||
+ | |||
+ | => Attention, l’objectif est d’améliorer notre manière de travailler, la personne qui mène le sprint review **doit** remonter les informations négatives et les prendre en considération pour les prochaines itérations. Sinon, cette réunion ne sert à rien. | ||
+ | |||
+ | === Disputes et désaccords ==== | ||
+ | |||
+ | => « Tout désaccord qui ne peut pas être réglé en cinq minutes ne le sera pas davantage en se disputant » Kent Beck | ||
+ | |||
+ | Les désaccords techniques peuvent facilement devenir déraisonnable. Elles sont rarement fondées sur les données. | ||
+ | |||
+ | Seule solution : **s’appuyer sur des données**. | ||
+ | |||
+ | Faire part de condescendance ou se montrer intimidant ne fait qu’estomper le désaccord qui refera surface à la première occasion. | ||
+ | |||
+ | Certaines personnes sont passif·ve·s-agressif·ve·s (« Puisque c’est ce qu’iel veut, on va voir ce qu’on va voir »), **on ne doit jamais se l’autoriser**. Lorsque nous donnons notre accord, **nous nous engageons**. | ||
+ | |||
+ | Si le choix que nous avons choisi n’est pas correct, on peut toujours revenir en arrière et choisir l’autre voie. | ||
+ | |||
+ | Nous devons également nous méfier des réunions qui ne servent qu’à accroître un désaccord. **Ne pas participer aux réunions où une seule des deux parties est présente.** | ||
+ | |||
+ | Lorsqu’il faut régler un désaccord immédiatement, | ||
+ | |||
+ | ==== Mana et énergie de concentration ==== | ||
+ | |||
+ | Le mana consiste à notre réserve de concentration. | ||
+ | |||
+ | Lorsque nous avons épuisé notre stock de mana, nous sommes forcé·e·s de la rcehercher en passant au moins une heure à des activités qui ne requièrent pas de concentration. | ||
+ | |||
+ | => Nous devons gérer notre temps de sorte à bien exploiter notre capital de mana. | ||
+ | |||
+ | Selon notre personnalité, | ||
+ | |||
+ | === Sommeil === | ||
+ | |||
+ | Dormir permet de reconstituer notre réserve. Nous devons gérer notre temps de sommeil pour disposer d’un capital de concentration au maximum le lendemain. | ||
+ | |||
+ | === Caféine === | ||
+ | |||
+ | Certain·e·s d’entre nous buvons une quantité énorme de café. Elle peut cependant avoir un effet déstabilisateur, | ||
+ | |||
+ | === Recharge de mana === | ||
+ | |||
+ | Pour recharger le mana, certaines personnes méditent, d’autres font une microsieste.Certain·e·s lisent un peu, d’autres progressent dans leur audiobook. Si nous nous forçons à continuer alors que notre réserve est vide, on peut se retrouver à faire n’importe quoi et devoir y revenir plus tard. Mieux vaut se relaxer trente minutes ou une heure. | ||
+ | |||
+ | === Concentration physique === | ||
+ | |||
+ | Les activités comme le tai-hi ou le yoga se basent sur un econcentration physique, différente de celle que nous utilisons pour coder. | ||
+ | Une concentration physique nous permet de recharger la concentration mentale. | ||
+ | |||
+ | => Une bonne activité musculaire régulière augmente le plafond des capacités mentales. | ||
+ | |||
+ | Certaines personnes choisissent une activité manuelle comme la menuiserie, maquettisme ou jardinage. Quelle que soit l’activité, | ||
+ | |||
+ | === Inspiration et expiration créative === | ||
+ | |||
+ | L’auteur du livre a constaté que s’exposer à la créativité d’autrui lui a permis d’être plus créatif. | ||
+ | |||
+ | ==== Blocs de temps et chronotomates ==== | ||
+ | |||
+ | Une des techniques qui gérer simultanément notre temps et notre concentration est // | ||
+ | |||
+ | * Se concentrer sur une tâche 25 minutes | ||
+ | * Faire 5 minutes de pause entre chaque tranche en répondant aux différentes sollicitations pendant la dernière tomate. | ||
+ | * Après 4 tomates, faire une pause d’½ heure. | ||
+ | |||
+ | Si nous recevons, par exemple, un appel, refuser poliment et préciser que nous serons disponibles dans moins de 25 minutes. Il n'y a pas beaucoup d’interruption si urgente qu’elles ne puissent pas attendre une demi-heure. | ||
+ | |||
+ | Les périodes tomates sont dédiées à la concentration, | ||
+ | |||
+ | On peut également s’amuser nos tomates quotidiennes et à faire un résultat en diagramme. On peut ainsi évaluer notre temps passé à gérer des activités complémentaires. | ||
+ | Certaines personnes aiment tellement cette technique qu’elles estiment leur temps en tomate pour mesurer leur vélocité. | ||
+ | |||
+ | === Application de pomodoro === | ||
+ | |||
+ | Beaucoup d’outils permettent de travailler avec la méthode pomodoro, des sites web, des outils sur votre système, etc. Pour ma part, j’aime beaucoup l’application Forest sur [[https:// | ||
+ | |||
+ | ==== Stratégie d’évitement ==== | ||
+ | |||
+ | Parfois, nous n’avons pas le cœur à l’ouvrage, | ||
+ | |||
+ | === Inversion des priorités === | ||
+ | |||
+ | Il s’agit de chercher activement comment éviter de faire notre travail. Cette inversion de priorités est un mensonge à nous-même. On réussit alors à se convaincre que des tâches plus importantes sont en attente. | ||
+ | |||
+ | Mais en plus de se mentir à nous-même, on ment également à la personne qui va nous demander où nous en sommes. On construit un mur de défense pour nous protéger du jugement des autres. | ||
+ | |||
+ | === Impasses et marche arrière === | ||
+ | |||
+ | Parfois, on peut se retrouver dans une impasse. Plus nous persistons dans cette voie, plus longtemps nous allons y errer. | ||
+ | Il faut savoir détecter le plus tôt possible cette situation et avoir le courage de faire marche arrière. C’est la //règle du fond du trou//: **quand nous touchons le fond, arrêtons de creuser**. | ||
+ | |||
+ | Il faut garder un esprit ouvert aux idées des autres afin de rectifier le tir. | ||
+ | |||
+ | ==== Marécages, bourbiers et autres bazars ==== | ||
+ | |||
+ | Pire que les impasses ; les bourbiers ! Car on arrive toujours à distinguer la sortie à l’horizon et celle-ci nous semble toujours plus proche qu’elle ne l’est en réalité. | ||
+ | Rien n’a d’effet plus négatif sur la productivité qu'un projet logiciel en marécages. | ||
+ | |||
+ | La prudence et l’expérience nous permettrons certains bourbiers, mais on peut toujours prendre une décision qui vous nous à mener tout droit. //Comme moi quand je vais tout droit en hurlant et courant dès que je mets le pied dans un marécage// :-D | ||
+ | |||
+ | L’entrée en zone marécageuse se fait insidieusement, | ||
+ | |||
+ | Il s’agit là **d'un point critique**. Revenir en arrière pour corriger la conception, ça peut sembler coûteux car il demande de revoir du code existant mais cette reprise en main ne se jamais aussi facile que maintenant. Si on persiste dans les marécages, on ne pourra peut-être jamais s’y extirper. | ||
+ | |||
+ | Il est important de rester à l' | ||
+ | |||
+ | Quand on sait qu’on est rentré·e dans un bourbier, vouloir progresser est **la pire des décisions possibles**. On se dirige tout droit vers un enfer, nous mais aussi les autres personnes qui seront sur le projet. | ||
+ | |||
+ | ==== Conclusion ==== | ||
+ | |||
+ | Il faut: | ||
+ | * Prendre soin de **gérer son temps et sa concentration**. | ||
+ | * **Rester ouvert·e·s | ||
+ | * **Ne jamais s’engager dans une solution au point de ne pas pouvoir revenir en arrière**. | ||
+ | * Surveiller l’apparition de marécages et **s’en extirper dès que possible**. | ||
===== Chapitre 10 : estimations ===== | ===== Chapitre 10 : estimations ===== | ||
wiki/resumes-de-livres/proprement-codeur.1675805504.txt.gz · Dernière modification : 2023/02/07 21:31 de alyve