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?
productivity
Peter Mortensen
fonte
fonte
Respostas:
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. :)
fonte
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.
fonte
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.
fonte
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!
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
Não é impossível e aconteceu de verdade. Como o capítulo é longo, deixe-me citar o parágrafo atual:
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 :)
fonte
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.
fonte
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 .
fonte
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.
fonte
Eu e muitas outras pessoas criativas demonstramos características da personalidade bipolar. Ao projetar software, costumo seguir o algoritmo de Feynman:
Anote o problema. (Minutos)
Pense bem. (Entre dias e anos)
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.
fonte
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,
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.
fonte
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.
fonte
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 :)
fonte
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.
fonte