
こんにちは。SansanのCTO笹川です。 先日、Sansan技術本部で、全エンジニアが集まる半期総会が開催されました。この場で私は、技術本部として掲げているビジョン「このプロダクトで世界を変える」という技術本部のビジョンを実現するために必要だと考える3つの力についてお話ししました。
この記事では、その総会でお伝えした内容の一部を抜粋し、皆さんに共有したいと思います。
1. 圧倒的な技術力
まず1つ目は、「圧倒的な技術力」です。
技術力とは何でしょうか?設計や実装のスピード、クオリティの高さはもちろんのこと、技術の幅広さや深さも含まれます。
よく「スピードとクオリティはトレードオフだ」とか、「専門性の深さと幅はトレードオフだ」と言われますが、私はそうは思いません。強い人は、多くの経験や実践を通じて、早く、クオリティの高いものを一撃で作り出せます。
「T字型人材」という言葉がありますが、私は「嘘だ」と思っています。何かを深く掘り下げるには、その周辺を広く掘る必要があります。まるで三角形のように、横に広げながら深掘りしていくものです。何でも知っている「できる」人は、まさにそのようなアプローチをしているのだと思います。トレードオフだと決めつける人の多くは、やらないための言い訳にしているようにすら見えます。
私たちは「どちらもやればいい」「全部やろう」というスタンスで臨むべきです。時間には限りがあるのは事実ですが、本当に必要なことであれば、学ぶしかありません。
2. 圧倒的なチームワーク
次に2つ目は、「圧倒的なチームワーク」です。
チームワークとは、複数人がコミュニケーションを取り、タスクを分担・依頼し、それぞれの強みが強調し合って働くことです。
特に重要なのが「非同期コミュニケーション」です。日常的にある言語を使って話すことと、文章を書くことは、本質的に異なるスキルだと私は考えています。日本語が話せるからといって、自然と文章が書けるわけではありません。これは自転車に乗るのと同じで、学習して身につけるスキルなのです。
理解可能な文章とは、「必要十分」であることです。伝えたいことが全て含まれていながら、無駄がなく簡潔であること。また、専門用語や略語を使う場合は、初出であれば定義するか、参照先を明示し、その文章だけで完結する「セルフコンテインド」であるべきです。このようなルールは、特にテクニカルな文書において非常に重要であり、十分な訓練を経て身につくものです。
タスクの分担や依頼は、並列プログラミングや並行プログラミングに似ています。効率が良くなるように行う必要がありますが、安易な分担はかえって遅くなることがあります(アムダールの法則のようなものです)。例えば、10のタスクを5人で分担すると2ずつになりますが、合計で2の時間で終わるわけではありません。分担自体にオーバーヘッドが生じ、最も遅いコアに依存します。非同期コミュニケーションが下手だと、分担した先で間違ったことをしたり、再確認が必要になったりして、かえって時間がかかってしまいます。
分担することが前提とされているケースもよく見ますが、あえて分担しないという選択肢も無視すべきではありません。本当に効率が良くなるのかを見極め、「仕事のための仕事」を作っていないかを意識して、注意深く設計する必要があります。これらはきちんと身につけるべきスキルです。
3. 既存を疑い、変える力
最後は、「既存を疑い、変える力」です。
私たちは、「なぜか分からないけどそう決まっている」という状況によく直面します。ルールや先入観も一種のルールです。
ルールがあると、考える必要がなくなり、楽です。判断せずに動けるため、素早く行動できます。しかし、ルールを受け入れることで思考を停止し、そのルールの存在すら意識しなくなることがあります。
皆さんは、このような意思決定をしていませんか?「〇〇さんが言っていたから」「ルールだから」。これらは根拠や説明になっているでしょうか?ルールは本当に存在するのでしょうか?。そうしたことは、きちんと考えるべきです。そして、不要であればそのルールを削除することも、判断のうちです。
ルールの設立経緯は非常に重要です。過去には必要だったルールが、現在の状況にそぐわないこともあります。そのルールが何のために作られたのか、この目的に合致しているのかを常に考える必要があります。むしろ、ルールがあると考えるのをやめてしまう効果があるなら、ルールはない方が良いとすら思います。都度、考えるべきです。
また、「誰かが言っていた」という場合、その「誰か」は誰で、どのような理由でそう言っていたのか、その「Why」をきちんと理解する必要があります。 合理的に考えて変えるべきだと思ったら、臆することなく提案し、議論すべきです。私たちの会社は、決して提案を拒むような風土ではないと信じていますので、どんな提案でも歓迎されるはずです。多角的に物事を見て、必要であれば改善していく意識を持つことが大切です。
AI時代におけるこれらの力の重要性
これらの3つの力は、AI(特に開発支援の意味でのツール)の普及により、その重要性が加速していると感じています。
開発支援のためのAIの特徴として、まず我々が絶対に勝てないのは「タイピング速度」です。入力速度においては、人間はAIに到底かないません。一方、AIの能力は発展途上で、日々デファクトスタンダードが変化し、モデルが出るたびに賢くなっていると感じる方も多いでしょう。
では、AIの登場によって何が変わるのか?私は特に「技術力」と「言語化能力」が非常に強く求められるようになると考えています。
技術力: AIの出力の妥当性を検証するのは、依然として人間が行うことが多いです。AIがどんなに素晴らしいコードを出力したとしても、それを評価し、適切に採用できるだけの技術力がなければ、その価値を活かせません。逆に、その人の技術力以上のクオリティのものがAIから出力されても、適切に判断できずに適用されないことがあります。これは、ある意味、その人がAIにキャップをかけているのと同じです。絵を描くAIの例で言えば、絵のうまい人ほどAIの出力もすごくなるのと同じです。つまり、AIの出力を評価し、活用できる範囲は、その人の技術力に左右されるということです。だからこそ、技術力を磨くことは、この時代においても非常に重要だと考えます。
言語化能力: AIへの指示は、今のところ人間が行います。たとえAI同士で指示を出し合っている場合でも、その根源を辿れば必ず人間の指示があります。 「こうしてほしい」と具体的に伝えても、うまくいかないことは少なくありません。これはモデルの性能のせいではなく、指示が悪いことに原因があることが多いです。コンテキストを持たないAIに対して、適切な指示を伝える能力がなければ、AIは「宝の持ち腐れ」になってしまいます。まるで、長年の友人との会話と、全く知らない人への説明では話し方が変わるのと同じです。指示が悪ければ出力も悪いという意味で、「ガーベッジイン・ガーベッジアウト(Garbage In, Garbage Out)」の性質があると言えるでしょう。だからこそ、言語化能力は非常に重要です。
これらの「技術力」と「言語化能力」は、先に述べた3つの力は深く関連しています。我々はこれらのスキルを継続的に伸ばしていかないと、この大変な時代を乗り越えることはできません。
AIを活用し、素晴らしいプロダクトをたくさん作り、成功を収めていくために、私たち一人ひとりがスキルを向上させていく必要があります。
皆さん、一緒に頑張っていきましょう!
Sansan技術本部ではカジュアル面談を実施しています
Sansan技術本部では中途の方向けにカジュアル面談を実施しています。Sansan技術本部での働き方、仕事の魅力について、現役エンジニアの視点からお話します。「実際に働く人の話を直接聞きたい」「どんな人が働いているのかを事前に知っておきたい」とお考えの方は、ぜひエントリーをご検討ください。