Você pode realmente produzir código de alta qualidade se não tiver sono? [fechadas]

37

Ouvi falar de programadores que codificam por dois dias sem dormir, tomando café e Red Bull . Também em filmes como The Social Network , em uma cena, eles mostram que Mark Zuckerberg está programando há 36 horas. Também li em algum lugar que em empresas como Facebook, Google, quadrangular , etc., elas podem codificar por mais de 24 horas sem dormir.

Isso é mesmo verdade? Você pode realmente produzir código de alta qualidade se não tiver sono? Coisas como a Red Bull podem compensar o sono?

Peter Mortensen
fonte
4
Caralho! Não acho que sejam humanos / programadores. Podem ser alienígenas? :)
Gopi
25
"A rede social" não é um documentário. Baseia-se apenas livremente nos eventos reais relacionados à fundação do Facebook. Como estratagema de marketing, o aspecto "história verdadeira" era exibido, mas sempre que o autor e o diretor eram encurralados por um entrevistador, eles admitiam que era principalmente a imaginação deles sobre "o que poderia ter sido".
Charles E. Grant
8
Talvez isso deve ser movido para skeptics.stackexchange.com ...
Evan
6
Alguns podem, mas isso é porque eles normalmente produzem código de alta qualidade. Infelizmente, é muito mais comum para produzir código de qualidade média, mesmo quando descansou totalmente ...
4
Li essa pergunta no dia seguinte depois de ficar acordado por 38 horas, 32 delas no trabalho. Eu queria dizer algo sobre isso, mas basicamente qualquer tempo gasto em programação não distraído é bom para a sua saída, mas quando você está totalmente cansado, não fica distraído. No entanto, você pode criar, testar, depurar, documentar e polir se estiver obcecado em levá-lo a um estado correto imaginado.
dlamblin

Respostas:

77

Simplesmente não . Codificar por 36 horas não tem nada a ver com programação, é um atributo do ser humano. Pouquíssimas pessoas podem ficar acordadas por 24 horas e, mesmo quando ficam acordadas, sua mente realmente perde a capacidade de resolver problemas. Motoristas com sono, simplesmente batem em outros carros. Contadores com sono simplesmente cometem erros em seus cálculos. Muitos programadores, quando sonolentos, escrevem menos códigos de qualidade.

PS: Existe uma doença chamada insônia que faz você dormir menos. Mas não acho que o Google contrate pessoas com essa doença. :)

Saeed Neamati
fonte
28
+1: realmente bons programadores passam a maior parte do tempo pensando em um problema antes de tocarem em um compilador. Quando eles fazem a solução geralmente é bem pensada, simples, abstrata e de fácil manutenção, a codificação se torna trivial.
30611 Justin Shield
11
@EOL: D verdadeiro o suficiente, que deve ler "teclado"
Justin Shield
4
Minha própria experiência é que, por volta das 21h, após o início das 9h (mais ou menos 12 horas), estou cansado, irritado, não consigo pensar direito e sou incapaz de escrever qualquer coisa ou depurar. Casa e sono são MUITO mais eficazes do que coisas tolas como puxar a noite toda. Que isso seja feito, muito menos eficaz, é um mito.
quickly_now
3
@quickly_now Exatamente. O código fica cada vez pior exponencialmente em função do tempo. Portanto, tecnicamente, você pode codificar desde que seja capaz de se sentar na frente de um computador. Mas então, não vá ao SO e pergunte como sua função de classificação O (n ^ n) pode ser otimizada;).
Dr McKay
20
Espere, você pode dormir depois de apenas 24 horas de codificação? Eu sabia que este trabalho parecia suspeito quando comecei!
Nick Craver
41

Provavelmente é um desses mitos conhecidos e persistentes. Você ouve muito sobre isso porque é uma ideia convincente, mas na verdade não tem base real.

Ah, claro, talvez algum garoto recém-saído do ensino médio possa fazer o que parece ser algum tipo de milagre de codificação em 36 horas. Mas o código escrito dessa maneira é sustentável? É mesmo legível? Escala? Ele segue práticas de programação sensatas? Está documentado?

O Twitter invadiu um site que funcionou e depois o reescreveu da maneira "correta", porque caiu quando a carga ficou muito grande. O Facebook montou o site original em um período comparativamente curto para esse projeto, mas mais tarde trouxe um monte de novos desenvolvedores para reescrever a plataforma PHP em que o site estava sendo executado, porque não era dimensionável.

As exceções provam a regra.

Robert Harvey
fonte
6
Pode-se também considerá-los como razões convincentes para não se preocupar em fazer certo da primeira vez - pelo menos não quando você estiver criando um novo mercado.
Aaronaught
11
A reescrita do Twitter não era verdadeira, de acordo com o post ao qual você vinculou. Veja a atualização.
Jjnguy
@jjnguy: É justo, mas o exemplo ainda parece relevante, dados os problemas de inatividade e escalabilidade que o Twitter teve.
Robert Harvey
2
Pode não levar a um código de alta qualidade, mas se você tiver o básico e puder executar o TDD "enquanto dorme", o código não será tão ruim assim. O importante é que a codificação, enquanto cansada, faz com que seja menos provável que seu cérebro ignore pensamentos aleatórios e você seja mais criativo. pt.wikipedia.org/wiki/Sleep_and_creativity
Ape-inago 13/03
29

A única parte que pode ser verdadeira sobre esse mito é que os programadores têm melhor desempenho quando são ininterruptos por um longo período de tempo. Enquanto você codifica, quanto mais coisas você pode manipular, mais rápido você pode codificar, porque não precisa procurar coisas como o uso da API ou como uma parte diferente do código foi escrita por você ou outra pessoa. Acho que, quando sou interrompido, sempre leva algum tempo mensurável para voltar à velocidade máxima e, se estou fazendo algo importante (ou divertido), às vezes vou deixar de ir para casa no horário normal, porque depois do horário é quando suas interrupções vão para casa. Também sou conhecido por ficar acordado até as 3 ou 5 da manhã pelo mesmo motivo.

No entanto, como eu disse, sua velocidade e qualidade do seu código dependem de quanta atenção você está prestando e de quantas coisas você pode manipular na memória. Quando o sono se torna um problema, você pode pensar que está trabalhando em sua capacidade total, mas realmente não está. A maioria dos softwares desenvolvidos, como nos exemplos que você forneceu, decolam rapidamente, mas, à medida que jejuam, acabam sendo uma enorme dor de cabeça de responsabilidade e manutenção.

Definitivamente, você pode produzir muito código se trabalhar muito e, com esforço suficiente, poderá acionar recurso após recurso. Mas, sem prestar atenção à arquitetura / design, você não produzirá software facilmente escalável, sustentável ou extensível. Falando por experiência própria, é MUITO mais difícil pensar em design e manipular camadas de componentes / interfaces / abstração em sua cabeça (ou no papel) do que continuar escrevendo código puro.

DXM
fonte
3
+1 por adicionar a ideia de que o tempo ininterrupto pode ser um tempo de qualidade (mas apenas em doses razoáveis).
Eric O Lebigot
11
A concentração do @DXM ajuda muito. Qualidade de tempo sobre Quantidade de tempo
lovesh 30/07/11
11
@lovesh - eu não diria exatamente isso. (qualidade do tempo) x (quantidade de tempo) = resultados. Aumentar qualquer um deles aumenta os resultados. No entanto, o aumento do tempo diminui a qualidade. Nosso objetivo é sempre maximizar os resultados.
DXM
13

A coisa toda parece um exagero de estar "na zona". Quando você está totalmente focado, como codificador, o tempo é distorcido, os minutos se tornam segundos, etc. Você provavelmente está mais produtivo. Às vezes é difícil entrar nesse estado e muito fácil sair (principalmente de fatores externos), mas quando você está .... uau!

MPelletier
fonte
2
Eu estava escrevendo meu post pensando em como incluir a frase "na zona" quando você postou isso.
knb
Eu ia postar isso como um comentário, porque neste momento todas as respostas são "eu também", mas achei estranho que ninguém tivesse mencionado o fenômeno ainda.
MPelletier
2
De fato, se você estiver na zona, é muito mais fácil codificar por muito tempo. No entanto, perder o foco depois de codificar por tanto tempo é desagradável, para dizer o mínimo.
DasIch 30/07/11
10

Eu posso - e fiz às vezes - programar por 36h seguidas.
Acho que a pior coisa que já passei foi uma semana com cerca de 10 horas de sono.
Para mim, cafeína e bebidas energéticas não ajudaram. De fato, a longo prazo, a cafeína pode ter efeitos bastante negativos. Meu conselho é beber muito . Mantém você hidratado e as caminhadas até o banheiro são um bom efeito colateral: você estica as pernas um pouco e automaticamente faz pequenos intervalos.

Dito isto, acho isso cada vez mais difícil. Suponho que é uma capacidade que é esgotada e eventualmente esgotada. E talvez tenha alguns efeitos negativos à saúde - físico ou mental, a longo ou curto prazo, não sei dizer.
O que posso dizer é que você se sente como um zumbi e continuará se sentindo assim nos dias seguintes a essa maratona. Pessoalmente, tive um desgaste muito grande depois de fazer isso com frequência por cerca de um ano.
Ou seja: algumas pessoas podem trabalhar eficientemente por esse período, mas isso tem um custo .
Geralmente, isso era consequência de um planejamento ruim e, como não tinha experiência em preencher as lacunas deixadas pelos líderes não técnicos do projeto, era a única opção.

Agora você raramente encontrará códigos de qualidade sendo produzidos durante essas maratonas. No entanto, a principal causa disso são as circunstâncias nas quais essas maratonas ocorrem: Situações em que você precisa fornecer os recursos X, Y e Z dentro de um prazo muito curto. Ninguém realmente se importa com a qualidade do código nesse ponto, e é por isso que você acumula muita dívida técnica por meio de correções rápidas e outros hacks.
Ao mesmo tempo, isso indica o desempenho intacto do cérebro: as correções rápidas e os hacks exigem visão geral e criatividade.

Você não deve esquecer que esse código de qualidade raramente é escrito em uma única execução. Especialmente se o código tiver uma vida útil longa. A qualidade do código é alcançada através da revisão e refatoração. Ninguém vai se incomodar em fazer isso 48h antes do prazo.

A linha inferior é: você deve trabalhar apenas enquanto puder e não mais . Se você pode trabalhar apenas por 4h, ok. Faça uma pausa e trabalhe depois. Tentar ficar acordado por 36 horas, nas quais você realiza 8 horas de trabalho, é inútil. Você realiza o dobro do trabalho se fizer 4 sessões de 4h cada e usar as 20h restantes para se regenerar.
Se você pode trabalhar horas tão longas, isso significa que você é mais flexível em responder à subestimação. No entanto, a solução de longo prazo está melhorando seu processo de planejamento e estimativa. Se isso for impossível no seu local de trabalho, troque de trabalho. Se as pessoas esperam que você trabalhe por tantas horas, troque de emprego. Você não precisa provar nada a ninguém.

back2dos
fonte
Isso soa como uma grande mentira. Ninguém pode trabalhar por 36 horas, e realmente produzir algo útil
BЈовић
@VJovic: Bem, se você diz isso, então eu acho que nós vamos todos têm de acreditar;)
back2dos
5

Bons programadores podem de fato programar por 36 horas. Isso não significa que eles podem produzir seu código de melhor qualidade por 36 horas. Eu não sou um bom programador, e fiz isso várias vezes na faculdade, e até algumas vezes na faixa dos 30 anos, quando tentava corrigir bugs nos prazos de entrega dos navios. Geralmente, é uma ideia estúpida e reflete pouca capacidade de planejamento e programação.

Charles E. Grant
fonte
11
E só porque você pode , não significa que você é eficaz , especialmente após a marca de 12 a 15 horas.
quickly_now
10
Programadores ruins também podem programar por 36 horas. O tempo de codificação não tem nada a ver com a qualidade do codificador.
Marjan Venema
5

Você pode ficar acordado e trabalhar por 36 horas se estiver saudável. Mas neste momento você não escreverá o seu melhor código ou resolverá problemas muito complicados. Eu trabalhei por longas horas de vez em quando. Na maioria das vezes isso era para manter alguns prazos. Mas o trabalho então estava principalmente adicionando recursos menores, como imprimir algumas listas, polir alguns layouts. Nada em que você precise pensar muito, mais como muita digitação. Os principais recursos e partes complicadas dos programas já foram finalizados.

Às vezes, sua falta de concentração é a principal razão para as longas horas. Certa vez, tínhamos um prazo no dia seguinte. Depois de um dia já muito longo, terminamos tudo e eram duas da manhã. Havia apenas um bug desagradável. Meu chefe teve uma consulta com o cliente às 9 da manhã, então havia muito tempo. Levei várias horas para encontrar e consertar algo que, de outra forma, eu teria consertado em meia hora. Eu só tinha certeza de que seria capaz de encontrá-lo de qualquer maneira e não havia razão para decepcionar meu chefe, já que de alguma maneira a noite se foi.

thorsten müller
fonte
5

Sim. Muitas informações anedóticas indicam que sim. Duvido que alguém possa criar fisicamente um hábito das maratonas de trabalho. Estagiários médicos fazem esse tipo de horas.

Você provavelmente cometerá mais erros, provavelmente. Acho que tudo isso pressupõe que você possa escrever um código de qualidade em primeiro lugar. Nessas situações, você está sob controle e só quer fazê-lo funcionar. Qualidade não é uma consideração. Vamos consertar isso depois de recebermos financiamento.

JeffO
fonte
4
+1 para referência à equipe médica. Eu acho que médicos sobrecarregados do hospital estão fazendo isso rotineiramente ... trabalhando em turnos noturnos estressantes seguidos por turnos diurnos ... maneira certa de se queimar depois de alguns meses ou até anos.
knb
6
Agora há um pensamento reconfortante;) Estagiários privados de sono e pessoas com condições de saúde com risco de vida. Tente corrigir esses erros "mais tarde".
30511 Leigh
11
Os riscos apresentados por estagiários privados de sono são bem reconhecidos e muitas organizações estão eliminando a prática. Em parte, isso se mantém porque os médicos que estão treinando passam esses longos turnos.
BillThor
4

Não é impossível e aconteceu de verdade. Como o capítulo é longo, deixe-me citar o parágrafo atual:

Os membros do grupo unido se autodenominavam "hackers". Com o tempo, eles estenderam a descrição do "hacker" para Stallman também. No processo, inculcaram Stallman nas tradições éticas da "ética hacker". Ser hacker significava mais do que apenas escrever programas, Stallman aprendeu. Isso significava escrever os melhores programas possíveis. Isso significava ficar sentado em um terminal por 36 horas seguidas, se era o necessário para escrever os melhores programas possíveis. Mais importante, significava ter acesso às melhores máquinas possíveis e às informações mais úteis em todos os momentos. Os hackers falaram abertamente sobre mudar o mundo através do software, e Stallman aprendeu o instinto hacker desdém por qualquer obstáculo que impedisse um hacker de cumprir essa causa nobre. O principal desses obstáculos era o software ruim,

Claro que isso não significa que esta seja uma regra única para todos. Algumas pessoas conseguem, enquanto outras não. O mais importante é não ser interrompido e trabalhar durante os períodos em que você se sente muito produtivo. Assim, você pode tentar por si mesmo e tirar as conclusões :)

sakisk
fonte
3

Eu acho que é possível, se você é uma máquina - não estou duvidando que alguns possam fazê-lo. Mas a experiência me ensinou que a grande maioria dos programadores escreverá código pior logo após a marca de 8 a 10 horas e código horrível após a marca de 16 horas.

Nas poucas vezes em que nossa equipe foi forçada a fazer a noite toda, acabamos com um código que precisava ser revertido.

Kaleb Brasee
fonte
bem se a qualidade é afetada como vêm caras no Facebook fazer o tempo todo (pelo menos a sua disse que a fazê-lo)
lovesh
4
... com base em minhas experiências recentes com o Facebook, eu diria que é bastante consistente com o meu argumento. Eu recebi cerca de 3 ou 4 erros usando diferentes partes do Facebook hoje.
Kaleb Brasee
3
@lovesh "Dizem que eles fazem isso" e "eles fazem isso" são duas coisas diferentes.
Scott C Wilson
3

Duvido que seja honesto. De fato, apesar de mitos e histórias sobre pessoas que atingiram X, Y e Z estarem acordados por 24 horas, eles acontecem em circunstâncias extremas e são raros.

No passado, eu costumava fornecer pool de digitação para uma firma de advocacia que ocasionalmente tinha pessoas puxando todas as noites para tentar tirar as coisas para um horário específico. Qualquer um que fazia horas loucas redigindo documentos geralmente acabava enviando esses documentos para que suas alterações da noite para o dia fossem revertidas. Na minha opinião, não é possível ter um desempenho consistente em um nível alto por mais de 12 horas por vez (e até isso é excessivo) sobreviver à falta de sono aumentando os níveis de cafeína. Acho que é uma história que as pessoas gostam de contar, mas, se forem sinceras, admitirão que seu trabalho médio em sessões de longa duração, independentemente de qual seja o trabalho, seja codificando ou escrevendo documentos legais, raramente é suficiente, se é que alguma vez é bom. para combinar com sua produção se eles descansarem adequadamente.

Não há nada de especial nos codificadores, por melhores que sejam, como motoristas, operadores de máquinas pesadas, eles estão sujeitos a fadiga e eu ficaria surpreso se alguém pudesse provar que um codificador poderia fornecer uma saída de alta qualidade sem descanso em cerca de 12 horas .

tentador
fonte
2

Quando eu estava estudando programação na universidade, houve algumas noites em que me senti mais produtivo do que durante o dia. Isso tem a ver com o fato de que há menos distrações à noite, a erva me deixou confortável o suficiente para ficar parado e eu realmente não me levantei naquele dia até às 14h, então não estava muito cansada. Eu poderia codificar até as 8h antes de sentir uma loucura insana pelo meu café da manhã. Com isso dito no dia seguinte, eu caía mentalmente às cinco da tarde e não havia como eu estar sendo produtivo. Programar à noite pode ser mais produtivo, mas tornar-se privado de sono nunca aumenta a qualidade do código e você nunca planeja ficar cansado ao codificar.

Philluminati
fonte
2

Eu e muitas outras pessoas criativas demonstramos características da personalidade bipolar. Ao projetar software, costumo seguir o algoritmo de Feynman:

  1. Anote o problema. (Minutos)

  2. Pense bem. (Entre dias e anos)

  3. Anote a solução. (Dias)

Um episódio hipomaníaco com sono drasticamente reduzido (cafeína ou não) é apenas o bilhete para terminar o terceiro lugar.

Jon Purdy
fonte
2

Por favor, veja este post relacionado em Skeptics.SE: O Ballmer Peak é real? , e em particular esta resposta da ESultanik .

Por que acho que essas duas perguntas estão relacionadas? Parece-me que o comprometimento causado pela privação do sono é um pouco semelhante ao de ficar bêbado, embora eu não tenha nenhuma referência para apoiar minha reivindicação.

Citando a referência citada pela ESultanik,

... o consumo modesto de álcool inibe aspectos da criatividade baseados principalmente no processo secundário (preparação, certas partes da iluminação e verificação) e desinibe os baseados principalmente no processo primário (incubação, certas partes da iluminação e restituição).

Eu diria que pode ser melhor criar modelos de arquitetura abstrata enquanto estiver privado de sono, mas o código-fonte real digitado no teclado ainda seria inebriado.

rwong
fonte
2

Quando alguém é forçado a codificar por 36 horas, geralmente é por causa de um prazo para enviar o produto. Quando alguém está dentro desse prazo, a qualidade do código geralmente é a primeira coisa descartada. "Basta fazê-lo" é o mantra. "Vamos corrigir isso na versão 2" é outro mantra.

Normalmente, quando alguém codifica por 36 horas seguidas, a qualidade do código sofre .. mas isso não importa do ponto de vista comercial .. porque se você não envia algo, mesmo que seja algo quebrado, pode não estar no negócio fazer certo.

Quando se quer codificar por 36 horas seguidas, é porque você tem um forte aumento criativo e não deseja interrompê-lo. Você não escreverá um código de qualidade nessas 36 horas, mas escreverá um código de criativo. Você volta mais tarde, olha o código e se pergunta como ele funciona.

Criatividade é uma daquelas coisas que geralmente surgem. Você não pode controlá-lo, então aproveita-o quando ele se mostra. Você sempre pode corrigir o código quando for menos criativo.

Erik Funkenbusch
fonte
1

Alguns meses atrás, eu saí com meus colegas de trabalho bebendo. No dia seguinte, chegamos ao escritório de ressaca ... mas, para nossa surpresa, fechamos uma quantidade recorde de bugs.

Na superfície, esses bugs não eram fáceis de encontrar e a maioria não tinha etapas de replicação, embora ainda estivéssemos "fora de nossas mentes" nos obrigasse a "pensar fora da caixa" quando se tratava de consertar os bugs.

Embora não estivéssemos "privados de sono", ainda não estávamos na mentalidade certa para trabalhar no código ... é simplesmente bizarro o que aconteceu naquele dia, sempre o mencionamos.

Ah, e para os mais inclinados, a maioria de nós estava usando JD & Coca-Cola :)

Dal
fonte
+1 Não estou certo de que este responde à pergunta, mas eu gostei da resposta de qualquer maneira :-)
Danny Varod
0

Eu acho que trabalhar produtivamente por tanto tempo sem dormir muito é impossível para a maioria das pessoas.

Mas acho que você pode fazer um trabalho incrível com apenas, digamos, 3-4 horas de bom sono. Isso funciona mesmo por vários dias consecutivos de intenso trabalho (intelectual) com pouco sono.

No entanto, para mim, isso deve ser seguido por um período de recuperação posteriormente; digamos, algumas noites com as habituais 7-8 horas de sono.

knb
fonte
Esta é a programação típica de um estudante de CS, não é?
User16764