web-dev-qa-db-ja.com

プログラミングの特定の側面が完了するまでに10秒以上かかる場合、どのように集中力を維持しますか?

何か(コンパイル、起動時間など)がほんの数秒以上かかる場合、私は(プログラミングの観点から)自分がしていることに集中するのが非常に困難です。事例としては、しきい値は約10秒のようです(そして、私は今それを見つけることができませんが、同じことを言った研究について読んだことを思い出します)。したがって、通常は、変更を加えてから、プログラムを実行してテストします。それには約30秒かかるので、他の何かを読み始め、20分経ったことがわかる前に、(幸運なら)プログラミングに戻るためのコンテキストスイッチに対処するのにさらに10分以上かかります。 。

私が数分かかるはずのいくつかのことは文字通り完了するのに数時間かかると言っても過言ではありません。

他のプログラマーがこの傾向に対抗するために何をしているのか非常に興味があります(または私がユニークで、彼らがこの傾向を持っていないのですか?)。どんなタイプの提案でも大歓迎です-「コンパイルボタンを押した後、あなたの手に座る」から精神的なトリックまで、「変更をテストするために何かを開始するのに30秒かかる場合は、開発プロセスに問題があります」 !」

141
Jer

コンピューターがビープ音を鳴らしたり、音を鳴らしたりする 'alert'という小さなコマンドラインユーティリティを作成しました。次に、makeなどの長いコマンドを実行する場合、_make; alert_を実行します。可能な場合は、引数を取ることもできるので、引数によって音が異なります。したがって、_make; alert $?_を実行すると、a)ビルドが完了し、b)成功または失敗したことがわかります。そんなに空想する必要はありません。 _echo -e "\a"_だけで十分です。

本当に派手で迷惑なものにしたい場合は、テキスト読み上げパッケージを使用してダイアログポップアップをトリガーしてください。

ここでの主なアイデアは、仕事関連のタスクが完了するとすぐに気を散らすことをやめることです。

117
retracile

私も同じ問題を抱えており、私にとっての解決策は、あなたが吸い込まれないような何かをすることに時間を費やすことでした。私にとって、これは通常、(1)水のボトルを満たすか、(2)立ち上がってとにかく動きを必要とする私の足を伸ばすためにオフィスの周りを30秒歩く。あなたはインターネットを閲覧することに迷う可能性があります。自分のキュービクルを歩き回って迷うことはめったにありません。

104
eykanal

あなたの健康のために何かをしてください:

立ち上がってコンピューターから離れ、手と腕のストレッチ運動をします。これには最大2〜5分かかります。 RSIに苦しんでいないあなたの将来の自己は、これを感謝します。

また、2〜5分の休憩については、 ポモドーロテクニック を読んでください。これは、頻繁に短い休憩を取り、現在のタスクから離れて少し物事を沈めるという考えに基づいています。それはあなたの思考の列を完全に失うのではなく、あなたの脳に息吹を与えるのに十分な長さの短い休憩です。

29
ZweiBlumen

開発は創造的なプロセスです。特にオフィスに多くの注意散漫がある場合は、常に生産的になることはできません。 Joel Test は静かな労働条件を示唆する理由です。

Joel Spolskyも 「ゾーンにいない」ことの意味を説明しています 。何かがあなたの仕事を妨げるたびに、あなたは10分を費やす必要があり、多くの場合、ゾーンに戻って再び生産的になるためにより多くの時間を費やす必要があります。

気晴らしがたくさんあります:

  • あなたの妻からの電話、
  • あなたの近くのオフィススペースにいるビジネスパーソンへの電話、
  • 助けを求めている同僚、
  • お腹がすいている
  • 個人的な問題がある、
  • 10年前に経験の浅い開発者が作成したレガシーコードに取り組む必要があり、リファクタリングを行わなかった場合、
  • 遅いPCまたは遅いインターネット接続がある場合、
  • コンパイルプロセスが長く、
  • 等.

それとは何の関係もありません。あなたができる唯一のことは、気晴らし自体を取り除くことです:

  • オフィスに電話はありません、
  • 静かな労働条件、
  • 高速なコンピューターとインターネットアクセス
  • 高速コンパイルプロセス、
  • 等.

あなたのケースでは、それがあなたの気を散らすコンパイラであるなら、コンパイル時間を減らすことを試みてください:

  • プログラムのサイズを小さくする(たとえば、一部のIDEでは、いくつかのプロジェクトをソリューションからアンロードして、コンパイル時間を大幅に短縮する)、
  • 毎晩のビルドを使用し、作業中のコンパイルを減らし、
  • より高速なマシンを購入する(他に何もする必要がない場合)
  • 等.
25

私が言ってくれると思いますが、そこに座って終了するのを待つだけです。

継続的に活動し、積極的に活動する必要性を感じないように、自分を再訓練する必要があります。これは、開発者だけでなくすべての人に影響を与える非常に有害な問題です。社会は絶え間ない刺激(視覚、聴覚、精神)の必要性に取り付かれています。携帯電話を引き出してテキストメッセージを送信したり、ネットサーフィンをしたり、Facebookをチェックしたりせずに、30秒以上アイドル状態でいることはできません。

コンパイルを押して、1分ほどかかる場合は、座って脳をリラックスさせる絶好の機会だと考えてください。何か刺激的なことをしたいという衝動に抵抗し、非活動の瞬間を楽しんでください。

時間が経つにつれ、より簡単になり、脳を1日中100%で発射させ続けようとするのをやめたときに、はるかに優れた職場体験が得られます。

9
Alan Barber

@retracileの提案に同意しますが、 Zenプログラミングルール に従って、一度に1つのタスクのみに集中する必要があることに注意してください。電話に応答したり、Webを閲覧したり、ソーシャルネットワーキングを行ったり、マルチタスクを実行したりすると、生産性が低下する可能性があります。短い待機遅延を使用して、既存のタスク/ソリューションと、それを改善するために何ができるかについて考えます。

8
sakisk

ドアポストにバーが付いています

enter image description here

プルアップは5回しかできないので、1分もかかりません。または私はお茶を作ります。

8
Lukasz Madon

私にとって、私の焦点を維持する方法は、ワークスペースが何であれ、クリーンなワークスペースを維持することに冷酷であることです。現在のプロジェクトに含まれていないものは、神聖な信号対雑音比の雑音です。フォーカスを維持するための重要な部分は、信号対雑音比を高く保つことです。

コーディングするときは、最近使用していないプログラムを閉じ、定期的にブラウザーのタブを削除し、現在のプロジェクトに直接関連しない項目をデスクトップから削除することを意味します。私は10秒の遅延を使用して「ラウンドを作成」します。つまり、タブを閉じる、プログラムを閉じる、一時ファイルを削除する、アーカイブする必要があるものをアーカイブするなどです。

「ラウンドを行う」という習慣を身に付けると、ウサギの足跡を防ぐのにも役立ちます。これは、現在のタスクを継続的に評価し、思い出させるためです。

今日すでに5回開いているタブを再度開くか、コマンドを再起動する必要がある場合、少額の料金がかかります。15回目の昇格された権限でプロンプトを表示しますが、キーボードショートカットなどのアクセラレータを利用すると、確かに非常に小さな価格です。

6
Caleb

私が働いていない実際の時間を追跡するのに役立ちます

これにはいくつでも使用できます。私はあなたのためにこれを行うためにダウンロードできるそこに多くの無料のアプリがあることを知っています(今私の頭の上から何かを考えることはできませんが、誰かが私にいくつか提供してくれたら、私はこの答えにそれらを追加します)、または自分で作成するのはとても簡単です。通常は、画面の隅にある小さなウィンドウであるWorking/NotWorkingのボタンを使用して作成したものを使用し、フォーカスを切り替えるたびに、オンになっている方をクリックします。

チェスの時計も機能します

あなたの時間を追跡するという行為自体は、あなたが仕事に費やすべきであることにどれだけの時間を費やしているかをより気づかせてくれます、そして私は自分がその超興味深いスタックオーバーフローの質問、またはブログを去るように強制するので、私はより生産的になります。記事、そして仕事に戻る

6
Rachel

注意力を維持するために、落書きを使用しています。私はいつもペンとメモ帳をキーボードの後ろに置いて、落書きしています。それは意味のない一枚の紙の上をこする以上のものではありませんが、それは私の注意を十分に上に保ち、気を散らすことがないので、自分が取り組んでいたものにすぐに戻ることができます。

私は無意識のうちにこれを一生やりましたが、最近それについてのwikiを見つけました: http://en.wikipedia.org/wiki/Doodle

5
Pieter B

何をしても行かないでください StackExchangeサイトのいずれか。彼らはあなたを吸うでしょう:)

さらに真剣に、何かが完了するのを待つ間にWebを閲覧することは、生産性にとっては好ましくありません(現在のタスクに関連する何かを調査している場合を除きます)。

私は通常、1〜2分以上はかからない小さなタスクをいくつか実行します。 (何かをきれいにする、コメント、メモを書く)。

4
Christian P

その10〜30秒の間、何かを行ってください。

  • それは多くの精神活動を必要としません
  • コンパイルしているコードを開いて、もう一度確認します(何かが間違っているか、それを改善する方法があるかもしれません)。

その間、時間がかかることがわかっているようなことをしないでください(時間を費やす余裕がない場合)。

  • 本を読み始める
  • 時間がかかることがわかっている場合はメールを読む

また、コンパイルの終了を知らせるオーディオアラームをインストールしないでください。あなたの同僚はそれを感謝します。

1
BЈовић

あなたのケースでは、立ち上がって少し歩き回ります。 「ゾーン」に戻るのが難しい場合は、おそらく遠すぎるためです。ウェブ上で何かを行うことは、単に別のゾーンであり、時間の経過を追跡するのが簡単なゾーンです。脳が望むことを明確にして、散歩に出かけたり、理想的にはトイレに行ったり、ランダムな同僚と話したりしてください。自動操縦では、裏で多くのことを行います。休憩はコーディングにとって悪くはありませんが、それは良いことですが、アイデアは、すべてのシリンダーでしばらく点火を停止し、バックバーナーが何を思いつくかを確認する一方で、心のより意識的な部分が休息を与えることです。優れた開発者は人間の計算機ではありません。自動操縦で直感的でパターンマッチングを行う脳の部分に、しばらくの間それをさせます。

これが単なるコーディングの問題ではない場合は、ADDを検討することをお勧めします。

1
Erik Reppen

起床して歩き回るなどの提案は、サイクルが長い(1時間程度)場合に適しています。しかし、サイクルタイムが短くなり、vim間を行き来して数分おきに移動することに気づいたら、パイプラインに留まることでゾーンに留まります。ビルドまたはテストスイートの実行中は、コードを確認し、ビルドまたはテストが成功した場合にとにかく次のチャンクで作業を開始します。

1
stevegt

この「空き時間」の使い方については、毎日始めに計画を立ててください。それは含まれるかもしれません

  • いくつかの文書化タスクに追いつき、
  • 次に作成するクラスのユニットテストケースを作成し、
  • あなたが学びたいと思っていたいくつかの新しいテクノロジーを研究し、
  • お気に入りの叔母に手紙を書いて、

または本当に何でも。

この二次的なタスクは常にデスクトップのどこかにあるウィンドウで開いてください。 「コンパイル」ボタン(または30秒以上かかっているもの)を押すとすぐに、セカンダリタスクに切り替えて、実際に前進するのに十分な時間をかけます。これには数分かかる場合があります。または少ない可能性があります。

あなたが二次的な仕事をしている間、これはあなたの脳に焦点を当てるべきではないということを心に留めておいてください。プログラミングについて考え続けます。これは簡単ではありません。それでも、頻繁にコンテキストの切り替えに苦しむことになります。

これを行うと、コンテキストを何度も失っても、失った時間は実際に時間を浪費したわけではなく、1日の終わりにそれを示すものがあります。しかし、最も重要なことは、その日の初めに、その日の二次的なタスクがどうなるかを計画することです。

1

コンパイル時間を使用してコードをドキュメント化し、コードをクリーンアップして、コードを適切に配置できるため、IDEから離れることなく、コードの品質を向上させることができます。

1
saiy2k

私は通常、バグ、タイプミス、またはコードのスタイルを改善する方法を探しています。それでもコードを見ることができますが、私は(常に)興味深いことに気を取られることはありません。また、 this

1
samson

ADHDが少しあると考えられます。多くの人がやります。対処メカニズムは、他の回答(または薬物療法)で示されているとおりです。

1
Mike Dunlavey

Google Chromeを使用している場合、一般的に仕事中のインターネットの気晴らしのために、私は The Pomodoro Plugin をお勧めします

個人的には、勤務時間中は生産的ではないと思います。あなたがコンパイルしているので、それはあなたが息をするのに十分な努力をしたことを意味します...悪用したりコンテキストから抜け出さないように、コンパイルがエラーを生成しない場合は次のステップを考え続けてください...エリア:デスクトップ、タブ、エクスプローラー...

0
M3HD1

あなたが述べていることは完全に正常です。

ユーザビリティ調査を行っているときは、遅延を桁違いに調べていました。ユーザーがボタンをクリックしたとき、どのくらい待つ必要がありますか?

  • 0.1秒:知覚される遅延なし
  • 1秒:フォーカスに変化なし
  • 10秒:注意が失われた
  • 1分:ユーザーは別のタスクに切り替えます
  • 10分:ユーザーは立ち上がって出発します

タイピングなどの複合操作など、多くの例外があります。

パフォーマンスの仕事をしているときに、「操作Xはどれくらい速くすればいいの?」答えは、ユーザーが遅延を感じることができる限り、より速い方が良いでしょう。

あなたの場合、あなたはその10秒のしきい値に達していて、あなたの注意がドリフトします。あなたができる最善のことは、遅延を減らすことです。遅延が短いほど、生産性が向上します。画面の左側にコードがあり、右側に実行中のアプリがあるとします。コードを編集すると、アプリはリアルタイムで変化します。あなたがそこにいるまでは、改善の余地があります。

ジェフの最近のブログ投稿も参照してください(それにつながる大量の優れたコンテンツ): http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html =

何か他のものに切り替えるつもりなら、あなたがしている仕事と同じようにあなたの脳を引きつけない何かを選んでください。机の掃除、瞑想、ストレッチ、腕立て伏せ、アート、窓の外を見てください。

0
Jay Bazuzi

SASでアドホックな作業を行う場合、次の行が非常に便利です。

dm log 'postmessage "Code finished"' continue;

これにより、先行するすべてのコードの実行が完了すると、ポップアップダイアログボックスが生成されます。他の言語にも同等のものがあると思います。私はこれをretracileの答えへのコメントとして投稿したでしょうが、十分な評判がありません。

0
user46745