睡眠不足の場合、実際に高品質のコードを生成できますか?[閉まっている]


37

私はプログラマーが睡眠なしで2日間コーディングし、コーヒーとRed Bullを飲むことを聞いたことがあります。また、The Social Networkのような映画では、Mark Zuckerbergが36時間プログラミングを行っているシーンを示しています。また、Facebook、Google、foursquareなどの企業では、24時間以上睡眠なしでコーディングできることも読んでいます。

これは本当ですか?睡眠不足の場合、実際に高品質のコードを生成できますか? レッドブルのようなものは睡眠を補うことができますか?


4
聖なるクラップ!私は人間/プログラマーだとは思わない。エイリアンかもしれない?:)
Gopi

25
「ソーシャルネットワーク」はドキュメンタリーではありません。Facebookの設立に関連する実際の出来事に大まかに基づいているだけです。マーケティングの策略として、「実話」の側面が取り上げられましたが、著者と監督がインタビュアーに追い詰められたときはいつでも、彼らはそれがほとんど「あり得たこと」についての想像であったことを認めるでしょう。
チャールズE.グラント

8
おそらくこれはskeptics.stackexchange.comに移動する必要があります...
エヴァン

6
しかし、それは通常、高品質のコードを生成するためです。残念ながら、完全に休息した場合でも平均品質のコードを生成することははるかに一般的です

4
私は、この質問を、38時間目覚めた翌日、そのうち32人が仕事中に読んだ。私はそれについて何か言いたいと思いましたが、基本的にプログラミングに費やされた気を散らさない時間はあなたの出力に適していますが、あなたが完全に疲れているときは気を散らされていません。ただし、想定どおりの正しい状態にすることに夢中になっている場合は、ビルド、テスト、デバッグ、文書化、および洗練を行うことができます。
dlamblin

回答:


77

単にいいえ。36時間のコーディングはプログラミングとは関係なく、むしろ人間の属性です。24時間目を覚ますことができる人は非常に少なく、目を覚ましているときでさえ、彼らの心は本当に問題解決能力を失います。眠い運転手は、他の車にぶつかるだけです。眠い会計士は、単に計算を間違えます。また、多くのプログラマーは眠いときには、質の低いコードを書きます。

PS:不眠症と呼ばれる病気があり、睡眠不足になります。しかし、Googleはそのような病気の人を雇うとは思わない。:)


28
+1:本当に優れたプログラマーは、コンパイラーに触れる前に、ほとんどの時間を問題について考えることに費やします。ソリューションが一般的によく考えられ、シンプルで、抽象的で、保守が容易な場合、コーディングは簡単になります。
ジャスティンシールド

1
@EOL:D十分に真実、「キーボード」を読み取る必要があります
ジャスティンシールド

4
私自身の経験では、午前9時(つまり12時間)の開始後、午後9時までに疲れてイライラし、まっすぐに考えることができず、何も書いたりデバッグしたりすることができません。家と睡眠は、徹夜のような愚かなことよりもはるかに効果的です。これが効果的であることは言うまでもなく、行われているというのは神話です。
すぐに

3
@quickly_nowまさに。コードは、時間の関数で指数関数的に悪化します。したがって、技術的には、コンピューターの前に座っていればコーディングできます。しかし、その後、SOに来て、O(n ^ n)ソート関数をどのように最適化できるかを尋ねないでください;)。
マッケイ博士

20
ちょっと待って、コーディングのわずか24時間後には眠ることができますか?私始めたとき、私この仕事が怪しく聞こえること知っていました!
ニッククレイバー

41

これはおそらく、よく知られた永続的な神話の1つです。説得力のあるアイデアであるため、よく耳にしますが、実際には根拠がありません。

ああ、確かに、高校を卒業したばかりの若い子供が36時間以内になんらかのコーディングの奇跡のように見えることをやめることができるでしょう。しかし、その方法で記述されたコードは維持可能ですか?読めますか?スケーリングしますか?賢明なプログラミング慣行に従っていますか?文書化されていますか?

Twitterは動作するサイトをまとめてハックし、負荷が大きくなりすぎて落ちたため、「正しい」方法で書き直しました。Facebookは、このようなプロジェクトのために比較的短い期間で元のサイトをまとめましたが、後に、Webサイトが実行されていたPHPプラットフォームをスケーリングしないため、多数の新しい開発者を持ち込みました。

例外はルールを証明します。


6
また、これらを最初に正しく実行することを心配しない魅力的な理由と考えるかもしれません-少なくとも、あなたが潜在的に真新しい市場を作り出しているときではありません。
アーロンノート

1
リンクした投稿によると、Twitterの書き直しは正しくありませんでした。アップデートをご覧ください。
jjnguy

@jjnguy:結構ですが、ダウンタイムとスケーラビリティの問題がTwitterにあったことを考えると、この例はまだ関連があるようです。
ロバートハーベイ

2
高品質のコードにはならないかもしれませんが、基本を失い、「眠っている」TDDを実行できれば、コードはそれほど悪くありません。疲れている間にコーディングを行うと、脳がランダムな思考を無視する可能性が低くなるため、より創造的になります。 en.wikipedia.org/wiki/Sleep_and_creativity
Ape-in​​ago

29

この神話について真実である可能性がある唯一の部分は、プログラマが長期間中断されない場合に最高のパフォーマンスを発揮するということです。コーディング中に、頭の中で多くのことができるほど、APIの使用状況や、コードの別の部分が自分や他の人によってどのように書かれたかを調べる必要がないため、コーディングが速くなります。中断された場合、フルスピードに戻るには常にある程度の時間がかかります。重要なこと(または楽しいこと)をしている場合、時間外なので通常の時間に家に帰るのを忘れることがあります。中断が帰宅したとき。同じ理由で、朝3時から5時まで起きていることでも知られています。

しかし、私が言ったように、コードの速度と品質は、どれだけの注意を払っているか、メモリ内で何回ジャグリングできるかによって異なります。睡眠が問題になると、あなたは自分の能力を最大限に発揮していると思うかもしれませんが、実際はそうではありません。提供された例のように開発されたほとんどのソフトウェアは、すぐに動き出しますが、それと同じくらい速く、大きな責任とメンテナンスの頭痛の種になります。

多くの作業をすれば間違いなく大量のコードを作成でき、十分な努力を払えば機能を次々と開発できます。ただし、アーキテクチャ/設計に注意を払わないと、簡単にスケーラブルで、保守や拡張が可能なソフトウェアを作成できません。経験から言えば、純粋なコードを書き続けるよりも、頭の中(または紙の上)でコンポーネント/インターフェイス/抽象化レイヤーを設計および調整することを考えるのは非常に困難です。


3
+1は、中断のない時間が質の高い時間になる可能性があるという考えを追加するためのものです(ただし、妥当な用量でのみ)。
エリックOレビゴット

1
@DXM濃度は非常に役立ちます。時間の量に対する時間の質
-lovesh

1
@lovesh-正確にはそうは言いません。(時間の質)x(時間の量)=結果。いずれかを増やすと結果が増えます。ただし、時間が長くなると、最終的に品質が低下します。私たちの目標は、常に結果を最大化することです。
DXM

13

全体は、「ゾーン内にいるという誇張のように聞こえます。コーダーとして完全に集中していると、時間がゆがんだり、分が秒になったりします。あなたはおそらく最も生産性が高いでしょう。その状態になることは時々困難であり、抜け出すことは非常に簡単です(主に外部要因)が、あなたがいるとき....すごい!


2
これを投稿したときに、「ゾーン内」というフレーズを含める方法を考えて投稿を書いていました。
knb

この時点で、すべての回答は「私も」であるため、コメントとして投稿するつもりでしたが、この現象について誰もまだ言及していないのは奇妙だと思いました。
MPelletier

2
実際、ゾーン内にいる場合、非常に長くコーディングする方がはるかに簡単です。ただし、この長さをコーディングした後にフォーカスを失うことは、控えめに言っても不快です。
-DasIch

10

私はできる-そして時々-36時間ストレートのプログラム。
私が今まで経験した最悪のことは、約10時間の睡眠で1週間だったと思います。
私にとって、カフェインとエナジードリンクは役に立ちませんでした。実際、このような長期的には、カフェインはかなりマイナスの影響を与える可能性があります。私のアドバイスはたくさん飲むことです。水分補給を維持し、トイレへの散歩は素晴らしい副作用です。足を少し伸ばして、自動的に短い休憩を取ります。

とはいえ、これはますます難しくなっています。私はそれが容量であると思います、それは排出され、最終的に使い果たされます。そして、身体的または精神的、長期的または短期的な、いくつかのマイナスの健康影響があるかもしれません、私は知ることができません。
私が言えることは、あなたはゾンビのように感じ、あなたはそのようなマラソンの後もそのように感じ続けるだろうということです。個人的には、これを約1年間頻繁に行った後、非常に大きな燃え尽き症候群がありました。
つまり、一部の人々はそのような期間にわたって効率的に作業できますが、費用がかかります。
これは通常、計画が不適切であり、非技術的なプロジェクトリーダーが残したギャップを埋める経験がなかったため、唯一の選択肢でした。

現在、このようなマラソン中に品質の高いコードが生成されることはほとんどありません。ただし、これの主な原因は、これらのマラソンが発生する状況です。非常に短い時間枠内で機能X、Y、およびZを提供する必要がある状況。その時点でコードの品質を本当に気にする人はいないので、クイックフィックスやその他のハックによって多くの技術的負債を抱えています。
同時に、これは脳のパフォーマンスが損なわれていないことを示しています。Quickfixとハックには概要と創造性の両方が必要です。

品質コードが1回の実行で作成されることはめったにないことを忘れないでください。特にコードの寿命が長い場合。コードの品質は、レビューとリファクタリングによって達成されます。締め切りの48時間前にそのようなことをする人はいません。

一番下の行は次のとおりですできる限り長く作業しないでください。4時間しか作業できない場合は、OKです。休憩を取り、その後作業します。8時間の仕事をこなす36時間、目を覚まそうとするのは無意味です。それぞれ4時間のセッションを4回行い、残りの20時間を使用して再生すると、2倍の作業が完了します。
このように長時間働くことができれば、過小評価に柔軟に対応できます。ただし、長期的な解決策は、計画と見積もりの​​プロセスを改善することです。職場でそれが不可能な場合は、ジョブを切り替えます。あなたがそのような長い時間働くことを人々が期待するなら、仕事を変えてください。誰にも何も証明する必要はありません。


これは大きな嘘のように聞こえます。誰も36時間のために働くず、実際に役に立つ何か生成することができます
BЈовић

@VJovic:まあ、そう言うなら、私たちは皆それを信じなければならないでしょうね;)
back2dos

5

優秀なプログラマーは実際に36時間プログラミングできます。36時間で最高品質のコードを作成できるというわけではありません。私は優秀なプログラマーではありません。大学では数回、30代には船の締め切りのバグを修正しようとしても数回しました。それは一般に愚かなアイデアであり、貧弱な計画とスケジューリングのスキルを反映しています。


1
そして、あなたができるからといって、あなたが効果的であることを意味するわけではありません、特に約12から15時間のマークの後。
すぐに

10
不良プログラマーも36時間プログラムできます。コーディング時間の長さは、コーダーの品質とは関係ありません。
マルジャンヴェネマ

5

健康であれば、目覚めたままで36時間働くことができます。ただし、この時点では、最適なコードを記述したり、非常に複雑な問題を解決したりすることはできません。私はたまに非常に長い時間働いてきました。ほとんどの場合、これはいくつかの期限を守ることでした。しかし、その後の作業のほとんどは、一部のリストの印刷、一部のレイアウトの研磨などのマイナーな機能の追加でした。多くのタイピングのように、多くの思考を必要とする場所はありません。主な機能と既に終了したプログラムの複雑な部分。

集中力の欠如が長時間の主な理由になることがあります。翌日には締め切りがありました。すでに非常に長い一日を過ごした後、私たちは全部を終えて午前2時でした。厄介なバグが1つだけ残っていました。上司は午前9時に顧客と予約を取り合ったため、十分な時間がありました。そうでなければ30分で修正できるはずの何かを見つけて修正するのに数時間かかりました。とにかくそれを見つけることができると確信していましたが、どうにかして夜が過ぎ去ったので、上司を失望させる理由はありませんでした。


5

はい。 たくさんの逸話的な情報は、それができることを示しています。私は、誰もが仕事のマラソンから習慣を身につけることができるとは思わない。医療インターンはこの種の時間を引きます。

おそらくもっと間違いを犯す可能性が高いでしょう。そもそも高品質のコードを書くことができると仮定していると思います。これらの状況では、あなたは銃の下にあり、それを機能させたいだけです。品質は考慮事項ではありません。資金を獲得したら修正します。


4
医療スタッフへの参照については+1。過労病院の医師はこれを定期的に行っていると思います...ストレスの多い夜勤とそれに続く日勤...
knb

6
今では慰めの考えがあります;)睡眠不足のインターンと生命を脅かす健康状態の人々。これらの間違いを「後で」修正してみてください。
リー

1
睡眠不足のインターンによってもたらされるリスクは十分に認識されており、多くの組織はこの慣行を排除しています。部分的には、トレーニングを行っている医師がこれらの長いシフトを入れたために、それが保持されます。
BillThor

4

それは不可能ではなく、実際に起こりました。この章は長いので、実際の段落を引用します。

緊密なグループのメンバーは、自身を「ハッカー」と呼びました。時間が経つにつれて、彼らは「ハッカー」の説明をストールマンにも拡張しました。その過程で、彼らはストールマンに「ハッカー倫理」の倫理的伝統を教え込んだ。ハッカーになるということは、単にプログラムを書くこと以上のものを意味する、とストールマンは学んだ。最高のプログラムを書くことを意味しました。可能な限り最高のプログラムを作成するために必要なのであれば、端末に36時間まっすぐ座っていることを意味しました。最も重要なことは、可能な限り最高のマシンと最も有用な情報に常にアクセスできることです。ハッカーはソフトウェアを通じて世界を変えることについて公然と語り、ストールマンはハッカーがこの崇高な大義を果たすことを妨げる障害に対する本能的なハッカーの軽daを学びました。これらの障害の主なものは、貧弱なソフトウェアでした。

もちろん、これはこれがすべての人にとって1つのルールであることを意味するものではありません。できる人もいれば、できない人もいます。最も重要なことは、邪魔されず、非常に生産性が高いと感じている期間に仕事をすることです。したがって、自分で試して結論を​​出すことができます:)


3

あなたがマシンなら、それは可能だと思います-私はそれができることを疑っていません。しかし、経験から、大多数のプログラマーは8時間から10時間のマークのすぐ後に悪いコードを書き、16時間のマークの後に恐ろしいコードを書くことを学びました。

私たちのチームが徹夜を余儀なくされた数回、実際にロールバックする必要のあるコードがいくつかありました。


品質に影響がある場合は、Facebookの
ユーザーがいつも

4
... Facebookでの最近の経験に基づいて、私はそれが私の議論とかなり一致していると言うでしょう。今日、Facebookのさまざまな部分を使用して、3つまたは4つのエラーが発生しました。
カレブブラゼー

3
@lovesh「彼らはそれをやると言われた」と「彼らはそれをやる」は2つの異なることです。
スコットCウィルソン

3

私はそれが正直であることを疑います。実際、X、Y、Zを達成した人々が24時間目覚めているという神話や物語にもかかわらず、彼らはたまたま極端な状況にあり、まれです。

昔、私は法律家にタイピングプールを提供していました。彼は時折、特定の時間に物事を試そうとするためにすべてのナイターを引っ張る人がいました。文書を起草するのに非常に時間のかかる人は、一般に、それらの文書を一晩の変更を元に戻すために送信することになります。私の見解では、カフェインのレベルを上げることで睡眠不足を乗り越えて、一度に約12時間以上(そしてそれでも過度に)高いレベルで一貫して実行することは不可能です。人々が伝えたいストーリーだと思いますが、正直なところ、法務文書のコーディングや作成など、仕事が何であるかに関係なく、長距離セッションでの平均的な仕事はめったに十分ではないことを認めます適切な休息を得た場合に出力を一致させるため。

運転手、重機の運転手など、どんなに優れていてもコーダーには特別なことはありません。彼らは疲れやすく、約12時間以内にコーダーが高品質の出力を提供できることを証明できればanyone然とします。 。


2

大学でプログラミングを勉強していたとき、日中よりも生産性が高いと感じた夜がいくつかありました。それは夜の気晴らしが少ないという事実と関係があり、雑草は私にじっと座っているのに十分快適にさせてくれました。朝8時までコーディングできたので、朝食に夢中になりました。翌日、私は午後5時までに精神的にクラッシュし、生産性を発揮する方法がなかったと述べました。夜間のプログラミングは生産性を高めることができますが、睡眠を奪われてもコードの品質が向上することはなく、コーディングの際に疲れることはありません。


2

私と他の多くのクリエイティブな人々は、両性格の特徴を示しています。ソフトウェアを設計するとき、私はファインマンのアルゴリズムに従う傾向があります。

  1. 問題を書き留めます。(分)

  2. 真剣に考えてください。(日と年の間)

  3. ソリューションを書き留めます。(日々)

睡眠が大幅に低下した(カフェインまたはノー)軽度のエピソードは、#3を完了するためのチケットです。


2

Skeptics.SEのこの関連記事を参照してください: Ballmer Peakは本当ですか?、特にESultanikによるこの回答。

なぜこれら2つの質問は関連していると思いますか?睡眠不足によって引き起こされる障害は、酔っているのに似ているように思えますが、私の主張を裏付ける言及はありません。

ESultanikの引用文献から引用して、

...控えめなアルコール消費は、主に二次プロセス(準備、照明の特定の部分、および検証)に基づいて創造性の側面を抑制し、主に一次プロセス(インキュベーション、照明の特定の部分、および復元)に基づいて創造性の側面を抑制します。

睡眠不足の状態で抽象的なアーキテクチャモデルを作成する方が優れているかもしれませんが、キーボードに入力された実際のソースコードはまだ無駄になります。


2

36時間コーディングを余儀なくされるのは、通常、製品の出荷期限が原因です。締め切りが迫っている場合、通常、コード品質が最初に捨てられます。「やるだけ」がマントラです。「バージョン2で修正します」は別のマントラです。

したがって、通常、36時間連続してコーディングしている場合、コードの品質は低下します。しかし、ビジネスの観点からは問題になりません。正しく行うために。

1つのWANTSが36時間連続でコーディングするのは、クリエイティブの急増があり、中断したくないためです。その36時間は高品質のコードを書くことはありませんが、創造的なコードを書くことになります。その後、後で戻ってそのコードを見て、どのように機能するのか疑問に思います。

クリエイティビティは、頻繁に起こるものの1つです。あなたはそれを制御することはできませんので、それが自分自身を示すときにそれを利用します。創造性に欠けるときはいつでもコードを修正できます。


1

数ヶ月前、同僚と飲みに出かけました。翌日、私たちはオフィスに戻って二日酔いになりました...しかし、驚いたことに、記録的な速さでバグを閉じました。

表面的には、これらのバグを見つけるのは簡単ではなく、ほとんどの場合、複製の手順はありませんでしたが、バグを修正する際には、「思いもよらない」ことを「箱から出して」考えなければなりません。

私たちは「睡眠不足」ではありませんでしたが、私たちはまだコードに取り組むための正しい考え方ではありませんでした...その日はまさに奇妙なことでした。

ああ、私たちのほとんどはJDとコーラを最大限に活用していました:)


+1これが質問に答えるかどうかは
わかりませ

0

私は、ほとんどの人にとって、長い間睡眠をとらずに長時間生産的に働くことは不可能だと思います。

しかし、たとえば3〜4時間の睡眠で素晴らしい仕事ができると思います。これは、睡眠の少ない激しい(知的)作業を数日間続けても機能します。

ただし、私にとっては、その後に回復期間が必要です。たとえば、通常の7〜8時間の睡眠で2泊します。


これは典型的なCS学生のスケジュールですよね?
-user16764
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.