はじめに
この記事は 弁護士ドットコム Advent Calendar 2020 25日目の記事です。
昨日の記事は @poemn さんの 「RESTとSEOの観点でURLについて考えてみた」 でした。
プログラミングについて、多くの名言があります。曰く、「計算機科学のあらゆる問題は、新たな抽象化レイヤにより解決できる」「計算機科学における難問は2つしかない。キャッシュ無効化と名前付けだ」などなど。
ここでは少し趣向を変えて、プロダクト開発における名言 (と個人的に思っているもの) を紹介したいと思います。
Done is better than perfect
Facebookの上場申請資料で、オフィスの壁に書かれてことで有名になったものです。弁護士ドットコムでも「エンジニア・デザイナー行動指針」の1つとして、「いいものを最短距離で」と、似たような趣旨の指針を掲げてます。
これは「技術的負債など気にせず汚いコードを出していこう」という話ではありません。
誰だって、ユーザーに価値を提供する、品質の高いコードが実現できればいいことに異論はないでしょう。でも現実は往々にしてそうはならず、特にユーザへの提供価値は不確実性がつきものです。例えば、提供価値を体感できる最小限の雑なコードと、提供価値を100%カバーしてアーキテクチャとしても作り込まれたコードの、どちらを取るかというトレードオフが発生しえます。
行動指針というものは、トレードオフの解消に役に立つものでなければなりません。そしてここでは前者を取る、というのが冒頭の指針です。100%作り込むには時間がかかり、そしてリリースした後に想定と違って価値を提供できない可能性もあります。失敗するのであれば早く失敗して、フィードバックをもとに軌道修正していく、不確実な状況ではそうしたトライアンドエラーで徐々にプロダクトを成長させていく方針が適しています。
(もちろんいつまでも雑なコードのままではなく、価値が明確になった後ではリファクタリング等の時間を確保しましょう)
君は今、岐路に立ち、道を選ぼうとしている。でも選択することはできない。ただ受け入れるしかない。選択は、とっくの昔に為されていたのだ。
コーマック・マッカーシーが脚本を書いたことで (一部で) 有名な「悪の法則」という映画のセリフです。ある人物に救いを求めた主人公に対する、映画同様に救いのないセリフです。
You are now at the crossing. And you want to choose, but there is no choosing there. There's only accepting. The choosing was done a long time ago.
プロダクト開発をするための組織づくりには時間がかかります。急遽「爆速で開発するぞ」となって、例えば大枚叩いてフリーランスのエンジニアを大勢集めても、開発は加速しません。むしろオンボーディングやチームビルディングのため、しばらくは減速するでしょう。
いつも僕らは「今」が選択の時だと思いがちです。でも、今は過去の選択の上に成り立っています。プロダクト開発は将棋のようなもので、先を見越して手を打っていかねばなりません。王手をされてから慌ててももう遅い。そして組織づくりにおいて銀の弾丸はなく、普段から大量の鉛の弾丸で戦っていく必要があります。
(インピーダンスミスマッチの話)
やればよかったと思うことには一切時間を使わず、すべての時間をこれからきみがするかもしれないことに集中しろ。結局は、誰も気にしないんだから。
ベン・ホロウィッツが書いたベストセラー「HARD THINGS」の一節です。
プロダクト開発は、日々意思決定の連続です。あるいは、妥協の連続と言ってもよいかもしれません。
「売上目標を達成するには目玉となるXXの機能が必要だけど、技術的負債を解消しないと開発速度がいつまでたってもあがらない」といった状況で、プロダクトの仕様・UX/UI・技術的なアーキテクチャについて、綱渡りしながら走っていかなければなりません。
そして意思決定には失敗がつきものです (間違った意思決定をしてないのであれば、それは挑戦してないのと一緒です)。そうした時に、あの時こうしていれば、ああしていればという後悔がよぎるかもしれません。失敗を言い繕って自分を慰めたくなるかもしれません。でも、辛くてもただ前進していくしかないのです。
不確実な状況での意思決定である以上、一定の失敗は起こりえます。失敗を折り込み、小さく早く失敗して試行回数を増やし、トータルで勝てるような仕組みが必要でしょう。
おわりに
ということで3つの名言を紹介しました。
これらに共通するのは根底に「時間」が関わることです。不確実な状況と限られた時間の中で、いかにプロダクトの価値を最大化できるかが、プロダクト開発におけるエンジニアリングの醍醐味なのではと思います。
今年も1年間おつかれさまでした。みなさんよいお年を。