Você pode realmente produzir código de alta qualidade se estiver com privação de sono? [fechadas]

36

Eu ouvi falar de programadores que codificam por dois dias sem dormir e beber café e Red Bull . Também em filmes como The Social Network , em uma cena eles mostram que Mark Zuckerberg tem programado por 36 horas. Também li em algum lugar que em empresas como Facebook, Google, foursquare , etc. eles podem codificar por mais de 24 horas sem dormir.

Isso é realmente verdade? Você pode realmente produzir código de alta qualidade se você está privado de sono? Coisas como Red Bull podem compensar o sono?

    
por Peter Mortensen 14.09.2014 / 19:03
fonte

17 respostas

76

Simplesmente Não . Codificar por 36 horas não tem nada a ver com programação, é um atributo do humano. Muito poucas pessoas podem ficar acordadas por 24 horas e, mesmo quando ficam acordadas, sua mente realmente perde as habilidades de resolução de problemas. Motoristas que estão com sono, simplesmente acertam outros carros. Contadores que estão com sono, simplesmente cometem erros em seus cálculos. Também muitos programadores quando sonolentos, escrevem menos código de qualidade.

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

    
por 30.07.2011 / 07:40
fonte
41

É provavelmente um desses mitos bem conhecidos e persistentes. Você ouve muito sobre isso porque é uma idéia convincente, mas não tem base real na verdade.

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

O Twitter invadiu um site que funcionava e acabou reescrevendo-o da maneira "correta", porque ele caiu quando a carga ficou muito grande. Facebook montou seu site original em um período comparativamente curto de tempo para tal projeto, mas depois trouxe um monte de novos desenvolvedores para rewrite a plataforma PHP que o site estava rodando, porque não seria escalável.

As exceções comprovam a regra.

    
por 27.05.2013 / 04:23
fonte
29

A única parte que pode ser verdade sobre esse mito é que os programadores têm melhor desempenho quando são ininterruptos por um longo período de tempo. Como você está codificando, quanto mais coisas puder manipular em sua cabeça, mais rápido poderá ser codificado, pois não é necessário pesquisar coisas como os usos da API ou como uma parte diferente do código foi escrita por você ou por outra pessoa. Eu acho que quando eu sou interrompido, sempre leva algum tempo mensurável para voltar à velocidade máxima, e se eu estou fazendo algo importante (ou divertido), às vezes eu deixo de ir para casa no horário normal, porque depois do horário quando suas interrupções forem para casa. Eu 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 de seu código dependem de quanta atenção você está pagando 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 plena capacidade, mas na verdade não está. A maioria dos softwares desenvolvidos, como nos exemplos que você forneceu, sai do chão rapidamente, mas, assim como os jejuns, acaba sendo uma enorme dor de cabeça por responsabilidade e manutenção.

Você pode, definitivamente, produzir muitos códigos se trabalhar muito e, com esforço suficiente, conseguir extrair recurso após recurso. Mas sem prestar atenção à arquitetura / design, você não produzirá softwares facilmente expansíveis, expansíveis ou expansíveis. Falando de experiência, é MUITO mais difícil pensar em projetar e manipular componentes / interfaces / camadas de abstração em sua cabeça (ou em papel) do que continuar escrevendo código puro.

    
por 30.07.2011 / 08:18
fonte
13

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

    
por 30.07.2011 / 15:00
fonte
10

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

Dito isto, acho isso cada vez mais difícil. Eu suponho que é uma capacidade, que é drenada e eventualmente esgotada. E talvez tenha alguns efeitos negativos sobre a saúde - físicos ou mentais, longos ou curtos, não sei dizer.
O que eu posso dizer é que você se sente como um zumbi e continuará a se sentir assim nos dias após uma maratona. Pessoalmente, eu tive um grande esgotamento depois de fazer isso com frequência por cerca de um ano. Ou seja: Algumas pessoas podem trabalhar com eficiência por um período de tempo como esse, mas isso tem um custo .
Em geral, era consequência de um mau planejamento e de não ter experiência em preencher as lacunas deixadas por líderes de projetos não técnicos, era a única opção.

Agora, você raramente encontrará códigos de qualidade sendo produzidos durante essas maratonas. No entanto, a principal causa disto são as circunstâncias, nas quais essas maratonas ocorrem: Situações, onde você precisa entregar recursos X, Y e Z dentro de um período de tempo 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 com correções rápidas e outros hacks. Ao mesmo tempo, isso indica o desempenho intacto do cérebro: os Quickfixes e os hacks exigem visão geral e criatividade.

Você não deve esquecer que o código de qualidade raramente é escrito em uma única execução. Especialmente se o código tiver uma longa vida útil. A qualidade do código é obtida por meio de revisão e refatoração. Ninguém se incomodará em fazer isso 48 horas antes do prazo final.

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

    
por 31.07.2011 / 11:19
fonte
5

Bons programadores podem programar por 36 horas. Isso não significa que eles podem produzir seu melhor código de qualidade por 36 horas. Eu sou não um bom programador, e fiz isso várias vezes na faculdade, e até mesmo algumas vezes em meus 30 anos ao tentar consertar bugs nos prazos de envio. Em geral, é uma ideia estúpida e reflete as fracas habilidades de planejamento e agendamento.

    
por 30.07.2011 / 08:05
fonte
5

Você pode ficar acordado e trabalhar por 36 horas se estiver saudável. Mas neste momento você não vai escrever o seu melhor código ou resolver problemas muito complicados. Eu tenho trabalhado por longas horas de vez em quando. Na maioria das vezes isso era para manter alguns prazos. Mas o trabalho, na maioria das vezes, era adicionar recursos menores, como imprimir algumas listas, polir alguns layouts. Nada onde você precisa pensar muito, mais como digitar. As principais características e partes complicadas dos programas onde já terminou.

Às vezes, sua falta de concentração é a principal razão para as longas horas. Uma vez tivemos um prazo no dia seguinte. Depois de um dia já muito longo, tínhamos terminado a coisa toda e eram duas da manhã. Havia apenas um erro desagradável à esquerda. Meu chefe tinha um encontro com o cliente às 9 da manhã, então havia bastante tempo. Levei várias horas para encontrar e consertar algo que, de outra forma, eu teria consertado em meia hora. Eu só sabia com certeza que eu seria capaz de encontrá-lo de qualquer maneira e não havia razão para deixar meu chefe para baixo, já que de alguma forma a noite tinha ido embora de qualquer maneira.

    
por 30.07.2011 / 11:59
fonte
5

Sim. Muitas informações indicam que podem. Eu duvido que alguém possa fisicamente criar um hábito fora das maratonas de trabalho. Estagiários médicos atraem esses tipos de horas.

Você provavelmente cometerá mais erros, provavelmente. Eu acho que tudo isso pressupõe que você pode escrever código de qualidade em primeiro lugar. Nestas situações, você está sob a arma e só quer fazê-lo funcionar. Qualidade não é uma consideração. Nós vamos consertar depois que conseguirmos financiamento.

    
por 30.07.2011 / 15:09
fonte
4

Não é impossível e aconteceu em tempo real. Como o capítulo é longo, deixe-me citar o parágrafo:

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.

Claro que isso não significa que essa seja uma regra para todos. Algumas pessoas podem fazer isso, 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 fazer as conclusões:)

    
por 30.07.2011 / 11:59
fonte
3

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

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

    
por 30.07.2011 / 07:24
fonte
3

Eu duvido que seja honesto. De fato, apesar dos mitos e histórias sobre pessoas que alcançam X, Y e Z tendo estado acordadas por 24 horas, elas estão em circunstâncias extremas e são raras.

De volta ao dia, eu costumava fornecer pool de digitação para uma firma de advocacia que ocasionalmente tinha pessoas puxando todos os nighters para tentar pegar coisas para momentos específicos. Qualquer um que fizesse horas loucas elaborando documentos geralmente acabava enviando esses documentos para que suas alterações durante a noite fossem revertidas. Na minha opinião, não é possível realizar consistentemente um alto nível por mais de 12 horas de cada vez (e mesmo isso é excessivo) sobrevivendo à falta de sono aumentando seus níveis de cafeína. Acho que é uma história que as pessoas gostam de contar, mas se forem honestas, admitirão que seu trabalho médio em sessões longas, independentemente de qual seja o trabalho, seja codificando ou redigindo documentos legais, raramente é bom o bastante para combinar com a saída deles se eles tiverem descanso adequado.

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

    
por 31.07.2011 / 19:12
fonte
2

Quando eu estava estudando programação na universidade, houve algumas noites em que me senti mais produtivo do que durante o dia. Tem a ver com o fato de que há menos distrações à noite, a erva daninha me fez confortável o suficiente para ficar parado e eu realmente não me levantei naquele dia até 14h de qualquer maneira, então eu não estava muito cansado. Eu poderia codificar até as 8 da manhã antes de eu estar faminta por meu café da manhã. Com isso dito no dia seguinte eu iria cair mentalmente às 5 da tarde e não havia como eu estar sendo produtivo. Programar à noite pode ser mais produtivo, mas privar-se do sono nunca aumenta a qualidade do código e você nunca planeja se cansar da codificação.

    
por 30.07.2011 / 13:49
fonte
2

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

  1. Anote o problema. (Minutos)

  2. Pense bem difícil. (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 # 3.

    
por 30.07.2011 / 21:09
fonte
2

Por favor, veja esta postagem relacionada em Skeptics.SE: O Ballmer Peak é real? , e em particular esta resposta por ESultanik .

Por que eu acho que essas duas questões estão relacionadas? Parece-me que o prejuízo causado pela privação do sono é um pouco semelhante a ficar bêbado, embora eu não tenha nenhuma referência para fazer o backup reivindicação.

Citando a referência citada pela 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).

Eu diria que alguém pode ser melhor em criar modelos de arquitetura abstrata enquanto está privado de sono, mas o código-fonte real digitado no teclado ainda estaria inebriado.

    
por 13.04.2017 / 14:46
fonte
2

Quando alguém é forçado a codificar por 36 horas, geralmente é por causa de um prazo para enviar o produto. Quando um está em tal prazo, a qualidade do código é tipicamente a primeira coisa descartada. "Basta fazer isso" é o mantra. "Vamos consertar isso na versão 2" é outro mantra.

Então, normalmente, quando se codifica por 36 horas seguidas, a qualidade do código sofre ... mas não importa do ponto de vista comercial ... porque se você não enviar algo, mesmo algo quebrado, talvez não estar no negócio para fazer isso direito.

Quando alguém QUER codificar por 36 horas seguidas, é porque você tem um strong pico de criação, e você não quer interrompê-lo. Você não estará escrevendo códigos de qualidade para essas 36 horas, mas estará escrevendo o código do criativo. Você volta mais tarde e olha para esse código e se pergunta como ele funciona.

Criatividade é uma daquelas coisas que muitas vezes vem em surtos. Você não pode controlá-lo, então você aproveita quando ele se mostra. Você sempre pode corrigir o código quando é menos criativo.

    
por 31.07.2011 / 18:25
fonte
1

Há alguns meses, eu saí com meus colegas de trabalho bebendo. No dia seguinte chegamos de volta ao escritório ... mas, para nosso espanto, fechamos uma quantidade recorde de insetos.

Na superfície, esses bugs não eram fáceis de encontrar e a maioria não tinha nenhum passo de replicação, no entanto, ainda estar 'fora de nossas mentes' deve nos fazer 'pensar fora da caixa' quando se tratava de consertar o problema. erros.

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

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

    
por 30.07.2011 / 14:32
fonte
0

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

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

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

    
por 30.07.2011 / 15:03
fonte