日本刀を研ぐように、技術を磨くということ

新しい技術やプログラミングを学ぶときに、三つの学びの段階がある。

第一の段階が、新しい刀を鍛冶するように、新しいプログラミング技術を学ぶ段階。全く新しい分野を開拓し、今まで知り得なかった知識を得ること。具体的には、フロントエンジニアが新しく Golang で実装するバックエンドの開発手法を学んだり、Web2 ソフトウェアエンジニアが Solidity を用いたスマートコントラクトについて学んだりすること。

第二の段階が、刀を振る型を習得するように、技術を応用する段階。習得しかけている技術を、多方面から眺めてみることによって、その技術に対する技能を深掘りし、幅広く応用できること。具体的には、Ruby で Web アプリケーションの開発手法を学んだ学習者が、CRuby の動作原理から理解したり、ベンチマークの計測手法と最適化手法を学んでパフォーマンスエンジニアリングをできるようになったり、並列処理を可能とする API に詳しくなって高速な処理が可能なバッチアプリケーションの開発手法も学んだりすること。

第三の段階が、錆び付いてきた刀を研ぐように、誤った認識や古くなった常識を切り捨てる段階。過去に習得したが現在は陳腐化している内容や、誤って理解している領域について、熟考して正しい理解をすることで、その技術をより適切な場面で使えるようになること。具体的には、自分でサーバーを建てて Web アプリケーションを保守していた時代に覚えたスケール手法を、クラウドネイティブの時代に合わせた適切な手法を使うようになったり、手に入るメモリやディスクが技術の進歩によって前進した特性に合わせたパフォーマンスエンジニアリングの手法を学んだりすること。

一つの技術に習熟するためには、どれか一つだけ欠けていても足りない。

よく世間一般に言われることとして、「座学だけではダメ。手を動かして実践しよう」というアドバイスがある。これは、第二の段階について経験が不足していることを意味する。これはわかりやすい。

一方で、人は一度コストをかけて学んだものに対して、必要以上に愛着を抱いてしまうことがある。知識のアップデートを怠ってしまうと、いつの間にか切れ味の欠けた刀を持っていることに気づかない。刀を振りすぎて豆ができた努力に自惚れて、刀を研ぎ錆びついた知識を捨て去ることも、忘れてはいけない。

November 18, 2022