ITエンジニア版: 知能と記憶力、パフォーマンスについての考察

rio
·

知能の定義

エンジニアは知識集約の仕事であるから、知能が大事であることに異論を唱える人は少ないと思います。さて、成人が知能を測る際に受けるWAIS-Vで測れる4つの指標得点は、「言語理解指標(VCI)」「知覚推理指標(PRI)」「ワーキングメモリー指標(WMI)」「処理速度指標(PSI)」の4種類があります。それぞれざっくりと、言語理解は言葉を使ったコミュニケーション力や問題解決力、知覚推理に関しては、情報を統合して前進する能力、ワーキングメモリについては、一時的に情報を記憶しながら課題を解く能力、処理速度は読んで字の如く仕事をするスピードであるといえるでしょうか。

知能は各々低かったり値がバラバラである状態より、理想的にはどれもバランス良く高ければ高いほどエンジニアとしての知能集約タスクをハイクオリティに、ハイスピードにすることに貢献するといえるでしょう。

記憶力

著者は高校生の頃、あまり記憶が得意ではない状態でした。なので、理系に進み、受験科目としても物理、地理と暗記があまり必要でない分野を選んで得点につなげることを選びます。ところが定期テストでは、物理はともかく地理であっても記憶が求められるほか、化学、世界史など他の科目ではとにかく記憶が大事で、著者は試験期間にこれでもか、と勉強したのですが、どうも振るわず記憶が最重視される試験では仮に地理など好きな科目でもあまり得点は取れなかったのです。本当に暗記さえできればとれるような試験のケースだと他のクラスメイトは高い点数とっている人も多くいましたが。。

このケースは記憶力の差で、記憶力があればあるほど知識の引き出しが多いと言えます。とはいえ、記憶しているだけでは実際の問題解決には使えないことであり、大事だと感じる点はエンジニアとして働く上で求められるのも、知識(記憶)をベースにした問題解決スキルであるということです。

パフォーマンス

上記をもとに、パフォーマンスを上げるために、記憶とは何を記憶すればよいのでしょうか?開発エンジニアで考えると、よく使うgitコマンドやdockerコマンド、ブラウザ、サーバー、インフラの理論やベストプラクティス、それぞれの専門用語(エンジニア間の会話では専門用語を使うことで説明のショートカットや共通認識ができるので好んで使われる)を記憶しておき、すぐに現場では引き出して発揮できればよいといえるでしょう。ここで記憶ができていないと、逐一インターネットや本などで調べつつ進めていくことになり、もちろん調べないといけない箇所はあるものの、実際の現場のタスクには時間制限があるので記憶をしなさすぎて全部調べているような状態だと、困難を生じるケースがあるのではないかと思います。

さて、記憶をベースにして、個別の問題解決に役立てるには、各現場によってコードの状態、開発手法、チーム事情はそれぞれ異なるので、知識をそれぞれの個別課題に当てはめて解けるようにする必要があるでしょう。まるで、開かずの扉を開けるために、自分が持っている鍵の全てを検証してどの鍵だと開くことができるのかを検証しているかのようです。ここでは、素早く自信の記憶を精査して最適な鍵をあれこれ試行錯誤しつつ進める実践的なスキルになるので、現場でどれだけ豊富な経験を積んできたか?の量とともに、純粋な応用をすることに関わる処理スキルが問われている局面だといえるでしょう。

パフォーマンスの改善

上記を踏まえて、パフォーマンスを改善するには、自分が解こうとしている課題(フロント、バック、インフラ)に対しての知識がないとすればまずそちらの習得に時間をかけるのは良い慣習と言えるでしょう。

逆に、鍵(知識)を集めているだけだと、こんな鍵形状の部分に使えそう、くらいの希薄な感覚しかない状態で、実際に鍵を使ったことがないから実際開けようとすると、やっぱり開かなかった、、のような試行錯誤のフェーズが増えたりそちらで苦戦することが予想されます。そう考えると、知識(記憶)と実践は両輪でどちらも必要と言えるのではないでしょうか?

ちなみに、知識(記憶)に時間をかけ過ぎても実践につながらないのでとっとと実践をしてその中で知識をおさえていけばいい、と東大に行った家族に言われたこともあるのですが、毎回の定期テスト(記憶が重要)では全科目100点近くをとっており、単に記憶力に優れたタイプだったのでは(同時に東大に入れるくらい知識の応用ができるタイプ)と推測しています。東大生だったりとても知能が高いタイプを観察していると、彼らは実践の中で勝手に知識を補充していくことが可能なようなのですが、知能に突出していないタイプだと、純粋に知識(記憶)インプット->実践をアジャイルで繰り返していくのが一つの効率の良い方法かなと思います。

知識がなく実践をする(なんとなくコードを書く)ことも可能かもしれませんが、実践をして体系的な知識がないとなると、実践力はあるけど知識がないような状態で、自分のやっていることを客観視できなかったり、言語化が難しく新人教育に困ってしまうかもしれません。

なお、記憶は純粋に睡眠の質が悪いと落ちてしまったり、生活に左右される部分もあると思うので、生活の改善も大事でしょう。現場でも各タスクの状況やメンバーの状況、会話ログを脳で記憶して置けるといいですが、最近だとBacklogだったりのツールでその辺り解消されてきたのでは?という印象です(文明の利器に感謝ですね...!)。パフォーマンスのために寝て、身体と脳に良い影響が出るような食事、生活を心がけたいところです。