¿Puede realmente producir código de alta calidad si tiene falta de sueño? [cerrado]

37

He oído hablar de programadores codificando durante dos días sin dormir y tomando café y Red Bull . También en películas como The Social Network , en una escena, muestran que Mark Zuckerberg ha estado programando durante 36 horas. También he leído en alguna parte que en las empresas como Facebook, Google, en cuadro , etc. Pueden código durante más de 24 horas sin dormir.

¿Es esto realmente cierto? ¿Puede realmente producir código de alta calidad si tiene falta de sueño? ¿Pueden cosas como Red Bull compensar el sueño?

Peter Mortensen
fuente
44
¡Santo cielo! No creo que sean humanos / programadores. Pueden ser extraterrestres? :)
Gopi
25
"La red social" no es un documental. Solo se basa libremente en los eventos reales relacionados con la fundación de Facebook. Como estratagema de marketing, se jugó el aspecto de la "historia real", pero cada vez que el autor y el director eran acorralados por un entrevistador admitían que era principalmente su imaginación acerca de "lo que podría haber sido".
Charles E. Grant
8
Tal vez esto debería trasladarse a skeptics.stackexchange.com ...
Evan
66
Algunos pueden, pero eso se debe a que normalmente producen código de alta calidad. Desafortunadamente, es mucho más común producir un código de calidad promedio, incluso cuando está completamente descansado ...
44
Leí esta pregunta el día después de haber estado despierto durante 38 horas, 32 de ellos en el trabajo. Quería decir algo al respecto, pero básicamente cualquier tiempo no distraído dedicado a la programación es bueno para su producción, pero cuando está totalmente cansado no está distraído. Sin embargo, puede crear, probar, depurar, documentar y pulir si está obsesionado con llevarlo a un estado correcto imaginado.
dlamblin

Respuestas:

77

Simplemente no . La codificación durante 36 horas no tiene nada que ver con la programación, sino que es un atributo humano. Muy pocas personas pueden permanecer despiertas durante 24 horas e incluso cuando permanecen despiertas, su mente realmente pierde habilidades para resolver problemas. Los conductores que tienen sueño, simplemente golpean otros autos. Los contadores que tienen sueño, simplemente cometen errores en sus cálculos. También muchos programadores cuando tienen sueño, escriben menos código de calidad.

PD: hay una enfermedad llamada insomnio que te hace dormir menos. Pero no creo que Google contrate a personas con esa enfermedad. :)

Saeed Neamati
fuente
28
+1: Los programadores realmente buenos pasan la mayor parte de su tiempo pensando en un problema antes de tocar un compilador. Cuando lo hacen, la solución generalmente está bien pensada, es simple, abstracta y fácil de mantener, la codificación se vuelve trivial.
Justin Shield
1
@EOL: D lo suficientemente cierto, eso debería leer "teclado"
Justin Shield
44
Mi propia experiencia es que alrededor de las 9 p.m., después de un comienzo a las 9 a.m. (es decir, 12 horas), estoy cansado, irritable, no puedo pensar con claridad y soy incapaz de escribir nada o depurar. El hogar y el sueño son MUCHO más efectivos que las cosas tontas como tirar toda la noche. Que esto se haga, y mucho menos que sea efectivo, es un mito.
rapid_now
3
@quickly_now Exactamente. El código empeora y empeora exponencialmente en función del tiempo. Entonces, técnicamente, podría codificar siempre que pueda sentarse frente a una computadora. Pero entonces, no vaya a SO y pregunte cómo se puede optimizar su función de clasificación O (n ^ n);).
Dr. McKay
20
Espera, ¿puedes dormir después de solo 24 horas de codificación? ¡ Sabía que este trabajo sonaba sospechoso cuando comencé!
Nick Craver
41

Es probablemente uno de esos mitos conocidos y persistentes. Lo escuchas mucho porque es una idea convincente, pero de hecho no tiene una base real.

Oh, claro, tal vez algún niño recién salido de la escuela secundaria pueda lograr lo que parece ser un milagro de codificación en 36 horas. Pero, ¿se puede mantener el código escrito de esa manera? ¿Es incluso legible? ¿Se escala? ¿Sigue prácticas de programación sensatas? ¿Está documentado?

Twitter hackeó un sitio que funcionó, y luego terminó reescribiéndolo de la manera "correcta", porque se cayó cuando la carga se hizo demasiado grande. Facebook reunió su sitio original en un período de tiempo relativamente corto para tal proyecto, pero luego trajo a un grupo de nuevos desarrolladores para reescribir la plataforma PHP en la que se ejecutaba el sitio web, porque no se escalaba.

Las excepciones prueban la regla.

Robert Harvey
fuente
66
También se podría ver esto como razones convincentes para no preocuparse por hacerlo bien la primera vez, al menos, no cuando se está creando un mercado nuevo.
Aaronaught
1
La reescritura de Twitter no fue cierta según la publicación a la que se vinculó. Mira la actualización.
jjnguy
@jjnguy: es justo, pero el ejemplo todavía parece relevante, dado el tiempo de inactividad y los problemas de escalabilidad que tuvo Twitter.
Robert Harvey
2
Es posible que no conduzca a un código de alta calidad, pero si tiene lo básico y puede hacer TDD "mientras duerme", entonces el código no será tan malo. Lo importante de la codificación mientras está cansado es que es menos probable que su cerebro ignore los pensamientos aleatorios, por lo que se vuelve más creativo. en.wikipedia.org/wiki/Sleep_and_creativity
Ape-inago
29

La única parte que podría ser cierta acerca de este mito es que los programadores funcionan mejor cuando no se interrumpen durante un período prolongado de tiempo. A medida que codifica, mientras más cosas pueda hacer en su cabeza, más rápido podrá codificar porque no necesita buscar cosas como el uso de API o cómo usted u otra persona escribió una parte diferente del código. Encuentro que cuando me interrumpen, siempre toma un tiempo considerable para volver a la velocidad máxima, y ​​si estoy haciendo algo importante (o divertido), a veces renunciaré a ir a casa a la hora normal porque después de las horas es cuando tus interrupciones se van a casa. También he sido conocido por quedarme despierto hasta las 3 o 5 de la mañana por la misma razón.

Sin embargo, como dije, su velocidad y calidad de su código depende de cuánta atención esté prestando y cuántas cosas pueda hacer malabares en la memoria. Cuando el sueño se convierte en un problema, puede pensar que está trabajando a plena capacidad, pero realmente no lo está. La mayoría del software desarrollado como en los ejemplos que proporcionó, se pone en marcha rápidamente, pero al igual que el ayuno termina siendo una gran responsabilidad y dolor de cabeza de mantenimiento.

Definitivamente puedes producir mucho código si trabajas mucho, y con el suficiente esfuerzo puedes sacar una característica tras otra. Pero sin prestar atención a la arquitectura / diseño no producirá software fácilmente escalable, mantenible o ampliable. Hablando por experiencia, es MUCHO más difícil pensar en el diseño y hacer malabares con los componentes / interfaces / capas de abstracción en su cabeza (o en papel) que seguir escribiendo código puro.

DXM
fuente
3
+1 por agregar la idea de que el tiempo ininterrumpido puede ser tiempo de calidad (pero solo en dosis razonables).
Eric O Lebigot
1
La concentración de @DXM ayuda mucho. Calidad de tiempo sobre Cantidad de tiempo
lovesh
1
@lovesh: No diría exactamente eso. (calidad de tiempo) x (cantidad de tiempo) = resultados. Aumentar cualquiera de los dos aumenta los resultados. Sin embargo, aumentar en el tiempo, eventualmente disminuye la calidad. Nuestro objetivo siempre es maximizar los resultados.
DXM
13

Todo esto suena como una exageración de estar "en la zona". Cuando estás completamente concentrado, como codificador, el tiempo se deforma, los minutos se convierten en segundos, etc. Probablemente estés en tu punto más productivo. A veces es difícil entrar en ese estado, y bastante fácil salir de él (factores externos principalmente), pero cuando estás ... ¡guau!

MPelletier
fuente
2
Estaba escribiendo mi publicación pensando en cómo incluir la frase "en la zona" cuando publicaste esto.
knb
Solo iba a publicarlo como un comentario porque en este punto, todas las respuestas son "yo también", pero pensé que era extraño que nadie hubiera mencionado el fenómeno todavía.
MPelletier
2
De hecho, si está en la zona, es mucho más fácil codificar por mucho tiempo. Sin embargo, perder el foco una vez que haya codificado tanto tiempo es desagradable, por decir lo menos.
DasIch
10

Puedo, y lo hice a veces, programar durante 36 horas seguidas.
Creo que lo peor que he pasado fue una semana con aproximadamente 10 horas de sueño más o menos.
Para mí, la cafeína y las bebidas energéticas no me ayudaron. De hecho, a tan largo plazo, la cafeína puede tener efectos bastante negativos. Mi consejo es beber mucho . Te mantiene hidratado y los paseos al baño son un efecto secundario agradable: estiras un poco las piernas y automáticamente haces breves descansos.

Dicho esto, me parece cada vez más difícil. Supongo que es una capacidad, que se agota y finalmente se agota. Y tal vez tenga algunos efectos negativos para la salud: físicos o mentales, a largo o corto plazo, no puedo decir.
Lo que puedo decir es que te sientes como un zombie y continuarás sintiéndote así los días después de tal maratón. Personalmente, tuve un agotamiento realmente grande después de hacer esto con frecuencia durante aproximadamente un año.
Es decir: algunas personas pueden trabajar de manera eficiente durante ese período de tiempo, pero tiene un costo .
Por lo general, era la consecuencia de una mala planificación y de no haber tenido experiencia en llenar los vacíos que dejaban los líderes de proyectos no técnicos, era la única opción.

Ahora rara vez encontrará código de calidad producido durante tales maratones. Sin embargo, la causa principal de esto son las circunstancias, en las que ocurren esos maratones: situaciones, en las que necesita entregar funciones X, Y y Z en un período de tiempo muy corto. En ese momento, a nadie le importa la calidad del código, por lo que acumula una gran cantidad de deudas técnicas a través de soluciones rápidas y otros hacks.
Al mismo tiempo, esto indica el rendimiento intacto del cerebro: las soluciones rápidas y los hacks requieren visión general y creatividad.

No debe olvidar que el código de calidad rara vez se escribe en una sola ejecución. Especialmente si el código tiene una larga vida útil. La calidad del código se logra mediante revisión y refactorización. Nadie se molestará en hacer eso 48h antes de la fecha límite.

La conclusión es: solo debe trabajar el mayor tiempo posible y no más . Si solo puede trabajar durante 4 horas, entonces está bien. Tómese un descanso y trabaje a partir de entonces. Intentar permanecer despierto durante 36 horas en las que tiene 8 horas de trabajo no tiene sentido. Obtendrá el doble de trabajo si realiza 4 sesiones de 4 h cada una y usa las 20 h restantes para regenerarse.
Si puede trabajar tantas horas, significa que es más flexible para responder a la subestimación. Sin embargo, la solución a largo plazo es mejorar su proceso de planificación y estimación. Si eso es imposible en su lugar de trabajo, cambie de trabajo. Si la gente espera que trabajes tantas horas, cambia de trabajo. No tienes que demostrar nada a nadie.

back2dos
fuente
Esto suena como una gran mentira lejana. Nadie puede trabajar durante 36 horas y, de hecho, producir algo útil
Bћовић
@VJovic: Bueno, si tú lo dices, entonces supongo que todos tendremos que creerlo;)
back2dos
5

Los buenos programadores pueden programar durante 36 horas. No significa que puedan producir su código de mejor calidad durante 36 horas. Estoy no un buen programador, y lo hice varias veces en la universidad, e incluso un par de veces en mis 30 años cuando se trata de arreglar errores de los plazos de buques. En general, es una idea estúpida y refleja malas habilidades de planificación y programación.

Charles E. Grant
fuente
1
Y el hecho de que pueda no significa que sea efectivo , especialmente después de aproximadamente las 12 a 15 horas.
rapid_now
10
Los malos programadores también pueden programar durante 36 horas. La duración del tiempo de codificación no tiene nada que ver con la calidad del codificador.
Marjan Venema
5

Puede mantenerse despierto y trabajar durante 36 horas si está sano. Pero en este momento no escribirá su mejor código ni resolverá problemas muy complicados. He trabajado durante muchas horas de vez en cuando. La mayoría de las veces esto era para mantener algunos plazos. Pero el trabajo consistía principalmente en agregar características menores, como imprimir algunas listas, pulir algunos diseños. Nada donde necesites pensar mucho, más bien escribir mucho. Las características principales y las partes complicadas de los programas ya estaban terminadas.

A veces, su falta de concentración es la razón principal de las largas horas. Una vez tuvimos una fecha límite al día siguiente. Después de un día ya muy largo, habíamos terminado todo y eran las 2 de la mañana. Solo quedaba un error desagradable. Mi jefe tenía una cita con el cliente a las 9 de la mañana, así que había mucho tiempo. Me llevó varias horas encontrar y arreglar algo que, de lo contrario, habría solucionado en media hora. Solo sabía con certeza que sería capaz de encontrarlo de todos modos y no había razón para decepcionar a mi jefe, ya que de alguna manera la noche se había ido de todos modos.

Thorsten Müller
fuente
5

Sí. Mucha información anecdótica indica que puede. Dudo que alguien pueda hacer un hábito físico con los maratones de trabajo. Los internos médicos tiran de este tipo de horas.

¿Es probable que cometas más errores, probablemente? Supongo que todo esto supone que puedes escribir código de calidad en primer lugar. En estas situaciones, estás bajo el arma y solo quieres que funcione. La calidad no es una consideración. Lo arreglaremos después de obtener fondos.

JeffO
fuente
44
+1 para la referencia al personal médico. Creo que los médicos del hospital con exceso de trabajo están haciendo esto rutinariamente ... trabajando turnos nocturnos estresantes seguidos de turnos diurnos ... una forma segura de quemarse después de unos meses o incluso años.
knb
66
Ahora hay un pensamiento reconfortante;) Pasantes privados de sueño y personas con condiciones de salud que amenazan la vida. Intenta corregir esos errores "más tarde".
Leigh
1
Los riesgos planteados por los pasantes privados de sueño son bien reconocidos, y muchas organizaciones están eliminando la práctica. En parte se mantiene porque los médicos que están haciendo el entrenamiento ponen esos largos turnos.
BillThor
4

No es imposible y ha sucedido de verdad. Como el capítulo es largo, permítanme citar el párrafo real:

Los miembros del grupo muy unido se llamaban a sí mismos "hackers". Con el tiempo, extendieron también la descripción del "hacker" a Stallman. En el proceso de hacerlo, inculcaron a Stallman en las tradiciones éticas de la "ética del hacker". Stallman aprendió que ser un hacker significaba más que solo escribir programas. Significaba escribir los mejores programas posibles. Significaba estar sentado en una terminal durante 36 horas seguidas si eso era lo que se necesitaba para escribir los mejores programas posibles. Lo más importante, significaba tener acceso a las mejores máquinas posibles y la información más útil en todo momento. Los piratas informáticos hablaron abiertamente sobre cambiar el mundo a través del software, y Stallman aprendió el desprecio instintivo de los piratas informáticos por cualquier obstáculo que impidiera a un pirata informático cumplir con esta noble causa. El principal de estos obstáculos era un software pobre,

Por supuesto, esto no significa que esta sea una regla para todos. Algunas personas pueden hacerlo, mientras que otras no. Lo más importante es no ser interrumpido y trabajar durante los períodos en que te sientes muy productivo. Por lo tanto, puedes probar por ti mismo y sacar las conclusiones :)

sakisk
fuente
3

Supongo que es posible, si eres una máquina, no dudo que algunos puedan hacerlo. Pero la experiencia me ha enseñado que la gran mayoría de los programadores escribirán un código peor poco después de la marca de 8 a 10 horas, y un código horrible después de la marca de 16 horas.

Las pocas veces que nuestro equipo se vio obligado a pasar toda la noche, en realidad terminamos con un código que necesitaba ser revertido.

Kaleb Brasee
fuente
así, si se ve afectada la calidad ¿cómo es que los chicos en Facebook hacer todo el tiempo (al menos su dijo que el hacerlo)
lovesh
44
... basado en mis experiencias recientes con Facebook, diría que es bastante consistente con mi argumento. Hoy recibí unos 3 o 4 errores al usar diferentes partes de Facebook.
Kaleb Brasee
3
@lovesh "Se dice que lo hacen" y "lo hacen" son dos cosas diferentes.
Scott C Wilson
3

Lo dudo para ser honesto. De hecho, a pesar de los mitos y las historias sobre personas que lograron que X, Y y Z hayan estado despiertos durante 24 horas, se encuentran en circunstancias extremas y son raros.

En el pasado, solía proporcionar un grupo de mecanografía para una firma de abogados que ocasionalmente hacía que la gente tirara de todas las noches para tratar de sacar cosas para momentos particulares. Cualquiera que hiciera horas locas redactando documentos generalmente terminaba enviando esos documentos para revertir sus cambios durante la noche. En mi opinión, no es posible realizar un rendimiento constante a un nivel alto durante más de aproximadamente 12 horas seguidas (e incluso eso es excesivo) sobreviviendo a la falta de sueño al aumentar sus niveles de cafeína. Creo que es una historia que a la gente le gusta contar, pero si son honestos, admitirán que su trabajo promedio durante las sesiones de larga distancia, independientemente de cuál sea el trabajo, ya sea codificar o escribir documentos legales, rara vez, si alguna vez, es lo suficientemente bueno para que coincida con su producción si tienen un descanso adecuado.

No hay nada especial en los codificadores, no importa cuán buenos sean, como los conductores, como los operadores de maquinaria pesada, están sujetos a fatiga y me sorprendería si alguien pudiera demostrar que un codificador puede proporcionar resultados de alta calidad sin descansar en aproximadamente 12 horas .

temptar
fuente
2

Cuando estudiaba programación en la universidad, había algunas noches en las que me sentía más productivo que durante el día. Tiene que ver con el hecho de que hay menos distracciones por la noche, la hierba me ha hecho sentir lo suficientemente cómoda como para sentarme quieta y, de todos modos, no me levanté ese día hasta las 2 de la tarde, así que no estaba demasiado cansada. Podría codificar hasta las 8 de la mañana antes de estar locamente hambriento de mi desayuno. Dicho esto al día siguiente, me estrellaría mentalmente a las 5 p.m. y no había forma de que fuera productivo. La programación por la noche puede ser más productiva, pero privarte del sueño nunca aumenta la calidad del código y nunca planeas estar cansado al codificar.

Philluminati
fuente
2

Yo y muchas otras personas creativas demostramos características de la personalidad bipolar. Cuando diseño software, tiendo a seguir el algoritmo de Feynman:

  1. Escribe el problema. (Minutos)

  2. Piensa muy bien. (Entre días y años)

  3. Escribe la solución. (Dias)

Un episodio hipomaníaco con sueño drásticamente reducido (cafeína o no) es solo el boleto para terminar # 3.

Jon Purdy
fuente
2

Consulte esta publicación relacionada en Skeptics.SE: ¿Es real el Pico Ballmer? , y en particular esta respuesta de ESultanik .

¿Por qué creo que estas dos preguntas están relacionadas? Me parece que la discapacidad causada por la falta de sueño es algo similar a emborracharse, aunque no tengo ninguna referencia para respaldar mi reclamo.

Citando de la referencia citada de ESultanik,

... el consumo modesto de alcohol inhibe aspectos de la creatividad basados ​​principalmente en el proceso secundario (preparación, ciertas partes de iluminación y verificación), y desinhibe aquellos basados ​​principalmente en el proceso primario (incubación, ciertas partes de iluminación y restitución).

Diría que uno puede ser mejor en la creación de modelos de arquitectura abstracta mientras está privado de sueño, pero el código fuente real escrito en el teclado aún estaría ebrio.

revs rwong
fuente
2

Cuando uno se ve obligado a codificar durante 36 horas, generalmente se debe a una fecha límite para enviar el producto. Cuando uno está en ese plazo, la calidad del código suele ser lo primero que se descarta. "Solo hazlo" es el mantra. "Lo arreglaremos en la versión 2" es otro mantra.

Por lo general, cuando uno codifica durante 36 horas seguidas, la calidad del código sufre ... pero no importa desde el punto de vista comercial ... porque si no envía algo, incluso algo roto, es posible que no esté en el negocio para hacerlo bien

Cuando uno QUIERE codificar durante 36 horas seguidas, es porque tiene un fuerte pico creativo y no desea interrumpirlo. No escribirá código de calidad durante esas 36 horas, pero sí escribirá código creativo. Luego regresa más tarde y mira ese código y se pregunta cómo funciona.

La creatividad es una de esas cosas que a menudo viene a borbotones. No puede controlarlo, por lo que lo aprovecha cuando se muestra. Siempre puedes arreglar el código cuando eres menos creativo.

Erik Funkenbusch
fuente
1

Hace unos meses, estaba afuera con mis compañeros de trabajo bebiendo. Al día siguiente, llegamos a la oficina colgados ... pero para nuestro asombro, cerramos una cantidad récord de errores.

En la superficie, estos errores no eran fáciles de encontrar y la mayoría no tenía ningún paso de replicación, sin embargo, aún estar "fuera de nuestras mentes" debe habernos hecho "pensar fuera de la caja" a la hora de solucionar los errores.

Aunque no estábamos 'privados de sueño', todavía no estábamos en la mentalidad correcta para trabajar en código ... es extraño lo que sucedió ese día, siempre lo mencionamos.

Ah, y para los inclinados, la mayoría de nosotros estábamos al máximo en JD & Coke :)

Dal
fuente
+1 No estoy seguro de que esto responda la pregunta, pero me gustó la respuesta de todos modos :-)
Danny Varod
0

Creo que trabajar de manera productiva durante tanto tiempo sin dormir mucho es imposible para la mayoría de las personas.

Pero creo que puedes hacer un trabajo increíble con solo, por ejemplo, 3-4 horas de buen sueño. Esto funciona incluso durante varios días consecutivos de trabajo intenso (intelectual) con poco sueño.

Sin embargo, para mí, esto debe ser seguido por un período de recuperación posterior; digamos, un par de noches con las habituales 7-8 horas de sueño.

knb
fuente
Este es el horario típico de un estudiante de CS, ¿no?
user16764