
スピードアップ
最近考えてるスキル周りのことを「スピードアップ」という観点で語ってみようと思う。
反復の力
そもそも「スキルとは何か」という話に近いが、自分のシンプルな理解を伝えると、「反復した経験による熟練」のことだと思う。
例えばキーボードのタイピングを考えても、キーを見ずにタイプする練習をして、正しい指で何回押したかがそのキーの入力速度に関係する。これは、大学の時に自分を被験者にテストしたことがあるので確信してる。英語の文章をひたすら入力するソフトを作り、それで練習しまくったところ、経験した回数の対数をとった数字に比例して入力速度が速くなる。
全てのスキルがこの対数に比例する関係ではないと思うが、反復の回数にともなって上達することはおそらく間違いないと思う。そして、熟練するというのはある種スピードアップと関係する。
コーディング
自分はコードを書く時に、できるだけコピペしないでタイピングして書いてる。急いでる時やだるい時や、向上心に乏しい時はコピペするけど。
同じフレーズみたいなお決まりのコードの部分も新鮮な気持ちで書くことで新たな気づきがあったりする。
そして、同じコードだとしても考えて書いてる経験が繰り返されることで、どんどん迷わなくなる。早くなる。その基礎練が実は細部に効いてくると思ってる。
例えば、角度の計算とかのコードは360度を超えてしまうことで訳がわからなくなる。なので、-180~180の範囲に収まるように計算したりする。(0~360でもいい)
その計算のコードははっきり言ってややこしい。さらにローパスフィルターかけたくて値を鈍らせる計算仕込みたい時はその罠がさらにややこしくなる。ここで細かく説明すると長くなるので端折るが、とにかく鬼門だ。
そのコードも今までの人生で何度となく書いてきた。毎回ややこしいなと思って書くのだが、過去の自分のコードをコピーするよりも書くことを繰り返したことで、頭のその辺の考えが洗練されてビルド検証をする回数が年々少なくなってる。ここ最近はビルド一発で期待通りに動くことも多くなってる。
というようにさまざまなコードを繰り返し書くことでさまざまな修練がされスピードアップにつながってる。
1人の人に集約
まるで他人事のように書いてるが、自分のことだ。例えば、テクノロジーとコストと納期のバランスをつけたい時に、3人の専門家が取り組むとしよう。テクノロジーの人間が考えうる実現方法を3種くらい考えて提示する。でも基本的にはやりたいこともあるだろうから、ある種のバイアスがコスト高に向いてたりする。
もう1人のコストの積算ができるひとが、テクノロジーの提案を数字に置き換えていく。
さらにスケジュールの工程を書くマネージメントの人が、テクノロジー担当と話しながらスケジュールを組んでいく。
それを眺めて、どこかのパラメータが収まらないと、コストカットのためにビデオボードスペックダウンしたいとか、台数減らせないかとか話が出る。でも、コスト下げるためにした変更で新たな工数が増えることもある。それによるスケジュールの変更や仕上がりのクオリティの確認などが必要になる。つまり、3人でやると大変。
これがもし1人の人が全部できたら、テクノロジーの組み立てをする時点でスケジュールとコストを想像しながら組み立てていける。落とし所のイメージをつけつつ考えるので、衝突はなく最短の試行回数で収束するだろう。
と、こんな感じで、1人の人間がスーパーマルチだとスピードアップがすごい。それは、コミュニケーションが不要になることがでかい。多人数だといちいち言語化して話さないといけない。資料も作るだろうし打ち合わせの日程調整も必要だ。とにかく時間がかかる。その上でそのハードルのせいで妥協も生まれる。つまり、品質においても1人でやれると高くなる。
自分は主にやりたいからという理由でさまざまなスキルを獲得して1人で全体感が掴めるようになってきてるが、これはスピードアップと品質の向上に役立ってると感じている。
慣れを超えて
さっきの反復の話とほぼ同じだが、人間は慣れるのだ。例えば、緊張するような状況も次第に慣れてくる。例えば現場で何かデバッグをするとかでコードを書く場合、多くの人はできるだけやりたくない状況だろう。でも、自分なんかは、コード書く時は大体そういうトラブルの時なんで、全然なんとも思わない。むしろ「コード書ける!」と喜んだりもする。
慣れて我慢するというよりも、楽しくてワクワクしてるくらいの方がよりいい。人は気持ちでパフォーマンスが大きく変わるので、楽しめることがベストだろう。「おら、ワクワクすっぞ」だ。わかるだろうか。
思考
コード書く話で少し触れているが、上記のような考え方の修練みたいなこともある。たとえば、自分は中学生くらいからさまざまなテーマについて考えてきた。例えば、「好きなことを仕事にするべきか否か」などだ。こういう問いは考える時期によって結論が変わったりするのだが、自分はこのテーマについて何百回も考えてると思う。なので、考え方の組み立てが何パターンもある。その組み立ての通り道の違いで結論が違うことも反復でマスターしていく。つまり、思考する速度が上がるのだ。決断のスピードと言ってもいいかもしれない。
さまざまなテーマについて思考するということで、「思考」の修練になる訳だ。
コミュニケーション
思考するテーマはさまざまあれど、コミュニケーションの問題は頻度が高いテーマだろう。たとえば、今日話してたとき、相手が急にイラッとした感じになったけど、あれはなんでなんだろう。などと言ったシチュエーションはよくある。
そういう時に、会話の履歴を辿っていくと、大概意味の取り方が複数あることで誤解が生じてるケースがある。一旦そこに気をつけると話が長くなる問題に行き着く。誤解なきよう説明過多になるのだ。それはそれで「お前の話はつまらない」といった雰囲気になりがちでよくない。できるだけフレンドリーに少ない言葉で話すけど、誤解は少ないというのがベストだろう。つまり、相手による。相手によってどこまで詳しく話すべきかが変化し、最適化が必要だ。
そんなこんなで、コミュニケーションの修練はさまざまなスピードアップに効く。誤解がなくなれば世界は平和になるだろうといつも思うが、スムーズなコミュニケーションはスピードがあがる。
試行回数
ここまでスピードアップで語ってきた訳だが、反復もセットになってる気がしてきた。そして、習熟度が上がり、スピードが上がると、試行回数の増え方も早くなる。多くのことは大数に比例するので、試行回数の重なる速度が上がっても、習熟度はリニアに上がったりはしない。徐々に上昇角度は下がる。でも回数さえ重ねると少しは伸びるのだ。
質の高い修練はより結果を生む。
問題
ここまで、まるで回数を重ねることが苦がないかのように書いてきたが、実際はどうか。
自分の経験に置き換えて考えて欲しい。
そうだ、「飽きる」のだ。とにかく繰り返しの作業は飽きる。つまらなくなる。なので、試行する意欲が低くなる。それでは上達できない。
なので、飽きないように考える工夫が必要だ。その工夫もまた試行回数によって強化される。
喜び
重要な罠がある。修練を重ねて上達を感じるのは最高の報酬だろう。気持ちがいい。
ただその気持ちよさは、繰り返しによって鈍化するのだ。過去と同じ経験では喜べなくなったりする。
そうだ、つまり、気持ちの上では、繰り返すことは飽きたり喜びが鈍化したりといいことが少ない。
熟練者のメンタル
自分の過去の経験だとビリヤードだ。始めた頃はどんどん上達するので楽しくてしかたがない。そこそこ上手くなると楽しくなっていく。
それがB級くらいまではとにかく楽しくいけた。が、A級に上がった頃から辛くなる。A級になるとA級と戦うことが増えるので、ミスが許されなくなる。ミスが許されないということは、派手な攻め方とかはリスクが高くて出来なくなる。つまり、派手なチャレンジを楽しむことができなくなる。
ただ、そのミスが許されない緊張感のある戦いで勝利するのはそれまでにない喜びがあったりする。シビアなレベルに上がれば上がるほど、違いがわかるようになりその違いを楽しめるようになるのだ。
つまり、熟練者には熟練者にしか見えない世界があって、そこには別の価値観があるわけだ。
まとめ
とにかく質の高い訓練こそが全てで、反復しかない。センスが良いねなどというのは、反復して得た結果のスピード感が漂わせることで、天性のものなんかないと思う。
そして、全てを楽しむことが重要で、楽しめないのはセンスがないのかもしれない。
と、シビアでしかないつまらない記事をまた書いてしまった。