- Selon les recherches en psychologie cognitive, la limite de deep work chez l’humain est de 3 à 4 heures par jour, au-delà desquelles la concentration et la qualité du code chutent fortement
- L’analyse de plus de 250 000 développeurs montre que le temps médian réellement passé à coder n’est que de 52 minutes par jour, le reste étant absorbé par les réunions, la gestion et la collaboration
- Après une interruption, il faut 23 minutes pour revenir à la tâche initiale, et pour un programmeur, 30 à 45 minutes sont nécessaires pour restaurer tout le contexte mental
- En état de flow, la productivité augmente de 500 %, mais il faut 15 à 25 minutes de concentration continue pour y entrer
- Le rôle d’un engineering manager ne doit pas être d’ajouter des processus, mais de supprimer les perturbations et protéger le temps de deep work
Limites cognitives : le deep work plafonne à 4 heures par jour
- Cal Newport définit le deep work comme une « activité professionnelle réalisée dans un état de concentration sans distraction, poussant les capacités cognitives jusqu’à leur limite », et pour la plupart des gens, 4 heures par jour représentent le maximum
- L’étude de K. Anders Ericsson sur les violonistes montre elle aussi qu’une pratique concentrée de 4 heures entraîne de la fatigue
- Le développement logiciel étant lui aussi un travail cognitif intense, mêlant résolution créative de problèmes et conception de systèmes, les rendements décroissent après 3 à 4 heures
- Le mathématicien Henri Poincaré travaillait 2 heures le matin et 2 heures l’après-midi, G.H. Hardy uniquement le matin, tandis que Charles Darwin, B.F. Skinner et C.S. Lewis suivaient eux aussi des journées de 3 à 4 heures de travail
- Selon les recherches de Gloria Mark à l’UC Irvine, la durée moyenne d’attention à l’écran n’est plus que de 47 secondes, contre 2,5 minutes en 2004
Comment les développeurs utilisent réellement leur temps
- L’analyse de plus de 250 000 développeurs par Software.com montre un temps médian de codage de 52 minutes par jour (environ 4 h 21 par semaine)
- Seuls 10 % des développeurs codent plus de 2 heures par jour, et 40 % plus d’1 heure
- D’après l’analyse de 1,5 million de réunions par Clockwise, les software engineers passent en moyenne 10,9 heures par semaine en réunion
- Les engineering managers passent 18 heures par semaine en réunion, soit presque la moitié d’une semaine de 40 heures
- Les développeurs dans les grandes organisations passent 12,2 heures par semaine en réunion, contre 9,7 heures dans les petites structures
- Une fois retirés les réunions, la gestion, les code reviews et la collaboration, il ne reste que 19,6 heures potentiellement concentrables par semaine, le plus souvent fragmentées en créneaux trop courts pour être réellement exploitables
- 45 % de tout le code est produit entre 14 h et 17 h, contre seulement 10 % entre 9 h et 11 h
- Non pas parce que les développeurs seraient naturellement du soir, mais parce que les matinées sont accaparées par les stand-ups, syncs et cérémonies
Le coût très élevé des interruptions
- Selon les recherches de Gloria Mark, il faut exactement 23 minutes et 15 secondes pour revenir complètement à la tâche initiale après une interruption
- Une étude du Georgia Institute of Technology montre que, pour les programmeurs, reprendre l’édition du code prend 10 à 15 minutes, tandis que reconstruire l’ensemble du contexte mental demande 30 à 45 minutes
- Dans son essai sur le « maker schedule », Paul Graham explique qu’une réunion n’est pas un simple changement de tâche, mais une exception qui modifie le mode de travail lui-même
- Une seule réunion peut ruiner tout un après-midi, et le simple fait d’avoir une réunion prévue plus tard empêche souvent de démarrer un travail ambitieux le matin
L’état de flow : le multiplicateur de productivité des programmeurs
- Mihaly Csikszentmihalyi définit l’état de flow comme un « état d’immersion complète dans l’activité, où le sentiment de soi disparaît et où l’on perd la notion du temps »
- Dix années de recherche ont confirmé une hausse de productivité de 500 % en état de flow par rapport à un état normal
- La clé d’entrée dans le flow est l’équilibre entre le niveau de défi et le niveau de compétence : un défi trop grand ou trop faible l’empêche
- Les équipes logicielles qui expérimentent fréquemment le flow livrent davantage de valeur, plus vite et avec une satisfaction plus élevée
- Le flow n’apparaît pas spontanément : il faut impérativement le protéger des éléments qui l’épuisent
Comment entrer en flow pendant qu’on code
- Créer un environnement sans interruption : fermer Slack, couper les notifications, utiliser un statut visible indiquant le mode deep work
- Même sans y répondre, voir une notification suffit à dégrader la concentration
- Définir un objectif clair avant la session de code : au lieu de « travail backend », formuler quelque chose de précis comme « corriger l’endpoint d’authentification pour qu’il renvoie les bonnes erreurs »
- Réserver les problèmes difficiles à son pic cognitif : selon les recherches sur les rythmes circadiens, les performances cognitives varient de 9 à 40 % selon l’heure de la journée
- Pour la plupart des adultes, la meilleure plage de résolution de problèmes se situe entre 10 h et 14 h
- Les profils du matin (« alouettes ») et du soir (« hiboux ») ont des pics différents, qu’il faut protéger individuellement
- Pratiquer le time blocking pour un maker schedule : réserver à l’avance dans le calendrier des blocs de 2 à 4 heures de deep work, et concentrer les réunions en fin de journée ou sur certains jours
- Définir un objectif par bloc de travail et le décomposer en trois tâches actionnables
- Éliminer les context switches : remplacer les réponses immédiates par deux fenêtres de communication par jour, et fermer les onglets de navigateur sans rapport avec la tâche en cours
- Travailler par sessions concentrées plutôt qu’en sprint marathon : la technique Pomodoro de 25 minutes convient mal aux tâches de développement complexes, car le minuteur interrompt souvent au moment où l’on commence à entrer en flow
- L’objectif n’est pas de maximiser le temps, mais la qualité maximale dans les limites des capacités cognitives
- L’effet composé de la réflexion et de l’apprentissage : les recherches d’Ericsson sur la pratique délibérée montrent que l’expertise ne vient pas du nombre d’heures travaillées, mais de la réflexion consciente
Les 4 stratégies de deep work selon Cal Newport
- Stratégie monastique (Monastic) : éliminer complètement le travail superficiel
- Le cas emblématique est Donald Knuth, qui a supprimé l’e-mail en 1990
- Stratégie bimodale (Bimodal) : séparer la semaine entre jours de deep work et jours de travail superficiel
- Exemple : injoignable du lundi au mercredi, puis réunions et e-mails les jeudi et vendredi
- Stratégie rythmique (Rhythmic) : faire du deep work chaque jour à la même heure, sans exception
- L’approche « ne brisez pas la chaîne » de Jerry Seinfeld
- Stratégie journalistique (Journalistic) : entrer immédiatement en deep work dès qu’un créneau libre apparaît
- Elle peut fonctionner même par blocs de 30 à 45 minutes, mais il existe en pratique un risque de confondre context switch et deep work
- Pour la plupart des développeurs, la stratégie rythmique est la plus efficace : l’essentiel est de préserver ses matinées pour coder sans céder à la tentation réactive de Slack
Pourquoi les engineering managers doivent s’y intéresser
- Quand le temps réel de codage d’un développeur n’est que de 52 minutes par jour, une seule interruption qui coûte plus de 23 minutes de reprise consomme presque la moitié du quota quotidien de code
- Expérience de TechSmith : en supprimant totalement les réunions, la productivité perçue augmente de 15 %, et 85 % des employés déclarent qu’ils remplaceraient les réunions par de la communication asynchrone
- Dans une enquête Microsoft menée auprès de 31 000 personnes, les réunions inefficaces arrivent en tête des freins à la productivité au travail
- Recommandations pour les managers :
- préserver des matinées sans interruption
- instaurer un no meeting day (par exemple le mercredi)
- faire de la communication asynchrone la règle par défaut plutôt que l’exception
- fixer des délais réalistes qui laissent une marge d’exploration créative
- Indicateurs pour mesurer l’effet : réduction du cycle time, satisfaction de l’équipe, score d’engagement, taux de bugs et part de rework, entre autres métriques de qualité
Conclusion
- Faire 3 à 4 heures de programmation profonde par jour n’est pas une question d’habitude, mais une limite physique de la charge cognitive
- L’essentiel consiste à optimiser les éléments contrôlables : couper les notifications, prévenir l’équipe qu’on répondra l’après-midi, négocier l’absence de réunions matinales deux fois par semaine, etc.
- 4 heures de deep work produisent toujours de meilleurs résultats que 8 heures de concentration « à moitié »
- Entrer plusieurs heures par jour en état de flow conduit à un code de meilleure qualité, à moins de risques de bugs, à des solutions plus innovantes et à une meilleure qualité de vie au travail
- Les codeurs ne sont pas des sprinteurs, mais des coureurs de fond : ils doivent préserver leur énergie
Note sur les assistants IA de code
- Des outils comme Copilot, Cursor ou Claude n’allongent pas le temps de deep work ; ils ne font que déplacer le centre de l’attention
- Examiner une sortie d’IA au lieu d’écrire le code depuis zéro demande le même contexte, le même jugement et le même niveau de concentration
- La limite des 3 à 4 heures ne dépend pas de la vitesse de frappe, mais de la limite du cerveau à maintenir des décisions de haute qualité dans la durée ; le fait que le code apparaisse plus vite n’y change rien
- L’IA est vraiment utile pendant les shallow hours : brouillons de documentation, génération de boilerplate, questions sur l’usage d’une bibliothèque, etc.
- En lui déléguant ces tâches, on peut préserver son budget de deep work pour la réflexion d’architecture et la résolution de problèmes complexes
- Le piège consiste à utiliser l’IA pour produire plus de code que ce qu’on peut traiter mentalement
- L’objectif n’est pas d’écrire plus de lignes de code par jour, mais de concentrer ses ressources cognitives limitées sur les décisions les plus importantes
Aucun commentaire pour le moment.