Słyszałem o programistach programujących przez dwa dni bez snu i picia kawy i Red Bulla . Również w filmach takich jak The Social Network , w scenie pokazują, że Mark Zuckerberg programuje od 36 godzin. Czytałem też gdzieś, że w firmach takich jak Facebook, Google, foursquare itp. Mogą kodować przez ponad 24 godziny bez snu.
Czy to naprawdę prawda? Czy rzeczywiście potrafisz wyprodukować kod wysokiej jakości, jeśli jesteś pozbawiony snu? Czy rzeczy takie jak Red Bull mogą nadrobić sen?
productivity
Peter Mortensen
źródło
źródło
Odpowiedzi:
Po prostu nie . Kodowanie przez 36 godzin nie ma nic wspólnego z programowaniem, jest raczej atrybutem człowieka. Bardzo niewiele osób nie może zasnąć przez 24 godziny, a nawet gdy nie śpią, ich umysł naprawdę traci umiejętności rozwiązywania problemów. Senni kierowcy po prostu uderzają w inne samochody. Księgowi, którzy są śpiący, po prostu popełniają błędy w swoich obliczeniach. Również wielu programistów, którzy śpią, piszą mniej jakościowy kod.
PS: Istnieje choroba zwana bezsennością, która powoduje, że śpisz mniej. Ale nie sądzę, że Google zatrudnia ludzi z taką chorobą. :)
źródło
To prawdopodobnie jeden z tych dobrze znanych, wytrwałych mitów. Dużo o tym słyszysz, ponieważ jest to przekonujący pomysł, ale nie ma w rzeczywistości żadnych podstaw.
Och, jasne, może jakieś młode dziecko po ukończeniu szkoły średniej może zdjąć coś, co wydaje się być jakimś cudem kodowania w ciągu 36 godzin. Ale czy kod napisany w ten sposób jest łatwy do utrzymania? Czy to w ogóle jest czytelne? Czy to się skaluje? Czy przestrzega rozsądnych praktyk programistycznych? Czy to jest udokumentowane?
Twitter zhakował witrynę, która działała, a następnie przerobił ją na „poprawny” sposób, ponieważ upadł, gdy ładunek stał się zbyt duży. Facebook przygotował swoją oryginalną stronę w stosunkowo krótkim czasie na taki projekt, ale później przyniósł grupę nowych programistów, aby przepisać platformę PHP , na której działała strona, ponieważ nie byłaby skalowana.
Wyjątki potwierdzają zasadę.
źródło
Jedyną częścią, która może być prawdziwa w tym micie, jest to, że programiści osiągają najlepsze wyniki, gdy są nieprzerwanie przez dłuższy okres czasu. Kiedy piszesz, im więcej rzeczy możesz żonglować w swojej głowie, tym szybciej możesz napisać kod, ponieważ nie musisz szukać rzeczy takich jak użycie interfejsu API lub tego, jak inna część kodu została napisana przez ciebie lub kogoś innego. Uważam, że kiedy mi przeszkadza, powrót do pełnej prędkości zajmuje zawsze wymierny czas, a jeśli robię coś ważnego (lub zabawnego), czasami rezygnuję z powrotu do domu o zwykłej porze, ponieważ po godzinach jest kiedy twoje przeszkody idą do domu. Z tego samego powodu jestem także znany z pozostania do 3 lub 5 rano.
Jednak, jak powiedziałem, szybkość i jakość kodu zależy od tego, ile uwagi poświęcasz i ile rzeczy możesz żonglować w pamięci. Kiedy sen staje się problemem, możesz myśleć, że pracujesz na pełnych obrotach, ale tak naprawdę nie jest. Większość oprogramowania opracowanego tak, jak w podanych przez Ciebie przykładach, szybko zaczyna działać, ale równie szybko staje się ogromną odpowiedzialnością i bólem głowy związanym z utrzymaniem.
Możesz zdecydowanie wyprodukować dużo kodu, jeśli dużo pracujesz, a przy wystarczającym wysiłku możesz rozkręcać funkcję po funkcji. Ale bez zwracania uwagi na architekturę / projektowanie nie będzie można tworzyć łatwo skalowalnego, konserwowalnego lub rozszerzalnego oprogramowania. Mówiąc z doświadczenia, O wiele trudniej jest myśleć o projektowaniu i żonglowaniu komponentami / interfejsami / warstwami abstrakcji w głowie (lub na papierze), niż pisanie czystego kodu.
źródło
Wszystko to brzmi jak przesada bycia „w strefie”. Kiedy jesteś całkowicie skoncentrowany, jako programista, czas jest wypaczony, minuty stają się sekundami itp. Prawdopodobnie jesteś najefektywniejszy. Czasami trudno jest wejść w ten stan i dość łatwo się z niego wydostać (głównie czynniki zewnętrzne), ale kiedy jesteś ... wow!
źródło
Mogę - i czasami tak programowałem - 36 godzin z rzędu.
Myślę, że najgorszą rzeczą, jaką kiedykolwiek przeżyłem, był tydzień z około 10 godzinami snu.
Dla mnie kofeina i napoje energetyczne nie pomogły. W rzeczywistości na tak długi czas kofeina może mieć raczej negatywne skutki. Radzę pić dużo . Utrzymuje nawodnienie, a spacery do toalety są przyjemnym efektem ubocznym: lekko rozciągasz nogi i automatycznie robisz krótkie przerwy.
To powiedziawszy, uważam to za coraz trudniejsze. Przypuszczam, że jest to pojemność wyczerpana i ostatecznie wyczerpana. I może ma pewne negatywne skutki dla zdrowia - fizyczne lub psychiczne, długo- lub krótkoterminowe, nie umiem powiedzieć.
Mogę powiedzieć, że czujesz się jak zombie i nadal będziesz się tak czuł przez kilka dni po takim maratonie. Osobiście miałem naprawdę duże wypalenie po tym, jak robiłem to często przez około rok.
Innymi słowy: niektórzy ludzie mogą pracować wydajnie przez tak długi czas, ale wiąże się to z pewnymi kosztami .
Była to zwykle konsekwencja złego planowania i brak doświadczenia w uzupełnianiu braków pozostawionych przez nietechnicznych kierowników projektów, była to jedyna opcja.
Teraz rzadko można znaleźć kod jakości produkowany podczas takich maratonów. Jednak główną przyczyną tego są okoliczności, w których występują te maratony: Sytuacje, w których musisz dostarczyć funkcje X, Y i Z w bardzo krótkim czasie. W tym momencie nikt tak naprawdę nie dba o jakość kodu, dlatego zaciągasz wiele długów technicznych za pomocą szybkich poprawek i innych hacków.
Jednocześnie wskazuje to na nienaruszoną wydajność mózgu: szybkie poprawki i hacki wymagają zarówno przeglądu, jak i kreatywności.
Nie należy zapominać, że kod jakości rzadko jest zapisywany w jednym przebiegu. Zwłaszcza jeśli kod ma długą żywotność. Jakość kodu jest osiągana poprzez przegląd i refaktoryzację. Nikt nie będzie się tym przejmować 48 godzin przed upływem terminu.
Najważniejsze jest to, że powinieneś pracować tylko tak długo, jak możesz i nie dłużej . Jeśli możesz pracować tylko przez 4 godziny, to dobrze. Zrób sobie przerwę i pracuj później. Próba pozostania w stanie czuwania przez 36 godzin, w ciągu których wykonasz 8 godzin pracy, jest bezcelowa. Otrzymasz dwa razy więcej pracy, jeśli wykonasz 4 sesje po 4 godziny i wykorzystasz pozostałe 20 godzin na regenerację.
Jeśli możesz przepracować tak długie godziny, oznacza to, że jesteś bardziej elastyczny w reagowaniu na niedoszacowanie. Jednak długoterminowe rozwiązanie poprawia proces planowania i szacowania. Jeśli jest to niemożliwe w miejscu pracy, zmień zadania. Jeśli ludzie oczekują, że przepracujesz tak długie godziny, zmień pracę. Nie musisz nikomu niczego udowadniać.
źródło
Dobrzy programiści mogą rzeczywiście programować przez 36 godzin. Nie oznacza to, że mogą wytwarzać kod najlepszej jakości przez 36 godzin. Jestem nie dobry programista, i zrobiłem to kilka razy w college'u, a nawet kilka razy w moich latach 30., gdy próbuje naprawić błędy dla terminów okrętowych. To generalnie głupi pomysł i odzwierciedla słabe umiejętności planowania i planowania.
źródło
Możesz pozostać przytomny i pracować przez 36 godzin, jeśli jesteś zdrowy. Ale w tym czasie nie napiszesz najlepszego kodu ani nie rozwiążesz bardzo skomplikowanych problemów. Raz na jakiś czas pracowałem bardzo długo. Przez większość czasu miało to na celu dotrzymanie pewnych terminów. Ale wtedy praca polegała głównie na dodawaniu drobnych funkcji, takich jak drukowanie niektórych list, polerowanie niektórych układów. Nic, co wymaga dużo myślenia, bardziej jak pisanie na klawiaturze. Główne funkcje i skomplikowane części programów zostały już zakończone.
Czasami brak koncentracji jest głównym powodem długich godzin. Kiedyś mieliśmy termin następnego dnia. Po bardzo długim dniu zakończyliśmy wszystko i była druga w nocy. Został tylko jeden paskudny błąd. Mój szef miał spotkanie z klientem o 9 rano, więc było dużo czasu. Zajęło mi kilka godzin, aby znaleźć i naprawić coś, co w przeciwnym razie naprawiłbym za pół godziny. Po prostu wiedziałem na pewno, że i tak będę w stanie go znaleźć i nie było powodu, by zawieść mojego szefa, ponieważ jakoś noc zniknęła.
źródło
Tak. Wiele anegdotycznych informacji wskazuje, że może. Wątpię, aby ktokolwiek mógł fizycznie zrobić nawyk z maratonów zawodowych. Stażyści medyczni ciągną tego rodzaju godziny.
Czy prawdopodobnie popełnisz więcej błędów? Myślę, że to wszystko zakłada, że możesz napisać kod jakości w pierwszej kolejności. W takich sytuacjach jesteś pod bronią i po prostu chcesz, aby zadziałało. Jakość nie jest brana pod uwagę. Naprawimy to po uzyskaniu finansowania.
źródło
Nie jest to niemożliwe i stało się to w rzeczywistości. Ponieważ rozdział jest długi, pozwól mi zacytować właściwy akapit:
Oczywiście nie oznacza to, że jest to jedna zasada dla wszystkich. Niektóre osoby mogą to zrobić, a inne nie. Najważniejsze jest, aby nie przeszkadzać i pracować w okresach, w których czujesz się bardzo produktywnie. Możesz więc spróbować samemu i wyciągnąć wnioski :)
źródło
Myślę, że jest to możliwe, jeśli jesteś maszyną - nie wątpię, że niektórzy mogą to zrobić. Ale doświadczenie nauczyło mnie, że znaczna większość programistów napisze gorszy kod wkrótce po 8 do 10 godzinie, a okropny kod po 16 godzinie.
Kilka razy nasz zespół był zmuszony wycofać się jakoś tak naprawdę, otrzymaliśmy kod, który musiał zostać wycofany.
źródło
Wątpię, aby być szczerym. W rzeczywistości pomimo mitów i opowieści o ludziach, którzy osiągnęli X, Y i Z, nie śpiąc przez 24 godziny, zdarzają się w ekstremalnych okolicznościach i są rzadkie.
Dawno temu zapewniałem pulę do pisania dla kancelarii prawniczej, która od czasu do czasu zmuszała ludzi, by ciągnęli za sobą wszystkich nocujących, aby wypróbowali różne rzeczy na określone czasy. Każdy, kto robił szalone godziny przy opracowywaniu dokumentów, generalnie skończył z wysyłaniem tych dokumentów w celu wycofania ich nocnych zmian. Moim zdaniem nie jest możliwe konsekwentne osiąganie wysokiego poziomu przez więcej niż około 12 godzin na raz (a nawet to nadmierne) przetrwanie braku snu poprzez zwiększenie poziomu kofeiny. Myślę, że ludzie lubią to opowiadać, ale jeśli są szczerzy, przyznają, że ich przeciętna praca podczas sesji długodystansowych, bez względu na to, czym się zajmuje, czy to kodowaniem, czy pisaniem dokumentów prawnych, rzadko, jeśli w ogóle, jest wystarczająco dobra dopasować ich wydajność, jeśli dostaną odpowiedni odpoczynek.
Nie ma nic specjalnego w koderach, bez względu na to, jak są dobrzy, jak kierowcy, jak operatorzy ciężkich maszyn, podlegają zmęczeniu i byłbym zaskoczony, gdyby ktokolwiek mógł udowodnić, że koder może zapewnić wysoką jakość wydruku bez odpoczynku w ciągu około 12 godzin .
źródło
Kiedy studiowałem programowanie na uniwersytecie, przez kilka nocy czułem się bardziej produktywny niż w ciągu dnia. Ma to związek z faktem, że w nocy jest mniej rozrywek, zioło sprawiło, że czuję się wystarczająco wygodnie, aby siedzieć spokojnie, a ja właściwie nie wstałem do 14.00, więc nie byłem zbyt zmęczony. Mogłem napisać kod do godziny 8 rano, zanim byłem niesamowicie głodny śniadania. To powiedziawszy następnego dnia załamałbym się psychicznie do 17.00 i nie było mowy, żebym był produktywny. Programowanie w nocy może być bardziej produktywne, ale pozbycie się snu nigdy nie poprawia jakości kodu i nigdy nie planowałbyś być zmęczony podczas kodowania.
źródło
Ja i wielu innych kreatywnych ludzi wykazujemy cechy osobowości dwubiegunowej. Podczas projektowania oprogramowania kieruję się algorytmem Feynmana:
Zapisz problem. (Minuty)
Myśl naprawdę ciężko. (Między dniami a latami)
Zapisz rozwiązanie. (Dni)
Epizod hipomanii z drastycznie zmniejszonym snem (kofeina lub brak) jest tylko przepustką do ukończenia # 3.
źródło
Zobacz ten powiązany post w Skeptics.SE: Czy szczyt Ballmer jest prawdziwy? , aw szczególności tę odpowiedź ESultanik .
Dlaczego myślę, że te dwa pytania są powiązane? Wydaje mi się, że upośledzenie spowodowane brakiem snu jest nieco podobne do upijania się, chociaż nie mam żadnych odniesień na poparcie mojego roszczenia.
Cytując cytowane odniesienie ESultanik,
Powiedziałbym, że lepiej być w tworzeniu abstrakcyjnych modeli architektury, gdy nie mamy dostępu do snu, ale rzeczywisty kod źródłowy wpisany na klawiaturze byłby nadal pijany.
źródło
Gdy ktoś jest zmuszony do kodowania przez 36 godzin, zwykle dzieje się tak z powodu terminu wysyłki produktu. Kiedy ktoś jest w takim terminie, jakość kodu jest zazwyczaj pierwszą rzeczą, która jest wyrzucana. „Po prostu zrób to” to mantra. „Naprawimy to w wersji 2” to kolejna mantra.
Zazwyczaj więc, gdy kodujemy przez 36 godzin z rzędu, jakość kodu cierpi ... ale to nie ma znaczenia z biznesowego punktu widzenia ... ponieważ jeśli nie dostarczysz czegoś, nawet czegoś zepsutego, możesz nie być w biznesie zrobić to dobrze.
Kiedy jeden chce kodować przez 36 godzin z rzędu, dzieje się tak dlatego, że masz silny impuls kreatywny i nie chcesz go przerywać. Przez te 36 godzin nie będziesz pisać kodu jakości, ale będziesz pisać kod kreatywny. Potem wracasz później i patrzysz na ten kod i zastanawiasz się, jak on w ogóle działa.
Kreatywność to jedna z tych rzeczy, które często pojawiają się gwałtownie. Nie możesz tego kontrolować, więc wykorzystaj go, kiedy się pojawi. Zawsze możesz naprawić kod, gdy jesteś mniej kreatywny.
źródło
Kilka miesięcy temu byłem na kolacji z kolegami z pracy. Następnego dnia wróciliśmy do biura zawieszeni ... ale ku naszemu zdziwieniu zamknęliśmy rekordową liczbę błędów.
Na pierwszy rzut oka te błędy nie były łatwe do znalezienia, a większość z nich nie miała żadnych etapów replikacji, jednak wciąż „poza naszym umysłem” musiała sprawić, że „wyszliśmy z pudełka”, jeśli chodzi o naprawianie błędów.
Chociaż nie byliśmy „pozbawieni snu”, nadal nie mieliśmy odpowiedniego nastawienia do pracy nad kodem ... to dziwne, co się stało tego dnia, zawsze o tym wspominamy.
Aha, a dla skłonnych większość z nas rozwijała się na JD & Coke :)
źródło
Myślę, że tak produktywna praca bez długiego snu jest dla większości ludzi niemożliwa.
Ale myślę, że możesz wykonać niesamowitą pracę, powiedzmy 3-4 godziny dobrego snu. Działa to nawet przez kilka kolejnych dni intensywnej (intelektualnej) pracy bez snu.
Jednak dla mnie po tym musi nastąpić okres rekonwalescencji; powiedzmy, kilka nocy ze zwykłymi 7-8 godzinami snu.
źródło