日々常々

ふつうのプログラマがあたりまえにしたいこと。

技術から入ってもいいと言う話

システム開発の分野は技術の移り変わりが早く(これも他の分野と比べたことないので「早い気がする」と言うだけなのだけど)、なんらかの成功を収めた企業などの採用しているものがバズワードとなって一気に広まったりします。この時、その技術だけを追ってしまう現象がよく観測されます。だからバズワードになるんだけど。

批判的な意見

バズワードに飛びつくのは往々にしてアンチパターンです。例えば「モノリスからマイクロサービスへ」でも、明確な理由もなくマイクロサービスに飛びつくのは避けるよう書かれています。

書籍に限らず経験のある人は技術の螺旋を見通し、「この技術は結局のところ重要な課題を解決しない」と示唆する発言をしたりします。 強く辛辣な言葉もたまに見かけます。「そこに問題はないんだけどな」とか。

こう言う意見を無邪気に聞いてしまう人は、場合によっては「本質」と言う言葉に振り回されるようになります。 「本質はそこじゃないんだ」とか言うものの、見通せているかは危うかったりして。 いっちょ噛みで言う「本質」は「完全に理解した」と同義ですし、そんなすぐに本質を見抜けるのなんて卓越した技能を持った人だけです。居ないとは言わないけど、多分その一部ではないんじゃないかな。 そして結局何をすればいいのか途方に暮れているようなのも散見されます。

強そうな人の強い発言を目にしてしまうと、その技術を習得することに抵抗を覚えるでしょう。 これ自体は自然な気持ちだと思いますが、強い発言は広大な背景を持ってなされるものです。その背景は当人にとって当たり前のことなので、わざわざ語られたりもしません。 強い発言は往々にして正しく、説得力があります。経験から発せられる一本筋の通った発言に惹かれるのは当然ですが、その意見を取り入れられる土壌がない状態ではおそらく劇薬でしょう。

技術から入ってもいい

と言うことで、掲題の通り。技術から入ってもいいと思っています。

特定の技術は、特定の課題を解決するための模範解答の一つです。 短い記事やブログでなく、ある程度のボリュームの書籍や実用に耐えるツール、テンプレートなどまで昇華された技術には学ぶ価値があります。

対象の問題領域に対して知識が不足している状態で、問題だけを見てコアを掴めるのは一握りのモデリング能力を有した人だけでしょう。少なくとも私にはできない。 その問題を捉え、ある側面で切り取ったものが技術だと思います。 その特定の技術に精通すれば、解決しようとしている問題領域が、少なくともその技術の実装者が捉えたモデルが習得できます。 他の捉え方を身につけるのは、その視点を得てからでも遅くはありません。遅くはないはずです。早い遅いが何で決まるかは知らないけど。

とにかく その技術を最終到達点と認識しなければ大丈夫です。 逆に言えば、その技術があらゆる問題を解決する銀の弾丸(「銀の弾丸」は狼男にしか効かないので、万能ではないと思うんだけど、なんか万能の代名詞として使われますよね。なんでだろ。)やゴールデンハンマーのように捉えたとしたら大丈夫ではありません。先にあげた「批判的な意見」はこれを嗜めるものだと思っています。当人にはそんなつもりもなく、思ったこと言ってるだけだったりしますが。

繰り返します。知らないのならば、技術から入る選択肢を取っても構いません。 ただし入り口です。なので「技術 から 入ってもいい」です。 その技術を通して問題の輪郭を掴めたら、同じ問題に対した他の技術で照らし直してみたり、直接問題領域に飛び込んだりしてみることです。 次のステップがあることを意識するだけで、だいぶ違うと思います。

特定の技術に固執する癖があるならば、少なくともそこは改めることをお勧めします。 固執して突き進めるのは、技術ではなく問題を選べる場合です。卓越した技術があれば問題の方を選べます。問題を選べるようなら、技術への固執云々はたぶん気にしなくていいと思います。 私は問題にあった技術を選ぶのが好きなんで、その気持ちはわかりません。