J'ai entendu parler de programmeurs codant pendant deux jours sans dormir et boire du café et Red Bull . Aussi dans des films comme The Social Network , dans une scène ils montrent que Mark Zuckerberg a été programmé pendant 36 heures. J'ai aussi lu quelque part que dans des entreprises comme Facebook, Google, foursquare , etc., ils peuvent coder 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?
Simplement Non. Le codage pendant 36 heures n'a rien à voir avec la programmation, c'est plutôt un attribut de l'humain. Très peu de gens peuvent rester éveillés pendant 24 heures et même lorsqu'ils restent éveillés, leur esprit perd vraiment ses compétences en résolution de problèmes. Les conducteurs somnolents frappent simplement d'autres voitures. Les comptables qui ont sommeil, font simplement des erreurs dans leurs calculs. De nombreux programmeurs également endormis écrivent moins de code de qualité.
PS: Il y a une maladie appelée insomnie qui vous fait moins dormir. Mais je ne pense pas que Google embauche des personnes atteintes d'une telle maladie. :)
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 en fait aucune base réelle.
Oh, bien sûr, peut-être qu'un jeune enfant fraîchement sorti du lycée peut réaliser ce qui semble être une sorte de miracle de codage en 36 heures. Mais le code écrit de cette façon est-il maintenable? Est-il même lisible? Échelle-t-elle? Suit-il des pratiques de programmation sensées? Est-ce documenté?
Twitter a piraté un site qui fonctionnait, puis a fini par le réécrire de la manière "correcte", car il est tombé lorsque la charge est devenue trop importante. Facebook a mis en place leur site d'origine dans un laps de temps relativement court pour un tel projet, mais a ensuite amené un tas de nouveaux développeurs pour réécrire la PHP que le le site Web fonctionnait, car il ne pouvait pas évoluer.
Les exceptions prouvent la règle.
La seule partie qui pourrait être vraie à propos de ce mythe est que les programmeurs fonctionnent mieux lorsqu'ils sont ininterrompus pendant une période de temps prolongée. Au fur et à mesure que vous codez, plus vous pouvez jongler avec la tête, plus vous pouvez coder rapidement, car vous n'avez pas besoin de rechercher des choses comme les utilisations de l'API ou la façon dont une partie différente du code a été écrite par vous ou quelqu'un d'autre. Je trouve que lorsque je suis interrompu, il faut toujours un certain temps mesurable pour revenir à pleine vitesse, et si je fais quelque chose d'important (ou de amusant), parfois je renoncerai à rentrer à la maison à l'heure normale car après les heures lorsque vos interruptions rentrent chez vous. J'ai également été connu pour rester jusqu'à 3 ou 5 heures du matin pour la même raison.
Cependant, comme je l'ai dit, la vitesse et la qualité de votre code dépendent de l'attention que vous portez et du nombre de choses que vous pouvez jongler avec la mémoire. Lorsque le sommeil devient un problème, vous pensez peut-être que vous travaillez à pleine capacité, mais ce n'est vraiment pas le cas. La plupart des logiciels développés comme dans les exemples que vous avez fournis démarrent rapidement, mais tout aussi vite, cela finit par être 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 lancer fonctionnalité après fonctionnalité. Mais sans prêter attention à l'architecture/la conception, vous ne produirez pas de logiciels facilement évolutifs, maintenables ou extensibles. En 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) que de continuer à écrire du code pur.
Le tout sonne juste comme une exagération d'être "dans la zone." Quand vous êtes entièrement concentré, en tant que codeur, le temps est déformé, les minutes deviennent des secondes, etc. Vous êtes probablement à votre le plus productif. Il est parfois difficile de se retrouver dans cet état, et assez facile à sortir (principalement des facteurs externes), mais quand vous l'êtes .... wow!
Je peux - et je l'ai fait parfois - programmer pour 36h d'affilée.
Je pense que la pire chose que j'aie jamais connue était une semaine avec environ 10 heures de sommeil.
Pour moi, la caféine et les boissons énergisantes n'ont pas aidé. En fait, à si long terme, la caféine peut avoir des effets plutôt négatifs. Mon conseil est de boire beaucoup . Vous garde hydraté et les promenades aux toilettes sont un effet secondaire agréable: 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 finalement épuisée. Et peut-être que cela a des effets négatifs sur la santé - physique ou mental, à long ou à court terme, je ne peux pas le dire.
Ce que je peux dire, c'est que vous vous sentez comme un zombie et vous continuerez à vous sentir comme ça les jours après un tel marathon. Personnellement, j'ai eu un très gros burnout après avoir fait cela fréquemment pendant environ un an.
C'est-à-dire: Certaines personnes peuvent travailler efficacement pendant un tel laps de temps, mais cela a un coût.
C'était généralement la conséquence d'une mauvaise planification et n'ayant pas d'expérience pour combler les lacunes laissées par les chefs de projet non techniques, c'était la seule option.
Maintenant, vous trouverez rarement du code de qualité produit pendant de tels marathons. Cependant, la cause principale de ceci est les circonstances dans lesquelles ces marathons se produisent: Situations, où 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 grâce aux correctifs rapides et autres hacks.
En même temps, cela indique la performance intacte du cerveau: les Quickfixes et les hacks nécessitent à la fois une vue d'ensemble et de la créativité.
N'oubliez pas que ce 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 une date limite.
La ligne de fond est la suivante: vous ne devez travailler que le plus longtemps possible et pas plus longtemps. Si vous ne pouvez travailler que pendant 4h, alors ok. Faites une pause et travaillez par la suite. Essayer de rester éveillé pendant 36 heures pendant lesquelles vous effectuez 8 heures de travail est inutile. Vous obtenez deux fois plus de travail si vous effectuez 4 séances de 4h chacune et utilisez les 20h restantes pour vous régénérer.
Si vous pouvez travailler de si longues heures, 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 d'emploi. Si les gens s'attendent à ce que vous travailliez de si longues heures, changez d'emploi. Vous n'avez rien à prouver à personne.
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 suis pas un bon programmeur, et je l'ai fait plusieurs fois à l'université, et même quelques fois dans la trentaine en essayant de corriger les bugs pour les délais de livraison. C'est généralement une idée stupide et reflète de mauvaises compétences en planification et en planification.
Vous pouvez rester éveillé et travailler pendant 36 heures si vous êtes en bonne santé. Mais pendant ce temps, vous n'écrirez pas votre meilleur code ou ne résoudrez pas des problèmes très compliqués. J'ai travaillé de très longues heures de temps en temps. La plupart du temps, c'était pour respecter des délais. Mais le travail consistait alors principalement à ajouter des fonctionnalités mineures comme l'impression de certaines listes, le polissage de certaines dispositions. Rien où vous avez besoin de beaucoup de réflexion, plus comme beaucoup de frappe. Les principales fonctionnalités et parties compliquées des programmes étaient déjà terminées.
Parfois, votre manque de concentration est la principale raison 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 bug. Mon patron avait rendez-vous avec le client à 9 heures du matin, donc il y avait beaucoup de temps. Il m'a fallu plusieurs heures pour trouver et réparer quelque chose qu'autrement j'aurais réparé en une demi-heure. Je savais juste avec certitude que je serais en mesure de le trouver de toute façon et il n'y avait aucune raison de laisser tomber mon patron, car de toute façon la nuit était finie de toute façon.
Oui. De nombreuses informations anecdotiques indiquent que c'est possible. Je doute que quiconque puisse physiquement prendre l'habitude des marathons de travail. Les stagiaires en médecine tirent ce type d'heures.
Êtes-vous susceptible de faire plus d'erreurs, probablement. Je suppose que tout cela suppose que vous pouvez écrire du code de qualité en premier lieu. Dans ces situations, vous êtes sous le pistolet et vous voulez juste le faire fonctionner. La qualité n'est pas une considération. Nous allons le réparer après avoir obtenu du financement.
Ce n'est pas impossible et c'est c'est arrivé en vrai. Puisque le chapitre est long, permettez-moi de citer le paragraphe actuel:
Les membres du groupe soudé se sont appelés "hackers". Au fil du temps, ils ont également étendu la description du "pirate" à Stallman. Ce faisant, ils inculquèrent Stallman aux traditions éthiques de "l'éthique des hackers". Être un pirate informatique signifiait plus que simplement écrire des programmes, a appris Stallman. Cela signifiait écrire les meilleurs programmes possibles. Cela signifiait rester assis à un terminal pendant 36 heures d'affilée si c'est ce qu'il fallait pour écrire les meilleurs programmes possibles. Plus important encore, cela signifiait avoir accès à tout moment aux meilleures machines possibles et aux informations les plus utiles. Les pirates ont parlé ouvertement de changer le monde grâce aux logiciels, et Stallman a appris le mépris instinctif des hackers pour tout obstacle qui empêchait un hacker de remplir cette noble cause. Le principal de ces obstacles était le mauvais logiciel, la bureaucratie académique et les comportements égoïstes.
Bien sûr, cela ne signifie pas qu'il s'agit d'une règle unique pour tous. Certaines personnes peuvent le faire, d'autres non. La chose la plus importante est de ne pas être interrompu et de travailler pendant les périodes où vous vous sentez très productif. Ainsi, vous pouvez essayer par vous-même et tirer des conclusions :)
J'en doute pour être honnête. En fait, malgré les mythes et les histoires selon lesquels les personnes qui ont réussi X, Y et Z sont éveillées depuis 24 heures, elles se trouvent dans des circonstances extrêmes et sont rares.
Il y a très longtemps, j'avais l'habitude de fournir un pool de dactylographie à un cabinet d'avocats qui avait parfois des gens qui tiraient tous les soirs pour essayer de sortir des trucs à des moments particuliers. Quiconque a passé des heures folles à rédiger des documents finissait généralement par envoyer ces documents pour que leurs changements du jour au lendemain soient inversés. À mon avis, il n'est pas possible de performer régulièrement à un niveau élevé pendant plus d'environ 12 heures à la fois (et même c'est excessif) pour survivre à un manque de sommeil en augmentant votre taux 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 long-courriers, quel que soit le travail, que ce soit le codage ou la rédaction de documents juridiques, est rarement, voire jamais, assez bon pour correspondre à leur sortie s'ils ont obtenu un repos suffisant.
Les codeurs n'ont rien de spécial, peu importe leur qualité, comme les conducteurs, comme les opérateurs de machinerie lourde, ils sont sujets à la fatigue et je serais stupéfait si quelqu'un pouvait prouver qu'un codeur pouvait fournir une sortie de haute qualité sans repos dans les 12 heures environ .
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 un code pire peu après la marque de 8 à 10 heures, et un code horrible après la marque de 16 heures.
Les quelques fois où notre équipe a été forcée de tirer une nuit blanche, nous nous sommes finalement retrouvés avec un code qui devait être annulé.
Moi et beaucoup d'autres personnes créatives démontrons les caractéristiques de la personnalité bipolaire. Lors de la conception de logiciels, j'ai tendance à suivre l'algorithme de Feynman:
Notez le problème. (Minutes)
Réfléchissez bien. (Entre jours et années)
Notez la solution. (Journées)
Un épisode hypomaniaque avec un sommeil considérablement réduit (caféine ou non) est juste le billet pour terminer # 3.
Veuillez consulter cet article connexe dans Skeptics.SE: Le Ballmer Peak est-il réel? , et en particulier cette réponse par ESultanik .
Pourquoi est-ce que je pense que ces deux questions sont liées? Il me semble que la déficience causée par la privation de sommeil est quelque peu similaire à l'ivresse, bien que je n'ai pas de références pour étayer ma demande .
Citant la référence citée par ESultanik,
... une consommation modeste d'alcool inhibe certains aspects de la créativité principalement basés sur le processus secondaire (préparation, certaines parties de l'éclairage et vérification) et désinhibe ceux basés principalement sur le processus primaire (incubation, certaines parties de l'éclairage et restitution).
Je dirais que l'on peut être mieux à créer des modèles d'architecture abstraite tout en étant privé de sommeil, mais le code source réel tapé sur le clavier serait toujours en état d'ébriété.
Quand on est obligé de coder pendant 36 heures, c'est généralement en raison d'une date limite pour expédier le produit. Quand on est dans un tel délai, la qualité du code est généralement la première chose jetée. "Faites-le simplement" est le mantra. "Nous le corrigerons dans la version 2" est un autre mantra.
Donc, généralement, quand on code pendant 36 heures d'affilée, la qualité du code en souffre .. mais cela n'a pas d'importance du point de vue commercial .. parce que si vous n'envoyez pas quelque chose, même quelque chose de cassé, vous pourriez ne pas être en affaires pour le faire correctement.
Quand on veut coder pendant 36 heures d'affilée, c'est parce que vous avez un fort pic créatif en cours, et vous ne voulez pas l'interrompre. Vous n'écrirez pas de code de qualité pendant ces 36 heures, mais vous écrirez du code créatif. Vous revenez ensuite plus tard et regardez ce code et vous vous demandez comment il fonctionne même.
La créativité est l'une de ces choses qui surviennent souvent par à-coups. 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.
Quand 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, l'herbe m'a mis assez à l'aise pour m'asseoir et je ne me suis pas levé ce jour-là jusqu'à 14 heures, donc je n'étais pas trop fatigué. Je pouvais coder jusqu'à 8 heures du matin avant d'avoir faim pour mon petit déjeuner. Cela dit, le lendemain, je m'effondrerais mentalement à 17 heures et il n'y avait aucun moyen d'être productif. La programmation de nuit peut être plus productive, mais vous priver de sommeil n'augmente jamais la qualité du code et vous ne prévoyez jamais d'être fatigué lors du codage.
Il y a quelques mois, je sortais avec mes collègues en train de boire. Le lendemain, nous sommes revenus au bureau, suspendus ... mais à notre grand étonnement, nous avons fermé un nombre record de bugs.
En surface, ces bogues n'étaient pas faciles à trouver et la plupart n'avaient pas d'étapes de réplication, mais être toujours `` hors de notre esprit '' devait nous faire `` sortir des sentiers battus '' lorsqu'il s'agissait de corriger les bogues.
Bien que nous n'ayons pas été "privés de sommeil", nous n'étions toujours pas dans le bon état d'esprit pour travailler sur le code ... c'est juste bizarre ce qui s'est passé ce jour-là, nous le mentionnons toujours.
Oh, et pour les plus enclins, la plupart d'entre nous profitaient au maximum de JD & Coke :)
Je pense que travailler de manière productive pendant si longtemps sans dormir longtemps 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 la suite; disons, quelques nuits avec les 7 à 8 heures de sommeil habituelles.