プログラミングと心理学の忘備録

自分の知識をストックしていくためのブログ

プログラマーはフロー状態に入りやすいのでは?

スポンサーリンク

f:id:chi_tana:20170924210342j:plain:w600

フロー状態という超集中状態に入るためには8つの要素があり、プログラマーの仕事って結構当てはまりそうだと思ったので書いてみる

フロー状態とは

※フロー状態の説明です。知ってるよって人は飛ばして下さい。

まずフロー状態とは、「ある物事に取り組んでいるときに、完全にそのことにのめり込み、集中している状態のこと」だそうです。時間を忘れるくらい何かに没頭している状態ということですね。

フロー体験の8つ構成要素

そのフロー状態に入りやすいときの条件として、次の8つがあります。

  1. 明確な目的(加えて実現手段や実行結果の予想もできる)
  2. 専念と集中(ある物事に深く集中し探求する機会を持つ)
  3. 自意識の低下(我を忘れた状態になれる)
  4. 時間感覚のゆがみ(作業中は時間が経つのを早く感じる)
  5. レスポンスの速さ(行ったアクションに対するフィードバックが速い)
  6. 適切な難易度(活動が易しすぎず、難しすぎない)
  7. 状況や活動を自分でコントロールしている感覚
  8. 活動自体に本質的な価値を感じる

参考:フロー (心理学) - Wikipedia

この中から当てはまる!と思った項目がいつくかありました。

レスポンスの速さ

まず一番最初に思い浮かんだのは、作業に対するレスポンスが速いこと。

なんでかというと、デバッグを行うとすぐに結果がわかるから!

コードの文法とかの間違いならIDEの機能ですぐわかるし、作ったものをすぐに実行して結果を確認することもできますよね(きちんとしたテストは別に行う必要があるけど)

つまり、ダイエットや勉強なんかは結果が出るまでしばらくかかるけど、そういうものに比べると成果を確認できるまでの時間がとても短い。

適切な難易度

次に、仕事に適切な難易度があること。

言い換えると、自分の実力よりも少し難易度の高い課題に取り組めること。なぜなら、全く同じ課題にぶつかることはめったにないから。

技術的に知らないものを扱うことも多いし、過去に解決できた方法と全く同じ方法だと解決できないこともある。こうしたらできるのではないか?と試行錯誤しながら取り組む機会も少なくないと思う。

プロジェクトによって言語や開発方法も異なるし、新しく覚えることが何もない現場はひとつもなかったかな。

「既知のものと未知のものの割合が5:5のとき、人は最も高い学習効果をあげる」と論文で定義している心理学者*1もいますし、DaiGoさんも作業内容の2割は未知のことに振り分けるように意識しているそうです。

明確な目的/状況のコントロール

仕事をする上で大事なことにもつながるけど、この処理って何のために必要なのか?という視点を持つことが必要だと思う。

まあ、背景を理解しているというか。

例えば、後続の処理のためにデータを加工している、とか、この分析のためにこのデータを取得しているという内容。

そういう観点を持っている人は気付きも多いから提案もできるし、逆にただ言われたことだけしかしない人は未然に防げたミスも防げない。

気づいて提案できる人は、「自分で状況をコントロールできること」にも繋がる

「この課題を解決するために、こういう対応が必要なので、これだけの期間が必要です。」ということが言えれば、自分から状況をコントロールできるようになりますね。

おわりに

他の要素も「本質的な価値を感じる」はプロジェクトによってあるかもしれないし、コーディングしてるときは時間を早く感じるって人は「時間感覚のゆがみ」が当てはまるので、プログラマーは意識すればフロー状態に入りやすい要素が多いんじゃないかな?と思いました。

後はDaiGoさん曰く、作業中に邪魔が入らない環境も大事、ということだったのでパーテーションがあったりするとなお良いと思う!

書いたきっかけは、この本にフロー状態について書いてあったこと

「好き」を「お金」に変える心理学

「好き」を「お金」に変える心理学