algonote

機械学習とか

技術選定時のチェックリスト

技術の選び方

f:id:hiromichinomata:20191006174202p:plain

前口上

仕事をしている上で外部サービスだったり、何かツールを導入しなければいけないことはしばしば。個人サービスならともかく会社としてやる以上、一定の合理性を持って決めたい。そんな時のチェックリスト。

Quality (品質)

  • 今回必要機能を満たしているか
  • 将来必要な機能は満たしているか

まずは複数選んだ技術の機能を並べましょう。あなたが導入しようとしてる技術は今回きっかけとなった要件を満たすのに十分な機能を持っていますか?ロードマップ上に将来の開発項目などがあれば、その機能にも使えるかを確認しましょう。

  • 他でも使えそうか

あなたはサービスAを作っているかもしれませんが、同じ会社でサービスBを作っているかもしれません。あなたの導入しようとしているツールはサービスBでも使えますか?

  • 副作用はないか

例えばサーバーのログツールを検討していて多機能なサービスがあったとします。一見良さそうに見えてもそのツール導入によってパフォーマンスが悪化してしまうかもしれません。何か副作用はありませんか?

  • 実績はあるか

例えば新しくできたスタートアップがB向け自社サービスの営業に来たとします。彼らの言い分ではいろんなことができると言っていますが、同じことはもっと枯れた他社サービスでもできるかもしれません。

導入しようとしている技術は十分な実績がありますか?予期せぬハマりどころがあるかもしれません。新し目の技術を導入する際、リスクと比べて十分な旨味がありそうですか?

Cost (原価)

  • 技術(商品)自体のコスト

まんまですね。その技術は無料で導入できますか?外部サービスの場合、無料枠はあるのか、運用した際の見込み、想定以上にコストがかさんでしまう可能性があるかを見ましょう。

  • 運用コスト

時には外部サービスが高いと上司他に言われることもあるでしょう。オープンソースの無料代替ツールは確かに値段的に魅力的かもしれませんが、自社運用コストもちゃんと考えていますか?月1万円の節約のためにより人件費はかかりませんか?

  • 採用コスト

ツールを導入した後に、その担当が辞めることはままあります。イケイケのエンジニアがCoolだと言っているその技術は他の人もわかりそうですか?仮にその技術をわかる人を追加募集する際に応募はありそうですか?

  • 教育、学習コスト

時には社内の人員にその技術を覚えてもらう必要がある場合もあるでしょう。その技術はすでに使用している技術と近いですか?すぐにキャッチアップできそうですか?

そのツールを導入しようと決めた際、すでに経験のある人員は社内にいますか?技術を社内に浸透させるのは骨の折れる仕事です。社外で発表していたり、個人サービスで使っているなど、熱量を持ってその技術にコミット&布教できるリードエンジニアはいますか?

Time(時間)

  • 導入までのリードタイム

B向けツールでは導入まで時間がかかることがあります。来週実装予定の機能を使うまでに一ヶ月必要ということはありませんか?

  • 切り替えにかかる時間、捨てられそうか

既存ツールを新ツールで置き換える場合、時間はどのくらいかかりそうですか?

ツールの運営元がサービスをやめてしまったり、技術トレンドの読みを外すことによって、技術がレガシーになってしまうことはあります。将来的にその技術は簡単に他のツールで置き換えられそうですか?

まとめ

しっかりやりたい場合、今までの項目をふまえてDA(Decision Analysis)表にまとめてみましょう。

点数は○✖︎△だったり、信号の色だったり、単に点数だったり適したもので。必要に応じ重みをつけたり。

技術A 技術B 技術C 重み
機能 5 5 4 2
価格 4 2 5 1
時間 3 5 5 0.1
14.3 12.5 13.5

注意書き

ここまで書いておいてなんですが、ビジネスにおいてスピード感も大事です。小さなツールの導入のために必要以上に時間をかけるのはやめましょう。

100点の検討結果があるとレビュー側にとって決断するのは簡単です。ある意味誰でも決断でき、責任とらなくていいので仕事としては楽でしょう。

他の仕事でもそうですが、70%の検討結果でGo出すことができるのがいい上司かなと。

所感

こういう視点も必要だよねというのが他にもあれば教えてください。