Pouvez-vous réellement produire un code de haute qualité si vous êtes privé de sommeil? [fermé]

37

J'ai entendu parler de programmeurs qui codent pendant deux jours sans dormir et qui boivent du café et Red Bull . Également dans des films comme The Social Network , dans une scène, ils montrent que Mark Zuckerberg programme depuis 36 heures. Aussi, j'ai lu quelque part que dans des entreprises comme Facebook, Google, Foursquare , etc., ils peuvent coder pendant plus de 24 heures sans dormir.

Est-ce vraiment vrai? Pouvez-vous réellement produire du code de haute qualité si vous êtes privé de sommeil? Des choses comme Red Bull peuvent-elles compenser le sommeil?

Peter Mortensen
la source
4
Holy Crap! Je ne pense pas que ce sont des humains / des programmeurs. Peut-être des extraterrestres? :)
Gopi
25
"The Social Network" n'est pas un documentaire. Ce n'est que vaguement basé sur les événements réels liés à la fondation de Facebook. En tant que stratagème marketing, l'aspect "histoire vraie" a été mis en avant, mais chaque fois que l'auteur et le réalisateur étaient coincés par un intervieweur, ils admettaient que c'était principalement leur imagination sur "ce qui aurait pu être".
Charles E. Grant
8
Cela devrait peut-être être déplacé vers sceptiques.stackexchange.com ...
Evan
6
Certains le peuvent, mais c'est parce qu'ils produisent normalement un code de qualité supérieure. Malheureusement, il est beaucoup plus courant de produire un code de qualité moyenne même lorsqu'il est complètement reposé ...
4
J'ai lu cette question le lendemain de mon réveil depuis 38 heures, dont 32 au travail. Je voulais dire quelque chose à ce sujet, mais au fond, toute programmation passée sans distraction est bonne pour votre sortie, mais lorsque vous êtes totalement fatigué, vous n'êtes pas non plus distrait. Vous pouvez toutefois construire, tester, déboguer, documenter et peaufiner si vous êtes obsédé par l’obtention de l’état souhaité.
Dlamblin

Réponses:

77

Tout simplement non . Coder pendant 36 heures n’a rien à voir avec la programmation, c’est plutôt un attribut humain. Très peu de personnes peuvent rester éveillées pendant 24 heures et même lorsqu'elles restent éveillées, leur esprit perd vraiment de la résolution de problèmes. Les conducteurs qui ont sommeil sont simplement frappés par une autre voiture. Les comptables somnolents font simplement des erreurs dans leurs calculs. De plus, de nombreux programmeurs somnolents écrivent un code de qualité inférieure.

PS: Il existe une maladie appelée insomnie qui vous fait dormir moins. Mais je ne pense pas que Google embauche des personnes atteintes d'une telle maladie. :)

Saeed Neamati
la source
28
+1: Les très bons programmeurs passent le plus clair de leur temps à réfléchir à un problème avant de toucher un compilateur. Quand ils le font, la solution est généralement bien pensée, simple, abstraite et facile à gérer, le codage devient alors trivial.
Justin Shield
1
@EOL: D assez vrai, cela devrait se lire "clavier"
Justin Shield
4
Selon ma propre expérience, vers 21 heures, après 12 heures, je suis fatigué, irritable, je ne peux pas penser correctement et je suis incapable d'écrire ou de déboguer. La maison et le sommeil sont loin plus efficaces que des bêtises comme tirer toute la nuit. Que cela soit fait et encore moins efficace est un mythe.
Rapidement maintenant
3
@quickly_now Exactement. Le code devient de pire en pire de manière exponentielle en fonction du temps. Donc, techniquement, vous pouvez coder aussi longtemps que vous êtes capable de rester assis devant un ordinateur. Mais alors, ne venez pas à SO et demandez comment votre fonction de tri O (n ^ n) peut être optimisée;).
Dr McKay
20
Attendez, vous êtes autorisé à dormir après seulement 24 heures de codage? Je savais que ce travail semblait louche quand j'ai commencé!
Nick Craver
41

C'est probablement l'un de ces mythes persistants bien connus. Vous en entendez beaucoup parler parce que c'est une idée convaincante, mais elle n'a aucun fondement réel.

Oh, bien sûr, peut-être qu'un jeune garçon récemment sorti du lycée peut réussir ce qui semble être une sorte de miracle de codage en 36 heures. Mais le code écrit de cette manière est-il maintenable? Est-ce même lisible? Est-ce que ça change? Suit-il des pratiques de programmation raisonnables? Est-ce documenté?

Twitter a piraté un site qui fonctionnait, puis l'a réécrit "correctement", car il est tombé lorsque la charge est devenue trop lourde. Facebook a mis en place son site d'origine dans un délai relativement court pour un tel projet, mais a ensuite fait appel à un groupe de nouveaux développeurs pour réécrire la plate - forme PHP sur laquelle le site Web était exécuté, car elle ne pouvait pas évoluer.

Les exceptions prouvent la règle.

Robert Harvey
la source
6
On pourrait également considérer ces raisons comme des raisons impérieuses de ne pas s’inquiéter de faire les choses correctement du premier coup, du moins pas lorsque vous créez potentiellement un nouveau marché.
Aaronaught
1
La réécriture sur Twitter n'était pas vraie selon le message que vous avez lié. Regardez la mise à jour.
jjnguy
@jjnguy: Très bien, mais l'exemple semble toujours pertinent, étant donné les problèmes de temps d'arrêt et d'évolutivité rencontrés par Twitter.
Robert Harvey
2
Cela ne mènera peut-être pas à un code de haute qualité, mais si vous maîtrisez vos bases et pouvez faire du TDD "dans votre sommeil", le code ne sera pas si mauvais. La grande chose que de coder en étant fatigué fait que votre cerveau est moins susceptible d'ignorer des pensées aléatoires et que vous devenez plus créatif. fr.wikipedia.org/wiki/Sleep_and_creativity
Ape-inago
29

La seule chose qui pourrait être vraie à propos de ce mythe est que les programmeurs fonctionnent mieux lorsqu'ils ne sont pas interrompus pendant une longue période. Au fur et à mesure que vous codez, plus vous pourrez jongler avec vos idées, plus vite vous pourrez coder car vous n'avez pas besoin de rechercher des informations telles que les utilisations des API ou la manière dont une partie différente du code a été écrite par vous-même ou quelqu'un d'autre. Je me rends compte que lorsque je suis interrompu, il faut toujours un certain temps mesurable pour revenir à toute vitesse, et si je fais quelque chose d'important (ou d'amusant), je vais parfois m'abstenir de rentrer à la maison à l'heure habituelle quand vos interruptions vont à la maison. Je suis également connu pour rester debout jusqu'à 3 ou 5 heures du matin pour la même raison.

Cependant, comme je l’ai dit, la rapidité et la qualité de votre code dépendent de l’attention que vous portez et du nombre de choses que vous pouvez jongler en mémoire. Lorsque le sommeil devient un problème, vous pouvez penser que vous travaillez à fond, mais ce n'est pas le cas. La plupart des logiciels développés, comme dans les exemples que vous avez fournis, démarrent rapidement, mais ils deviennent tout aussi rapides qu’ils deviennent un énorme problème de responsabilité et de maintenance.

Vous pouvez certainement produire beaucoup de code si vous travaillez beaucoup et, avec suffisamment d’effort, vous pouvez créer une fonctionnalité à la fois. Cependant, sans prêter attention à l'architecture et à la conception, vous ne produirez pas de logiciel facilement évolutif, maintenable ou extensible. Parlant d'expérience, il est BEAUCOUP plus difficile de penser à la conception et de jongler avec les composants / interfaces / couches d'abstraction dans votre tête (ou sur papier) plutôt que de continuer à écrire du code pur.

DXM
la source
3
+1 pour ajouter l’idée que le temps ininterrompu peut être du temps de qualité (mais seulement à des doses raisonnables).
Eric O Lebigot
1
La concentration en @ DXM aide beaucoup. Qualité du temps écoulé Quantité de temps
lovesh
1
@ Loveh - Je ne dirais pas exactement cela. (qualité du temps) x (quantité de temps) = résultats. Augmenter l'un ou l'autre augmente les résultats. Cependant, augmenter dans le temps diminue éventuellement la qualité. Notre objectif est toujours de maximiser les résultats.
DXM
13

Tout cela ressemble à une exagération d'être "dans la zone". Lorsque vous êtes entièrement concentré, en tant que codeur, le temps est déformé, les minutes deviennent des secondes, etc. Vous êtes probablement le plus productif possible. Il est parfois difficile d'entrer dans cet état et assez facile d'en sortir (facteurs externes principalement), mais quand vous êtes .... waouh!

MPelletier
la source
2
J'écrivais mon message en pensant à la manière d'inclure la phrase "dans la zone" lorsque vous avez posté ceci.
knb
J'allais simplement le poster en tant que commentaire car à ce stade, toutes les réponses sont "moi aussi", mais j'ai trouvé cela étrange que personne n'ait encore mentionné le phénomène.
MPelletier
2
En effet, si vous êtes dans la zone, il est beaucoup plus facile de coder très longtemps. Cependant, perdre le focus une fois que vous avez codé aussi longtemps est pour le moins désagréable.
mardi
10

Je peux - et je l'ai fait parfois - programme pour 36h d'affilée.
Je pense que la pire chose que j'ai jamais vécue a été une semaine avec environ 10 heures de sommeil.
La caféine et les boissons énergisantes n’ont pas aidé. En fait, à long terme, la caféine peut avoir des effets plutôt négatifs. Mon conseil est de boire beaucoup . Vous permet de rester hydraté et les allées aux toilettes sont un bel effet secondaire: vous vous étirez un peu les jambes et vous faites automatiquement de courtes pauses.

Cela étant dit, je trouve cela de plus en plus difficile. Je suppose que c'est une capacité qui est épuisée et éventuellement épuisée. Et peut-être que certains effets négatifs sur la santé - physique ou mental, à long ou à court terme, je ne le sais pas.
Ce que je peux dire, c'est que vous vous sentez comme un zombie et que vous continuerez à le ressentir les jours qui suivent un tel marathon. Personnellement, j'ai eu un très gros burnout après l'avoir fait fréquemment pendant environ un an.
C’est-à-dire que certaines personnes peuvent travailler efficacement pendant une telle période, mais cela a un coût .
C’était généralement le résultat d’une planification médiocre et du fait que nous n’avions aucune expérience en matière de combler les lacunes laissées par des responsables de projets non techniques, c’était la seule option.

Vous constaterez rarement que des codes de qualité sont produits lors de tels marathons. Cependant, la cause principale en est les circonstances dans lesquelles se déroulent ces marathons: Des situations dans lesquelles vous devez fournir les fonctionnalités X, Y et Z dans un délai très court. Personne ne se soucie vraiment de la qualité du code à ce stade. C'est pourquoi vous accumulez beaucoup de dettes techniques par le biais de correctifs rapides et autres.
Dans le même temps, cela indique la performance intacte du cerveau: les correctifs rapides et les piratages requièrent à la fois une vision d'ensemble et de la créativité.

N'oubliez pas que le code de qualité est rarement écrit en une seule fois. Surtout si le code a une longue durée de vie. La qualité du code est obtenue par la révision et la refactorisation. Personne ne prendra la peine de le faire 48h avant la date limite.

En bout de ligne, vous ne devriez travailler que le plus longtemps possible . Si vous ne pouvez travailler que pendant 4h, alors ok. Faites une pause et travaillez ensuite. Essayer de rester éveillé pendant 36 heures au cours desquelles vous avez 8h de travail est inutile. Vous doublez le travail si vous faites 4 séances de 4h et que vous utilisez les 20h restantes pour vous régénérer.
Si vous pouvez travailler aussi longtemps, cela signifie que vous êtes plus flexible pour répondre à la sous-estimation. Cependant, la solution à long terme améliore votre processus de planification et d’estimation. Si cela est impossible sur votre lieu de travail, changez de travail. Si les gens s'attendent à ce que vous travailliez de longues heures, changez de travail. Vous n'avez rien à prouver à personne.

back2dos
la source
Cela ressemble à un grand mensonge. Personne ne peut travailler pendant 36 heures et produire quelque chose d'utile
BЈовић
@VJovic: Eh bien, si vous le dites, alors je suppose que nous devrons tous y croire;)
back2dos
5

Les bons programmeurs peuvent en effet programmer pendant 36 heures. Cela ne signifie pas qu'ils peuvent produire leur meilleur code de qualité pendant 36 heures. Je ne suis pas un bon programmeur, et je l'ai fait plusieurs fois à l'université, et même à quelques reprises dans la trentaine, en essayant de corriger les bugs liés aux délais de livraison des navires. C'est généralement une idée stupide et reflète de faibles compétences en matière de planification et de planification.

Charles E. Grant
la source
1
Et ce n’est pas parce que vous le pouvez que vous êtes efficace , surtout au bout de 12 à 15 heures.
Rapidement maintenant
10
Les mauvais programmeurs peuvent aussi programmer pendant 36 heures. La durée du codage n'a rien à voir avec la qualité du codeur.
Marjan Venema
5

Vous pouvez rester éveillé et travailler pendant 36 heures si vous êtes en bonne santé. Mais pendant ce temps, vous ne pourrez pas écrire votre meilleur code ni résoudre des problèmes très compliqués. J'ai travaillé de très longues heures de temps en temps. La plupart du temps, il s'agissait de respecter certaines échéances. Mais le travail consistait alors principalement à ajouter des fonctionnalités mineures, telles que l’impression de listes, l’affinage de certaines mises en page. Rien où vous ayez besoin de beaucoup de réflexion, mais plutôt de beaucoup de frappe. Les principales caractéristiques et les parties compliquées des programmes étaient déjà terminées.

Parfois, votre manque de concentration est la raison principale des longues heures. Nous avions une fois une date limite le lendemain. Après une journée déjà très longue, nous avions terminé le tout et il était 2 heures du matin. Il ne restait plus qu'un méchant insecte. Mon patron avait rendez-vous avec le client à 9 heures du matin, donc il restait beaucoup de temps. Il m'a fallu plusieurs heures pour trouver et réparer quelque chose que j'aurais sinon réglé en une demi-heure. Je savais juste avec certitude que je serais capable de le trouver de toute façon et qu'il n'y avait aucune raison de laisser tomber mon patron, car de toute façon la nuit était finie de toute façon.

Thorsten Müller
la source
5

Oui. De nombreuses informations anecdotiques indiquent que c'est possible. Je doute que quiconque puisse physiquement prendre l'habitude de travailler au marathon. Les internes en médecine tirent ces types d’heures.

Êtes-vous susceptible de faire plus d'erreurs, probablement. Je suppose que tout cela suppose que vous puissiez écrire un code de qualité en premier lieu. Dans ces situations, vous êtes sous le feu des projecteurs et vous voulez le faire fonctionner. La qualité n'est pas une considération. Nous réglerons le problème une fois le financement obtenu.

JeffO
la source
4
+1 pour la référence au personnel médical. Je pense que les médecins d’hôpital surchargés le font régulièrement ... en travaillant de nuit dans une nuit stressante, puis en journée de travail ... un moyen sûr de s’épuiser au bout de quelques mois, voire d’années.
knb
6
Maintenant, il y a une pensée réconfortante;) Internes privés de sommeil et personnes atteintes de maladies graves. Essayez de réparer ces erreurs "plus tard".
Leigh
1
Les risques posés par les stagiaires privés de sommeil sont bien connus et de nombreuses organisations éliminent cette pratique. Cela tient en partie parce que les médecins chargés de la formation ont mis en place ces longs quarts de travail.
BillThor
4

Ce n'est pas impossible et c'est arrivé en vrai. Puisque le chapitre est long, permettez-moi de citer le paragraphe actuel:

Les membres du groupe très uni s'appellent eux-mêmes "hackers". Au fil du temps, ils ont également étendu la description du "pirate informatique" à Stallman. Ce faisant, ils ont inculqué Stallman aux traditions éthiques de "l'éthique des hackers". Stallman apprit que devenir un pirate informatique signifiait plus que simplement écrire des programmes. Cela signifiait écrire les meilleurs programmes possibles. Cela signifiait rester assis à un terminal pendant 36 heures d'affilée si c'était ce qu'il fallait pour écrire les meilleurs programmes possibles. Plus important encore, cela signifiait avoir accès aux meilleurs ordinateurs possibles et aux informations les plus utiles à tout moment. Les pirates ont parlé ouvertement de changer le monde à l'aide de logiciels, et Stallman a appris le dédain instinctif des pirates informatiques à l'égard de tout obstacle empêchant un pirate informatique de remplir cette noble cause. Le principal de ces obstacles était un logiciel médiocre,

Bien sûr, cela ne signifie pas que c'est une règle unique pour tous. Certaines personnes peuvent le faire, d'autres non. Le plus important est de ne pas vous interrompre et de travailler pendant les périodes où vous vous sentez très productif. Ainsi, vous pouvez essayer par vous-même et tirer les conclusions :)

Sakis
la source
3

Je suppose que c'est possible, si vous êtes une machine - je ne doute pas que certains puissent le faire. Mais l'expérience m'a appris que la grande majorité des programmeurs écriront du code pire peu de temps après les 8 à 10 heures et du code horrible après les 16 heures.

Les quelques fois où notre équipe a été contrainte de passer la nuit blanche, nous avons en fait eu du code qui devait être annulé.

Kaleb Brasee
la source
Eh
4
... sur la base de mes expériences récentes avec Facebook, je dirais que cela correspond assez à mon argument. J'ai eu environ 3 ou 4 erreurs en utilisant différentes parties de Facebook aujourd'hui.
Kaleb Brasee
3
@ Loveh "On dit qu'ils le font" et "ils le font" sont deux choses différentes.
Scott C Wilson
3

J'en doute pour être honnête. En fait, malgré les mythes et les histoires selon lesquelles des personnes atteignant X, Y et Z ont été éveillées pendant 24 heures, elles se trouvent dans des circonstances extrêmes et sont rares.

Il y a bien longtemps, je fournissais un groupe de dactylographie à un cabinet d'avocats qui demandait parfois à des gens de tirer tous les veilleurs pour essayer de faire sortir des choses à des moments particuliers. Quiconque passait des heures folles à rédiger des documents finissait généralement par les envoyer pour que leurs modifications effectuées du jour au lendemain soient inversées. À mon avis, il n’est pas possible d’agir régulièrement à un niveau élevé pendant plus de 12 heures à la fois (et même c’est excessif) en surmontant un manque de sommeil en augmentant vos niveaux de caféine. Je pense que c’est une histoire que les gens aiment raconter, mais s’ils sont honnêtes, ils admettront que leur travail moyen sur des sessions longues, quel que soit leur travail, qu’il s’agisse de coder ou d’écrire des documents juridiques, est rarement, si jamais, suffisant. correspondre à leur sortie si ils ont obtenu un repos suffisant.

Les codeurs n'ont rien de spécial, aussi bons qu'ils soient, comme les conducteurs, les opérateurs de machinerie lourde, ils sont sujets à la fatigue et je serais abasourdi si quelqu'un pouvait prouver qu'un codeur peut fournir une sortie de haute qualité sans repos en environ 12 heures. .

Temptar
la source
2

Lorsque j’étudiais la programmation à l’université, il y avait quelques nuits où je me sentais plus productif que pendant la journée. Cela a à voir avec le fait qu'il y a moins de distractions la nuit, la mauvaise herbe m'a rendu assez confortable pour rester assis et je ne me suis pas levée jusqu'à 14h de toute façon, donc je n'étais pas trop fatiguée. Je pouvais coder jusqu'à 8h du matin avant d'avoir une faim insensée pour mon petit-déjeuner. Cela dit, le lendemain, je serais bloqué mentalement à 17 heures et il n’y avait aucun moyen d’être productif. Programmer la nuit peut être plus productif, mais vous priver de sommeil ne fait pas augmenter la qualité du code et vous ne prévoyez jamais d'être fatigué lors du codage.

Philluminati
la source
2

De nombreuses personnes créatives et moi-même démontrons les caractéristiques de la personnalité bipolaire. Lors de la conception d'un logiciel, j'ai tendance à suivre l'algorithme de Feynman:

  1. Notez le problème. (Minutes)

  2. Pense vraiment fort. (Entre jours et années)

  3. Notez la solution. (Journées)

Un épisode hypomaniaque avec sommeil considérablement réduit (caféine ou non) est tout simplement le ticket pour finir n ° 3.

Jon Purdy
la source
2

S'il vous plaît voir ce post connexe dans Skeptics.SE: Est-ce que le Ballmer Peak est réel? , et en particulier cette réponse de ESultanik .

Pourquoi est-ce que je pense que ces deux questions sont liées?Il me semble que la déficience provoquée par la privation de sommeil ressemble un peu à la ivresse, bien que je n’aie aucune référence pour étayer ma demande.

Citant la référence citée par ESultanik,

... une consommation modeste d'alcool inhibe les aspects de la créativité basés principalement sur le processus secondaire (préparation, certaines parties de l'éclairage et la vérification) et désinhibe ceux basés principalement sur le processus principal (incubation, certaines parties de l'éclairage et la restitution).

Je dirais qu’il est peut-être préférable de créer des modèles d’architecture abstraite sans sommeil, mais le code source saisi au clavier serait toujours en état d’ivresse.

rwong
la source
2

Quand on est obligé de coder pendant 36 heures, c'est généralement à cause d'un délai d'expédition du produit. Quand on est dans un tel délai, la qualité du code est généralement la première chose à jeter. "Juste le faire" est le mantra. "Nous corrigerons cela dans la version 2" est un autre mantra.

Donc, en général, quand on code 36 heures d'affilée, la qualité du code en souffre .. mais cela n'a pas d'importance du point de vue commercial .. car si vous n'envoyez rien, même un produit cassé, vous risquez de ne pas être en affaires. faire le bien.

Quand on VEUT coder pendant 36 heures d'affilée, c'est parce que vous avez un fort pic créatif et que vous ne voulez pas l'interrompre. Vous n'écrirez pas de code de qualité pendant ces 36 heures, mais vous écrirez du code de création. Vous revenez ensuite plus tard et regardez ce code et vous vous demandez comment il fonctionne.

La créativité fait partie de ces choses qui vont souvent très vite. Vous ne pouvez pas le contrôler, alors vous en profitez quand il se montre. Vous pouvez toujours corriger le code lorsque vous êtes moins créatif.

Erik Funkenbusch
la source
1

Il y a quelques mois, j'étais en train de boire avec mes collègues. Le lendemain, nous sommes rentrés au bureau, la gueule de bois ... mais à notre grand étonnement, nous avons bouclé un nombre record d'insectes.

À la surface, ces bugs n'étaient pas faciles à trouver et la plupart n'avaient aucune étape de réplication, mais être toujours «en dehors de notre esprit» doit nous faire penser de manière inattendue lorsqu'il est question de corriger les bugs.

Même si nous n'étions pas «privés de sommeil», nous n'étions toujours pas dans le bon état d'esprit pour travailler sur le code ... c'est bizarre ce qui s'est passé ce jour-là, nous le mentionnons toujours.

Oh, et pour les penchants, la plupart d’entre nous profitaient de JD & Coke :)

Dal
la source
+1 Je ne suis pas sûr que cela réponde à la question, mais j'ai quand même bien aimé la réponse :-)
Danny Varod le
0

Je pense que travailler de manière productive aussi longtemps sans dormir est impossible pour la plupart des gens.

Mais je pense que vous pouvez faire un travail incroyable avec, disons, 3-4 heures de bon sommeil. Cela fonctionne même pendant plusieurs jours consécutifs de travail (intellectuel) intense avec peu de sommeil.

Cependant, pour moi, cela doit être suivi d’une période de récupération; par exemple, quelques nuits avec les 7 à 8 heures de sommeil habituelles.

knb
la source
Ceci est le programme typique d'un étudiant CS, n'est-ce pas?
user16764