私自身「面白いなー」と思う本があると一気見してしまうのですが、400メートルハードルのオリンピアンである為末大さんが書かれた『熟達論』は特に面白く、プログラミングやシステム設計を習得する上で参考になることが多くあるなと感じていました。
人がある分野で優れた腕を持つということのロジックがひも解けるのではないかと思っていますので、エンジニアとしてレベルアップするための参考としていただければ嬉しいです。
熟達までの道のり【遊・型・観・心・空】
『熟達論』の内容によると、熟達するまでには5段階あるとされています。
- 遊…遊びながら夢中に取り組み、関心を深めていく
- 型…実際に上手くやっている人のやり方を真似て、実践してみる
- 観…実践してみた結果を観察して、改善したいポイントを探す
- 心…実践する上での中心を見つけて、それを軸に取り組む
- 空…思いつくまま、身体が動くままに作品をつくっていく
この考え方をプログラミングに置き換えてみると、このようなイメージになります。
- 遊…形を気にしないで、動く処理を書いてみる
- 型…プログラムの型や、集中しやすい姿勢(型)を知る
- 観…型にあわせることで何を感じるか観察する
- 心…型にあわせたプログラムをつくることで、大切なことが何かを知る
- 空…会得してきたことを基にプログラムを書く
まずは【遊】びながら何か書いてみる
プログラミングをはじめてみると、変数の命名規則やclassのつくり方など、気になる成約が多々出てくるかと思いますが、まずは細かいことは気にせずに動くプログラムをつくってみることが大切です!
- どんなフローチャートでも構わないので、まずはプログラムを書いてみる!
- 自分の好きなようにやってみて「動いた!」という感動を得るところを目標にスタートする。
まずは、ここから!
といっても、何からしたらいいのかわからんのじゃ!
と思う方もいらっしゃるかと思いますが、プログラミングの種類によっては、めちゃくちゃ簡単に出来ちゃいます!
例えば、Pythonなんかだと特に実感するのですが、昔はいろんな機能の処理を書かなきゃいけなかったのが、ライブラリとしてすでに用意されているため、数行のプログラムで処理が完結しちゃうということも多々あります。
現代のプログラミングは本当にやりやすくなっているので、「なんだ!書けるじゃん!」という実感を持ちやすいです。
この体験が出来ると、一気にプログラミングを身近に感じられるようになりますので、まずは好きなように書いていき、次の型を身につける段階に進みます。
美しいプログラムから【型】を身につける
型を習得するというのは、スキルを磨く段階と考えると分かりやすいです。
そして、この型には2種類あると考えており
- プログラムに対する型
- 作業するときの型(フィジカル面における型)
この2つがあると思っています。
プログラムに対する型
プログラムに対する型というのは、見やすいプログラムを書くための型と思ってもらっていいです。
- 最初に変数を定義することだったり
- プログラムの固まり(メソッド、モジュールなど)や内部の処理に対するコメントを入れることだったり
- 同じような処理を共通化することだったり
ある程度、書き方をルール化することで見やすいプログラムを手早く書けるようになります。
JavaやPythonといったオブジェクト指向の言語や、C言語やVBAといった手続き型言語など、扱う言語によって型は異なってきますので、言語に合わせた見やすい型を身につけると、複雑なアルゴリズムでも、見やすく分かりやすい(品質の高い)プログラムを書けるようになります。
フィジカル面における型
次に、フィジカル面における型というのは、集中しやすい姿勢、視線、視点をつくることを指します。
- コンディションがイマイチな時は、こういうリズムで入ると集中しやすくなる
- このタイミングでコーヒーを飲むと集中しやすくなる
など、自分にとって集中しやすくなる状態をつくるために何をするといいかを理解することが、フィジカル面への理解につながります。
私の場合
- プログラミングに集中したいのに声をかけられることが多い日だった場合は、1時間席を外して集中しやすいところに行く
- 仕事の前にジムで筋トレしてアドレナリンを出す
というように、好きなことをすることで自分のリズムをつくったりもしています。
自分のリズムは自分でつくるしかないので、やりやすくなるための型を見つけることが自分のスタイル(土台)をつくるキーになりますから、こちらも参考にしてみてください。
自分を【観】て集中して出来ているかをチェック
型をつくったら、実践する自分を観察することが次の段階になります。
取り組んでいる自分を客観視することで
- いいパフォーマンスで出来ているか
- やりづらさを感じることはないか
などをじっくり観ていきます。
ここで大切になるのは、「良い・悪いをジャッジしない」ということです。
パフォーマンスを出せてるから良い、出せてないから悪いということではなく、
「こういうときはやりやすいのね」
「こういうときはやりづらいのね」
というように、単純に自分の特徴を理解することに特化することが大切です。
好きな形や苦手な形を知るということで、よりやりやすい環境をつくっていけるようになります。
自分の力を発揮できる中【心】をつかむ
観のステップで自分への理解が進んだら、集中する場面と少し力を抜く場面をコントロールしながら、どうしたらトータルで最大限のパフォーマンスを出せるようになるか抑えていきます。
自分が力を発揮するために大切にするべきコア(中心)は何かを理解するのがこの段階です。
人によっては「なんでそんなことするの?」と思われるくらいの偏りが見られる場合もありますが、それを自分流として受け入れ、「この形でやれば勝てる」というパターンをつかめればパフォーマンスを発揮出来るようになります。
この方向性が分かると、あとは手放すだけ!
「空」の状態をつくることで自分のスタイルが完成します。
何も考えず感じて動く【空】の状態をつくる
最後の「空」は、いわゆるゾーンの状態をつくるということになります。
ゾーンというのは、スポーツの世界で超集中状態のことを指すキーワードで、すべての意識を手放して気持ちよく動ける状態を目指すことを意味しています。
「型通りの動きを目指す」とか、「集中するために何をするか」など、何かを目指す・意識するということを手放すことで、気持ちよく動ける状態をつくるものです。
気がついたらあっという間に時間がすぎていたという経験をしたことはないですか?
スマホゲームをやっているときだったり、何かのイベントに参加していたときだったり、スポーツ観戦をしているときだったり、友達としゃべっているときだったり、目の前の出来事に夢中になって、気がついたら時間が経っていたというのがゾーンだと思っていいでしょう。
この状態を生み出すには、何かをしていることへの意識を捨てるということが必須条件となりますので、それが出来ると空気のように立ち振る舞えるようになるということになり、プログラミングをすることも自然と出来るようになるわけです。
【遊・型・観・心・空】の状態を行き来して上達を目指せ!
仕事という意識を捨てて、夢中になってプログラミング出来る状態にまでスキルを磨いていけたら、これだけやりやすい状態はないです。
- 遊…形を気にしないで、動く処理を書いてみる
- 型…プログラムの型や、集中しやすい姿勢(型)を知る
- 観…型にあわせることで何を感じるか観察する
- 心…型にあわせたプログラムをつくることで、大切なことが何かを知る
- 空…会得してきたことを基にプログラムを書く
このプロセスを何度も実践していくことで、より自分らしく作業出来るようになり、高い品質のプログラムを提供できるようになります。
ぜひ実践してみましょう!