僕が特定のプログラミング言語「だけ」にフォーカスしたい理由

僕が今所属しているチームは、特定のプログラミング言語に絞ったようなプロダクト開発はしていません。適宜、必要な技術を採用し、必要な言語を採用してプロダクトを開発しています。

ちなみに昔は「ウチはPHPでプロダクト開発します」な零細受託企業だったので、その会社にいる間は、ほぼPHPを書いていました。

まぁこの話は置いておいて、都度、採用言語も異なるってのは、これはこれで知的好奇心が満たされるので好きではあるんですが、本来的には、せめて言語レベルでは特定の言語に絞っていきたいと考えています。

もちろんプログラミング言語がマルチリンガルであることは、それはそれで市場価値の上げ方として一つのアプローチとしては有効ではあるんですが、僕の志向とは少し異なるかな、という感じ。

別にこれが悪いと思っているわけではありません。単純に、僕の志向とはミスマッチってだけ。嫌いじゃないけど、一番じゃない。

言語「以外」にフォーカスしたい

なんでこういう考えなのかというと、プログラミング言語「以外」の部分にフォーカスしたいから、というのが理由です。

どういうことかというと、アーキテクチャだったり、開発手法だったり、直接的にはプログラミングそのものではない部分をインプットするだけの容量をあけておきたいからです。時間的にも、容量的にも。

ちょっとあえて主語をデカくとりますが、プログラミング言語の違いなんて、言ってみれば「方言」です。

もちろんオブジェクト指向なのか関数型なのかっていうパラダイムはあるし、色々挙げればそりゃキリはないですけど、「僕/私はJavaしか書きません、書けません」って人にはまだ出会ったことはないし、言語レベルであれば、普通のエンジニアなら学習コストこそ多少あれど、ゼロベースでプログラミングを学ぶのに比べたら圧倒的速度で書けるようになります。

だから、なんかちょっと時間配分として勿体無いなって思っちゃうんですよね。

もちろん知的好奇心を満たせるのは開発者としては重要ではあるんですが、僕らが仕事の対価としてアウトプットすべきは、「プロダクト」そのものであって、その過程なんてものは正直知ったことではないんです。

例えば、ECサイトを作るとして、その裏側がRailsだろうとLaravelだろうとSpringだろうと、なんでもいいわけで。ユーザーに求められる機能が提供されていてUXが十分であれば採用技術はなんでも良いんですよ。乱雑に言ってしまえばね。

言語レベルで乗り換える価値があることも

とは言え、本気で「特定の言語以外はやりたくない!」と思っているかと言えばそうでもなく。

例えば、結果的にプロダクトに寄与できるんであれば積極的に学んでいきたいとは思います。

新技術採用して強力なエコシステム上で開発できれば高速にPDCA回せるよ、とか。こっちの言語ならパフォーマンスが桁違いに高いよ、とか。そういうケースは往々にしてあるので。

まぁ例えば、スモールスタートで短いスパンでプロダクトを作っていくようなフェーズで、こっちのプロダクトはPHP、あっちのプロダクトはScala、とかそういう非効率的なことはやりたくないですよって感じですかね。

幸い今はクラウド全盛期で、基本的には金で殴りつければある程度のパフォーマンスは担保できるので、もしUXを上げるために必要であれば、金で殴って延命してる間に書き換えていけばいいんだと、そう思っています。