今日は開発の段階で、どのような技術を選ぶべきか、その基準を書いてみます。
実際にはエンジニアに任せるケースも多いと思うのですが、実はエンジニア視点と発注者視点では選ぶべき技術がまるで異なります。
エンジニア個人が使用する技術を選べるとしたら、どのようなものを選ぶでしょうか?これは間違いなく、自分が興味がある技術、今後のスキルアップに役立ちそうな技術を選ぶと思います。
でも、これってエンジニア側の視点であって、発注者側の視点は入っていません。
発注者側の視点に立てば、技術を選択する際には明確なルールが存在します。それは
・みんなが使っている技術であること
・枯れた技術であること
の2つです。間違っても最先端の技術ではありません。
というか最先端の技術と言われるAI関連でさえ、このルールは適用されます。
たとえば機械学習を用いたサービスを提供する場合、ディープラーニングと既存の機械学習の手法、どちらも同じ期待値が予測できるなら普通は既存の手法が選択されます。
なぜなら枯れた技術であれば効果が確実に期待できるからです。それに歴史がある分ノウハウも溜まっています。
まあAIについては私はちょっとかじっただけなので置いておくとしても、私の専門のWEBサービス開発では絶対に「みんなが使っている、枯れた技術」を選ぶべきだと思います。
特に「みんなが使っている」というの点の方が重要で、そうすることでエンジニアの入れ替えが比較的容易にできます。
規模の小さなベンチャーなどでは、現場のエンジニアが過剰な権力を持ってしまうケースが発生したりしますが、これなどは技術が個人に張り付いてしまうことから起きる現象です。
私自身、エンジニアの立場を擁護したい気持ちはあるのですが、やはりエンジニアは技術力を用いてクライアントに貢献するべきであって、不必要な権力を持つべきではないと考えてます。
また「みんなが使っている、枯れた技術」の効用はもう一つあって、トラブルがあってもグーグルに聞けば、たいてい答えが載っているという点です。
検索しても答えが無い技術トラブルの解決は、本当にスペシャルなスキルの高い人しかできません。
その点、「みんなが使っている、枯れた技術」であれば、並みのエンジニアでもなんとかなるし、並みのエンジニアであれば、報酬も並みで済みます。
と、いいことずくめなのですが1点だけ欠点が。。。
「みんなが使っている、枯れた技術」って楽しくないんですよね。なので優秀なエンジニアはあまりやりたがらないんです。私もPHPはもう飽きてます。
それに技術的なイノベーションも、もう生まれないです。だから枯れた技術なのですが。。。。
そうゆう事情から技術系のベンチャーでは、あえて最新の技術を利用して開発するというケースがよく見られますが、それはお金があるから。
中小企業は迷わず、枯れた技術、みんなが使っている技術を選択しましょう!
ではでは、今日はここまで