give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

プログラマの成長とチクセントミハイのフロー理論

はじめに

先日、はてなブックマークのホットエントリー入っていたこちらの記事を読みました。

note.mu

すごく理路整然として読みやすい文章を書かれるので、プログラマとしても十分やっていけそうな方だなー、と思ったのですが、いろいろあって3年半で会社を辞められたそうです。(詳しくは上記記事をお読みください)

この話を読んだときに、ふと「チクセントミハイのフロー理論」の話を思い出しました。
というわけで、このエントリではフロー理論の話と、僕自身の経験談などをつらつらと書いてみることにします。

フロー理論の「不安・退屈・フロー」

フロー理論は、集中力が高まってその人のパフォーマンスが最大限に活かせる「フロー状態」が有名です。

それだけでなく、フロー理論を説明するときは、人の精神状態を「不安・退屈・フロー」の3つに分ける以下の図もよく使われます(という話を弊社ソニックガーデン社長の倉貫さんから聞きました)。

f:id:JunichiIto:20190122074243j:plain

不安状態

自分が持っているスキルに対して、与えられたチャレンジの難易度が高すぎると人は不安を覚えます。

f:id:JunichiIto:20190122074452j:plain
難易度が高すぎると不安を覚える

退屈状態

反対に自分が持っているスキルに対して、難易度が低すぎると人は退屈やマンネリを感じるようになります。

f:id:JunichiIto:20190122074612j:plain
難易度が低すぎると退屈になる

フロー状態

このどちらでも無い状態、つまり自分のスキルと難易度がちょうどよいときに、人はフロー状態に入り、仕事が楽しくて面白いものになります。

f:id:JunichiIto:20190122074851j:plain
スキルと難易度のバランスが取れるとフロー状態に入る

「ちょっとだけ難しい課題」に取り組んでいるときが一番楽しく、なおかつ確実に成長できる

プログラマの仕事でいうと、「自分が現在持っているスキルよりもちょっとだけ難しい課題」に取り組んでいるときが、一番フロー状態に入りやすいのではないでしょうか?

また、「ちょっとだけ難しい課題」をコツコツクリアしていけば、仕事を楽しみながらスキルアップしていくことができます。

冒頭で紹介したブログの方は最初に配属されたチームで、このフロー理論でいうところの「不安ゾーン」に思いっきり入ってしまったのだと思います。

以下のブログの文章とイラストを見て、僕はそう感じました。

配属先は海外向けサービスの会員認証基盤を作るプロジェクトだったが、「Ruby on Railsでinstagramみたいなサービスを作ってみましょう!」程度の知識の人間がJavaでOAuth2.0の各機能を実装をするのはハードルが高すぎた。また、Dockerを用いてテストの自動化などを命じられたが、「 黒い画面でlsって押すとファイル名が出てくる」程度の人間にはコンテナ技術など到底理解できなかった。あっという間に私は心が折れてしまった。
 

文系でプログラマーになったけど色々失敗して3年半で会社を辞めた話|denkigai|note

f:id:JunichiIto:20190122075512j:plain
画像の引用元: 文系でプログラマーになったけど色々失敗して3年半で会社を辞めた話|denkigai|note

しかし、そのあとはフロントエンドチームに移動し、JavaScriptを書く仕事に就いたそうです。
先ほどの「不安状態」とは異なり、こちらの仕事は楽しんでいた様子がうかがえます。
この頃はおそらく「フロー状態」に入ることが多かったのではないでしょうか。

入力フォームに寿司(🍣)を大量に打ち込めるようになったときはオフィスで小躍りした。

JavaScriptはブラウザで即座に実行される。それが何よりも嬉しかった。私に必要だったのは小さなステップと目に見える成果、そして自信だったのだろう。
 

文系でプログラマーになったけど色々失敗して3年半で会社を辞めた話|denkigai|note

僕が最初に入ったSIerには「ちょうどいい課題」を継続的に与えてもらった

僕自身のプログラマ人生を振り返ってみると、この業界に入った頃はいい感じにフロー状態をキープできていたと思います。

一番最初は「マスタメンテ画面の項目追加ぐらいだったら、たぶん伊藤くんでもできるよ」と、非常に易しい課題が与えられました。
当時の僕はほぼ「プログラミング未経験」でしたが、頑張ればなんとかなりました。
自分の書いたプログラムがちゃんと動くと「やった!」と、すごく満足感を覚えました。
今思えば、「フロー状態に入りやすい、いい課題を与えてもらったな」と思います。

その後も、ちょっとずつ、ちょっとずつ、「前よりも難しい課題」が与えられました。
たまーに、「不安状態」や「退屈状態」に入ることもありましたが、そこまでは多くなかったので、結構楽しみながら「ほぼ未経験」から「そこそこのプログラマ」にスキルアップできたように思います。
最初に入社したSIerは、そういう意味ではすごく「当たり」だったのかもしれません(その一方で、ブラックな面もいろいろありましたが・・・w)。

ソニックガーデンに入った頃は「不安状態」でいることが多かった

「会社を辞めてしまった」ブログの方の話は、むしろ僕が今勤めているソニックガーデンに入った頃の方が近いかもしれません。
前職からソニックガーデンに転職した直後は、難易度の上がり方がちょっと大きすぎた気がします。
入社して2〜3年はフロー状態よりも不安状態になっていることの方が多かったです。

その証拠に、こんな気持ちを書いたブログ記事があったりします(苦笑)。

当たり前と言えば当たり前ですが、求められるハードルがめっちゃ高い!
そして当然、先輩プログラマが持っているスキルもめっちゃ高い!この格差は一体何なの!?
ある程度はこういう状況になるだろうと覚悟していましたが、それでも現実はその覚悟よりも遥か上でした。

(中略)

そんなわけで正直言ってここ1〜2週間はちょっと自信喪失気味でした。
「ブログで偉そうなこと書いてる資格なんて僕にはない。そんなことをしてるヒマがあったら、もっと勉強して一日も早く他のメンバーに追いつかねば!!」とか思ってたので、しばらくブログも放置しようかと思っていました。
 

ソニックガーデンに入社して1ヶ月が過ぎました - give IT a try
僕は運良く?「不安状態」から脱出できた

幸いなことに、僕の場合はひいひい言いながらも3年ぐらいでこの不安状態を脱出することができました。
そこに至るまでの過程は下記のスライドにまとめてあります。


ソニックガーデンに入った頃はRuby初心者だったのに、いつの間にかRubyの本まで出版するようになっていました😅

このように、僕はなんとか(運良く?)不安状態を脱出することができましたが、プログラマになってみたものの、開発の現場に入ってみたら難易度が高すぎてずっと不安状態に入ってしまう人は、結構多いんじゃないかなと思います。

まとめ

というわけで、このエントリでは「チクセントミハイのフロー理論」に絡めて、課題の難易度とプログラマの成長について語ってみました。

最近は「プログラミングを覚えて、半年で年収1000万のフリーランスになろう!!」みたいな宣伝をよく見かけるのですが、僕自身の経験に照らし合わせると、こういう目標を立てるとフロー理論で言うところの「不安状態」に思いっきり飛び込んでいくことになるんじゃないかなあ、と心配になったりします。

まあ、「半年で年収1000万」は極端だとしても、「すぐになんでもできるスーパープログラマにならなければ!!」と考えている(焦っている)人は多いかもしれません。

もちろん、高い目標を立てることは悪くないのですが、あまり急激に自分のスキルを上げようとすると、不安状態ばかりが続いて心が折れてしまうかもしれません。

どれくらいの難易度が適切なのかは人それぞれだと思いますが、「プログラミングってしんどい、楽しくない」という気持ちが続いている人は、このフロー理論のグラフを思い出して、自分のスキルと今取り組んでいる課題の難易度をちょっと見直してみると良いかもしれませんよ😉

f:id:JunichiIto:20190122074243j:plain
あなたが今取り組んでいる課題はどのポジション?

あわせて読みたい

僕自身のこれまでのキャリアは、以下の記事にまとめてあります。
こちらもあわせてどうぞ。
geek-out.jp

僕はまだ読んだことはありませんが、チクセントミハイのフロー理論について詳しく知りたい人はこの本を読むといいかもしれません。

フロー体験 喜びの現象学 (SEKAISHISO SEMINAR)

フロー体験 喜びの現象学 (SEKAISHISO SEMINAR)