È possibile produrre codice di alta qualità se si è privati del sonno? [chiuso]

36

Ho sentito parlare di programmatori che codificano per due giorni senza dormire e bevendo caffè e Red Bull . Anche in film come The Social Network , in una scena mostrano che Mark Zuckerberg ha programmato per 36 ore. Inoltre ho letto da qualche parte che in aziende come Facebook, Google, foursquare , ecc. Possono codificare per più di 24 ore senza dormire.

È proprio vero? È possibile produrre codice di alta qualità se si è privati del sonno? Cosa può fare la Red Bull per dormire?

    
posta Peter Mortensen 14.09.2014 - 19:03
fonte

17 risposte

76

Semplicemente No . La codifica per 36 ore non ha nulla a che fare con la programmazione, piuttosto è un attributo dell'umano. Pochissime persone possono rimanere svegli per 24 ore e anche quando sono svegli, la loro mente perde davvero le capacità di risoluzione dei problemi. I guidatori che sono assonnati, semplicemente colpiscono altre auto. Contabili che sono assonnati, semplicemente commettono errori nei loro calcoli. Anche molti programmatori quando sono assonnati, scrivono meno codice di qualità.

PS: c'è una malattia chiamata insonnia che ti fa dormire di meno. Ma non credo che Google assuma persone con tale malattia. :)

    
risposta data 30.07.2011 - 07:40
fonte
41

È probabilmente uno di quei miti conosciuti e persistenti. Ne hai sentito parlare molto perché è un'idea convincente, ma in realtà non ha una base reale.

Oh, certo, forse un ragazzino appena uscito dal liceo può tirare fuori quella che sembra essere una sorta di miracolo della codifica in 36 ore. Ma il codice scritto in quella moda è mantenibile? È persino leggibile? Scala? Seguono pratiche di programmazione sensate? È documentato?

Twitter ha hackerato insieme un sito che funzionava, e poi lo ha riscritto in modo "corretto", perché è caduto quando il carico è diventato troppo grande. Facebook ha messo insieme il loro sito originale in un periodo relativamente breve di tempo per un tale progetto, ma successivamente ha portato un gruppo di nuovi sviluppatori a rewrite la piattaforma PHP su cui il sito Web era in esecuzione, perché non sarebbe scalabile.

Le eccezioni dimostrano la regola.

    
risposta data 27.05.2013 - 04:23
fonte
29

L'unica parte che potrebbe essere vera su questo mito è che i programmatori ottengono il meglio quando sono ininterrotti per un lungo periodo di tempo. Mentre stai programmando, più cose riesci a destreggiarti nella testa, più velocemente puoi codificare perché non devi cercare cose come gli usi API, o come una parte diversa del codice è stata scritta da te o da qualcun altro. Trovo che quando viene interrotto, ci vuole sempre un po 'di tempo misurabile per tornare alla massima velocità, e se sto facendo qualcosa di importante (o divertente), a volte rinuncerò a tornare a casa in orario normale perché dopo ore è quando le interruzioni vanno a casa. Sono anche conosciuto per essere rimasto sveglio fino alle 3 o alle 5 del mattino per lo stesso motivo.

Tuttavia, come ho detto, la velocità e la qualità del codice dipendono dalla quantità di attenzione che si paga e dal numero di cose che si possono destreggiare nella memoria. Quando il sonno diventa un problema, puoi pensare di lavorare a pieno regime ma in realtà non lo sei. La maggior parte del software sviluppato come negli esempi che hai fornito, si avvia velocemente, ma proprio come i digiuni si finisce per essere un enorme problema di responsabilità e manutenzione.

Puoi sicuramente produrre un sacco di codice se lavori molto, e con abbastanza impegno puoi eseguire una funzione dopo l'altra. Ma senza prestare attenzione all'architettura / design non produrrà software facilmente scalabile, manutenibile o estensibile. Parlando dall'esperienza, è MOLTO più difficile pensare al design e manipolare componenti / interfacce / strati di astrazione nella tua testa (o sulla carta) piuttosto che continuare a scrivere codice puro.

    
risposta data 30.07.2011 - 08:18
fonte
13

L'intera faccenda sembra un'esagerazione di essere "nella zona." Quando sei completamente concentrato, come programmatore, il tempo è deformato, i minuti diventano secondi, ecc. probabilmente al massimo della produttività. A volte è difficile entrare in quello stato, e abbastanza facile da uscire (per lo più fattori esterni), ma quando sei .... wow!

    
risposta data 30.07.2011 - 15:00
fonte
10

Posso - e fatto a volte - programmare per 36 ore di fila.
Penso che la cosa peggiore che abbia mai vissuto sia stata una settimana con circa 10 ore di sonno o giù di lì.
Per me, la caffeina e le bevande energetiche non hanno aiutato. In effetti, a lungo termine, la caffeina può avere effetti piuttosto negativi. Il mio consiglio è di bere un lotto . Ti mantiene idratato e le passeggiate in bagno sono un piacevole effetto collaterale: allunghi un po 'le gambe e fai automaticamente brevi pause.

Detto questo, lo trovo sempre più difficile. Suppongo che sia una capacità, che è prosciugata e alla fine esaurita. E forse ha degli effetti negativi sulla salute - fisici o mentali, a lungo o breve termine, non posso dirlo.
Quello che posso dire è che ti senti uno zombi e continuerai a sentirti così nei giorni successivi a una simile maratona. Personalmente, ho avuto un grande burnout dopo averlo fatto spesso per circa un anno.
Vale a dire: Alcune persone possono lavorare in modo efficiente per un tale periodo di tempo, ma a un costo .
Di solito era la conseguenza di una pianificazione inadeguata e non avendo avuto esperienza nel riempire gli spazi lasciati dai lead di progetto non tecnici, era l'unica opzione.

Ora raramente troverai codice di qualità prodotto durante tali maratone. Tuttavia, la causa principale di ciò sono le circostanze in cui si verificano quelle maratone: Situazioni, in cui è necessario fornire le caratteristiche X, Y e Z entro un lasso di tempo molto breve. A questo punto a nessuno importa veramente la qualità del codice, motivo per cui accumuli un sacco di debito tecnico attraverso i quickfix e altri hack.
Allo stesso tempo questo indica le prestazioni intatte del cervello: correzioni rapide e hack richiedono sia una visione d'insieme che una creatività.

Non dovresti dimenticare che raramente il codice qualità viene scritto in una singola analisi. Soprattutto se il codice ha una lunga durata. La qualità del codice viene raggiunta attraverso la revisione e il refactoring. Nessuno si preoccuperà di farlo 48 ore prima di una scadenza.

La linea di fondo è: dovresti lavorare il più a lungo possibile e non più a lungo . Se puoi lavorare solo per 4 ore, allora ok. Prenditi una pausa e lavora in seguito. Cercare di rimanere sveglio per 36 ore entro le quali si ottengono 8 ore di lavoro è inutile. Ottieni il doppio del lavoro se fai 4 sessioni da 4 ore ciascuna e usa le restanti 20 ore per rigenerare.
Se riesci a lavorare così a lungo, significa che sei più flessibile nel rispondere alla sottovalutazione. Tuttavia, la soluzione a lungo termine sta migliorando il processo di pianificazione e stima. Se è impossibile sul posto di lavoro, cambia lavoro. Se le persone si aspettano che tu lavori così lunghe ore, cambia lavoro. Non devi dimostrare nulla a nessuno.

    
risposta data 31.07.2011 - 11:19
fonte
5

I buoni programmatori possono effettivamente programmare per 36 ore. Ciò non significa che possano produrre il loro codice di migliore qualità per 36 ore. Sono non un buon programmatore, e l'ho fatto diverse volte al college, e anche un paio di volte nei miei 30 anni quando cercavo di correggere i bug per le scadenze delle navi. In genere è un'idea stupida e riflette le scarse capacità di pianificazione e pianificazione.

    
risposta data 30.07.2011 - 08:05
fonte
5

Puoi rimanere sveglio e lavorare per 36 ore se sei sano. Ma in questo momento non scriverai il tuo codice migliore o risolverai problemi molto complicati. Ho lavorato per ore molto lunghe una volta ogni tanto. Il più delle volte questo è stato per mantenere alcune scadenze. Ma il lavoro allora consisteva principalmente nell'aggiungere funzionalità minori come la stampa di alcune liste, la lucidatura di alcuni layout. Niente dove hai bisogno di molto pensare, più come un sacco di digitazione. Le caratteristiche principali e le parti complicate dei programmi dove è già finito.

A volte la mancanza di concentrazione è la ragione principale delle lunghe ore. Una volta avevamo una scadenza il giorno successivo. Dopo una giornata già molto lunga avevamo finito il tutto ed erano le 2 del mattino. C'era rimasto solo un brutto insetto. Il mio capo aveva un appuntamento con il cliente alle 9 del mattino, quindi c'era un sacco di tempo. Mi ci sono volute diverse ore per trovare e sistemare qualcosa che altrimenti avrei risolto in mezz'ora. Sapevo solo di essere in grado di trovarlo comunque e non c'era motivo di lasciar cadere il mio capo, dato che in qualche modo la notte era sparita comunque.

    
risposta data 30.07.2011 - 11:59
fonte
5

Sì. Un sacco di informazioni aneddotiche indicano che può farlo. Dubito che qualcuno possa fisicamente prendere un'abitudine dalle maratone di lavoro. Gli stagisti medici trascinano questi tipi di ore.

Probabilmente farai più errori, probabilmente. Immagino che tutto questo presuppone che tu possa scrivere codice di qualità in primo luogo. In queste situazioni, sei sotto la pistola e vuoi solo farlo funzionare. La qualità non è una considerazione. Lo sistemeremo dopo aver ottenuto i finanziamenti.

    
risposta data 30.07.2011 - 15:09
fonte
4

Non è impossibile e è successo in realtà. Dato che il capitolo è lungo, lasciatemi citare il paragrafo attuale:

Members of the tight-knit group called themselves " hackers." Over time, they extended the "hacker" description to Stallman as well. In the process of doing so, they inculcated Stallman in the ethical traditions of the "hacker ethic ." To be a hacker meant more than just writing programs, Stallman learned. It meant writing the best possible programs. It meant sitting at a terminal for 36 hours straight if that's what it took to write the best possible programs. Most importantly, it meant having access to the best possible machines and the most useful information at all times. Hackers spoke openly about changing the world through software, and Stallman learned the instinctual hacker disdain for any obstacle that prevented a hacker from fulfilling this noble cause. Chief among these obstacles were poor software, academic bureaucracy, and selfish behavior.

Ovviamente questo non significa che questa è una regola per tutti. Alcune persone possono farlo, mentre altri no. La cosa più importante è non rimanere interrotti e lavorare durante i periodi in cui ti senti molto produttivo. Quindi, puoi provare da solo e trarre le conclusioni:)

    
risposta data 30.07.2011 - 11:59
fonte
3

Suppongo sia possibile, se sei una macchina - non dubito che alcuni possano farlo. Ma l'esperienza mi ha insegnato che la vasta maggioranza dei programmatori scriverà codice peggiore poco dopo il voto da 8 a 10 ore e un codice orribile dopo il limite delle 16 ore.

Le poche volte in cui il nostro team è stato costretto a chiudere la scena, in realtà abbiamo trovato un codice che doveva essere ripristinato.

    
risposta data 30.07.2011 - 07:24
fonte
3

Ne dubito che sia onesto. Infatti, nonostante i miti e le storie sulle persone che hanno raggiunto X, Y e Z dopo essere stati svegli per 24 ore, si trovano in circostanze estreme e sono rari.

Tornare indietro nel tempo, fornivo un pool di battute per un avvocato che di tanto in tanto faceva tirar fuori tutti i nottambuli per cercare di ottenere cose per periodi particolari. Chiunque abbia fatto pazzie ore a redigere documenti in genere ha liquidato l'invio di tali documenti per far sì che i loro cambi overnight si invertissero. Dal mio punto di vista, non è possibile eseguire costantemente a un livello elevato per più di circa 12 ore alla volta (e anche questo è eccessivo) sopravvivere alla mancanza di sonno aumentando i livelli di caffeina. Penso che sia una storia che le persone amano raccontare, ma se sono onesti, ammetteranno che il loro lavoro medio sulle sessioni a lungo termine, indipendentemente da quale sia il lavoro, sia che si tratti di codice o di scrittura di documenti legali, è raramente, se mai abbastanza buono per abbinare la loro uscita se hanno ottenuto un riposo adeguato.

Non c'è nulla di speciale sui programmatori, non importa quanto siano bravi, come i conducenti, come gli operatori di macchinari pesanti, sono soggetti alla fatica e sarei stupito se qualcuno potesse dimostrare che un programmatore potrebbe fornire un output di alta qualità senza un riposo all'interno circa 12 ore.

    
risposta data 31.07.2011 - 19:12
fonte
2

Quando stavo studiando programmazione all'università ci sono state alcune notti in cui mi sentivo più produttivo che durante il giorno. Ha a che fare con il fatto che ci sono meno distrazioni durante la notte, l'erba mi ha reso abbastanza constrongvole da stare fermo e non mi sono alzato in quel giorno fino alle 14.00, quindi non ero troppo stanco. Ho potuto programmare fino alle 8 di mattina prima che follemente fame per la mia colazione. Detto questo, il giorno seguente, mi sarei schiantato mentalmente alle 17:00 e non c'era modo di essere produttivo. Programmare di notte può essere più produttivo ma farti dormire privatamente non aumenta mai la qualità del codice e non avresti mai intenzione di stancarti durante la codifica.

    
risposta data 30.07.2011 - 13:49
fonte
2

Io e molti altri creativi dimostriamo caratteristiche di personalità bipolare. Durante la progettazione del software, tendo a seguire l'algoritmo di Feynman:

  1. Annota il problema. (Minuti)

  2. Pensa davvero. (Tra giorni e anni)

  3. Annota la soluzione. (Giorni)

Un episodio ipomaniacale con sonno drasticamente ridotto (caffeina o no) è solo il biglietto per finire # 3.

    
risposta data 30.07.2011 - 21:09
fonte
2

Vedi questo post correlato in Skeptics.SE: Realmente il Ballmer Peak? , e in particolare questa risposta da ESultanik .

Perché penso che queste due domande siano correlate? Mi sembra che la menomazione causata dalla privazione del sonno sia in qualche modo simile a ubriacarsi, anche se non ho riferimenti per eseguire il backup del mio reclamo.

Citando dal riferimento quotato di ESultanik,

...modest alcohol consumption inhibits aspects of creativity based mainly on the secondary process (preparation, certain parts of illumination, and verification), and disinhibits those based mainly on the primary process (incubation, certain parts of illumination, and restitution).

Direi che si potrebbe essere più bravi a creare modelli di architettura astratti mentre si è privati del sonno, ma il vero codice sorgente digitato nella tastiera sarebbe ancora inebriato.

    
risposta data 13.04.2017 - 14:46
fonte
2

Quando si è costretti a programmare per 36 ore, di solito è a causa di una scadenza per spedire il prodotto. Quando si è in una tale scadenza, la qualità del codice è in genere la prima cosa che viene buttata fuori. "Basta farlo" è il mantra. "Lo sistemeremo nella versione 2" è un altro mantra.

Quindi, tipicamente, quando si codifica per 36 ore di fila, la qualità del codice ne risente .. ma non importa dal punto di vista del business .. perché se non spedisci qualcosa, anche qualcosa di rotto, potresti non essere in affari per farlo bene.

Quando una WANTS codifica per 36 ore di fila, è perché hai un strong picco creativo e non vuoi interromperlo. Non starai scrivendo un codice di qualità per 36 ore, ma scriverai codice creativo. Poi torni più tardi e guardi quel codice e ti chiedi come funzioni.

La creatività è una di quelle cose che spesso arriva a sprazzi. Non puoi controllarlo, quindi ne approfitti quando si mostra. Puoi sempre correggere il codice quando sei meno creativo.

    
risposta data 31.07.2011 - 18:25
fonte
1

Alcuni mesi fa, ero fuori con i miei colleghi a bere. Il giorno dopo siamo tornati in ufficio appesi sopra ... ma con nostro stupore abbiamo chiuso un numero record di bug.

In superficie, questi bug non erano facili da trovare e la maggior parte non aveva passaggi di replica, tuttavia essere ancora "fuori di testa" doveva farci 'pensare fuori dagli schemi' quando si trattava di risolvere il problema bug.

Anche se non eravamo "privati del sonno", non avevamo ancora la mentalità giusta per lavorare sul codice ... è semplicemente bizzarro quello che è successo quel giorno, lo citiamo sempre.

Oh, e per la maggior parte di noi inclini al massimo su JD & Coca Cola:)

    
risposta data 30.07.2011 - 14:32
fonte
0

Penso che lavorare in modo produttivo per così tanto tempo senza dormire a lungo sia impossibile per la maggior parte delle persone.

Ma penso che tu possa fare un lavoro fantastico con, per esempio, 3-4 ore di buon sonno. Questo funziona anche per diversi giorni consecutivi di intenso (intellettuale) lavoro con poco sonno.

Tuttavia, per me, questo deve essere seguito da un periodo di recupero in seguito; diciamo, un paio di notti con le solite 7-8 ore di sonno.

    
risposta data 30.07.2011 - 15:03
fonte

Leggi altre domande sui tag