自分がどのようなスキルを保持しているかを把握することが大事なのは当然だとしよう。キャリアパスの形成だとか、技術的に己を研鑽するための道筋を考えるのに重要なのは言うまでもない。
そこで実際に自分がどのようなスキルを持っているか?という事をリアリティを持って自覚するには、平面的に思い付くままにスキルを列挙するのでは足りない。もっと別の手段が必要だ。
そこで技術ツリーというものを考えてみる。技術ツリーは戦略ゲームやエースコンバット*1で見ることができる、体系的に進化する何かの成長具合を表現するのに適した表現だ(Google)。ある要素は別の要素への進化/発展の可能性を擁していて、枝分かれしながら多様化していく。
例を挙げよう。例えばWebアプリケーションを開発するにはMVCモデルやHTTP、TCP/IP等の技術的概念の習得が必要だが、これらはある程度段階的に習得できると考えられる。そのようなときはTCP/IPの先にHTTP、その次にMVCモデルといった風にツリーを描くことができる。ただしいくつかの概念は互いに強い関連を有していて両方同時に学習しなければならないから、このような場合は両者を並列に扱う。
このように図にしてみると自分が今どのような位置にいるのかが分かるし、各技術の修得度も色分けしたりすることで分かりやすくできる。プログラミングに限らず様々な対象に使える。頭の中でぼんやりとしていたものが体系化されて新たな発見があるかもしれない。
この考え自体はとても普通で当然のように感じるけれど、いざやってみると便利だ。もしかしたら常識的事柄なのかもしれないが、僕にとってはちょっとした発見で嬉しかったのでメモ代わりに書いた。
*1:おもしろい飛行機ゲーム