Quora 英語版回答アカウント さんのプロフィール写真
John L. Millerさんのプロフィール写真
John L. Miller

私はGoogle、Microsoft、Amazon、Oracleで働きましたので、この質問に回答できるかもしれません。

コードの品質というのは面白いものです。私の意見では、コードの品質の善し悪しは状況によって異なります。

例えば、ある研究プロジェクトのために(本番環境の)プロダクション品質のコードを書くのは、かなり時間の無駄です。変更への対応、保守、拡張ばかりに気を使うことになってしまいます。

どんな機能を作るにもお金がかかります。私が携わったプロジェクト例を見てみましょう。品質プロトタイプ研究:2人月。プロダクション品質版:117人月。先述のプロトタイプには、プロダクション版に入らなかった他の機能が入っていました。(訳注:1人が1ヶ月で行える作業量の単位として「人月」を使っています。)

ビジネスや必要なコード寿命に見合った品質のコードを書くべきでしょう。そうでなければ、貴重なリソースの無駄遣いとなり、自分で自分の首を締めることになりかねません。

Amazonはスピードを重視しています。スピードを重視しているので、コードの品質は低くなります。しかし、実際に動かすまでに要する時間は非常に短くなっています。これがAmazonの勝利戦略なのです。

Googleは統一性と品質を重視しています。Googleは(コード関連の)ツールに多額の投資をしており、これが効果を発揮しています。これによって、ウェブサービスのための巨大なコードベースを維持するのが容易になっています。今まで使った中では最高のツールだと思います。実用的なツールのスタンダードと言えるでしょう。私にとっては、コード品質とエンジニアリングはGoogleがトップです。しかし、副次的影響もあります。メインのコード体系を刷新することは難しいでしょう。(私の経験では)プロジェクトのすべてが、冒険的というよりは保守的のように感じます。

Microsoftはエンタープライズレベルのパフォーマンスと保守性を重視しています。つまり、コードの正確性および堅牢性が重要です。コードを存続させ、保守することが重要で、十年以上にわたってコードの積み重ねが可能になっています。

三社はそれぞれ、目的にあった優れたコード品質を有しています。

学術的な観点から見ると、Amazonのコードは最も未熟なコードで、Googleのコードは最も品質が高くて統一性があり、MicrosoftとGoogleのコード品質の差は僅かです。そして当然ながら、各社は、自社の特色とはかけ離れたコードも持っています。

人によって、違った見方もあるかと思います。

回答者:John L. Miller、Microsoft、Amazon、Googleでのソフトウェアエンジニア&アーキテクト、PhD所持

質問を見る