アナログ金木犀

つれづれなるまままにつれづれする

プログミラング中にフロー状態になるには

kgmyshinです。今年はまだ一度もブログ書いていことに気付き、久しぶりに書いてみました。

今回の記事は、そういえば最近いわゆるフロー状態になることがないなとふと思い、そもそもフロー状態とは何?というところから始め、現状の課題と打ち手を考えてみました。

早速。

フローとは

wikiより。

フローとは、人間がそのときしていることに、完全に浸り、精力的に集中している感覚に特徴付けられ、完全にのめりこんでいて、その過程が活発さにおいて成功しているような活動における、精神的な状態をいう。ZONE、ピークエクスペリエンスとも呼ばれる。
チクセントミハイが見たところによれば、明確に列挙することができるフロー体験の構成要素が存在する。彼は8つ挙げている

1. 明確な目的(予想と法則が認識できる)
2. 専念と集中、注意力の限定された分野への高度な集中。(活動に従事する人が、それに深く集中し探求する機会を持つ)
3. 自己に対する意識の感覚の低下、活動と意識の融合。
4. 時間感覚のゆがみ - 時間への我々の主体的な経験の変更
5. 直接的で即座な反応(活動の過程における成功と失敗が明確で、行動が必要に応じて調節される)
6. 能力の水準と難易度とのバランス(活動が易しすぎず、難しすぎない)
7. 状況や活動を自分で制御している感覚。
8. 活動に本質的な価値がある、だから活動が苦にならない。

フローを経験するためにこれら要素のすべてが必要というわけではない。
フローに入るためのもう一つの重要な条件に、他者に妨害されない環境がある。

フロー状態に入るための条件

構成要素を見ると条件のようなものだったり、フロー状態に入ったあとの結果のようなものだったりが混じっているので、自分なりに条件だと思うものを抽出し、またなぜか別途重要とされているものも同列にしてみました。

  • 明確な目的を持っていること
  • 簡単すぎず難しくない事柄であること
  • 活動が苦にならないような事柄であること
  • 他者に妨害されない環境であること

いまの自分と照らし合わせてみる

「気付いたら数時間経っていた」という経験はそれなりにあります。高校の頃に数学の問題をひたすら解いていた時だったり、最近ではやっぱりプログミラングしている時だったり。

ただ、冒頭にも書きましたがここ数ヶ月はあまりそういうことがありませんでした。

集中がふっと切れたり、そもそものっけから集中できなかったりした時のことを思い出してみると、確かに上記の条件を満たせていないことに気づきます。

難しいなと感じることがある

「これはどうしよう、少し悩むな」という時、集中が途切れることがありました。悩み考えることは悪いことではないですが、途中に何度もそれに遭遇すると生産性が下がっていると感じます。

活動が苦になることがしばしばある

プログラミングしている最中に、すでにある品質の良くないコードにぶち当たった時に集中が途切れることがしばしばありました。 偶発的に不快になってしまったこと、それを自分が修正せねばならないということに苦痛を感じていました。

他者に妨害される環境にいる

やはり各種さまざまな通知によって、やっていることから意識が外れて集中が持続しないなということは実感していました。またこれは人に依るものではありませんが、ビルドに数分かかった時に意識がそれてしまい集中がもたないこともよくありました。

打ち手

「難しいなと感じることがある」に対する打ち手

  • 常日頃「難しい」と感じることがなくなるくらいに勉強する
  • 「難しいな」という感じることはあらかじめつぶしておく

常日頃の勉強はもちろんそうですが、限界はあります。そのため、作業を始める前に「難しそう」な所には当たりをつけて高い壁のみあらかじめ取り除いておくと良さそうです。そうすることで、集中がこまめに切れることはなくなるはず。

「活動が苦になることがしばしばある」に対する打ち手

  • 品質の良くないコードを書かない/書かせない
  • 作業前にあらかじめ当たりをつけておく

先の打ち手と似ています。理想を言えばそもそも「品質の良くないコード」に遭遇する状況をなくすことですが、チーム開発をしている以上全てをコントロールできないことがほとんどです。そのため、こちらも先と同様に作業前にあらかじめ当たりをつけておき偶発的な遭遇が作業中に起こらないようにします。

「他者に妨害される環境にいる」に対する打ち手

  • チャットツールなどの通知系を全て切る(緊急性のある通知はモバイルのみからにする)
  • 作業時は他者のいない環境で行う
  • コミュニケーションの必要な事柄は作業前にあらかじめつぶしておく

徹底的に必要なコミュニケーションはコントロールできる限り作業前にやっておきます。そうすることで集中は阻害されなくなります。

残課題

他者に妨害される環境の一因であるビルドの遅さ

これに関してはまだ課題としてあり、良い打ち手をまだ思いついておりません。何か良い方法あれば教えてください。。

最後に

打ち手をまとめると、作業前に入る前にいかに「集中を阻害するものを取り除くか」ということにかかっていました。

ひとまずはこれでやってみて、また課題が出てきそうであれば定期的に見直していきたいと思います。残課題に関しても良い打ち手が見つかれば紹介します。