シリコンバレー流開発術とはトライ&エラーの繰り返し
「シリコンバレー流ソフトウェア開発術」と銘打たれた本講演。その冒頭、石原氏は「正しいソフトウェア開発は存在しない」と断言する。ソフトウェア開発は常に変化し続けるため、昨日最適だったことが今日も正しいとは限らない。そのため、数多くのトライ&エラーを経て学んだことを次に活かすことが重要なのだ。
いまやブランドとなったシリコンバレーにおいては、毎年大量のスタートアップが誕生し、そのうち9割が数年以内に消滅する。生き残る企業はわずかだが、その企業が実践していた手法に次世代の企業が変化を加え、再び多くの企業が淘汰されるという進化論的なサイクルが、極めて効率的な手法を確立するシリコンバレー企業を形作ったのだ。
石原氏はここで、「Stand on the shoulder of giants(巨人の肩の上に立つ)」というニュートンの言葉を引用し、「シリコンバレー企業が成し遂げた成功の肩の上に乗せてもらうことは、我々が成功に近づく第一歩となる」と、先人から学ぶことの意義を強調した。
こうしたトライ&エラーは開発手法にも及ぶ。開発手法は日々進化していくものだが、手法に名前を付けてルールやガイドラインを策定することで固定化されてしまう恐れがある。そのため、現在GAFAで行っている開発手法には特定の名前が存在しない。
GAFAのような先進的な企業では、チームメンバーやテックリードが何らかのセミナーで優れた手法を学び、上手くいけばそれが定番手法として定着する形で日々の開発を行っている。
そのためアジャイルやスクラム、イテレーティブといった従来手法と完全に一致するものがない独自の手法で開発を行っているチームもある一方で、スクラムに近い手法を採用しているチームが入り乱れている。
「良いものを取り入れて自分たちの手法を進化させていくことは、一種の進化論(イテレーション)の繰り返しと言える。その道のりにおいて、名前は重要ではない」(石原氏)のだ。
加えて、石原氏はソフトウェアエンジニアに求められる要件についても「コーディングがすべてではない」と警鐘を鳴らす。Googleの中で、最もコードを書く時間が多いジュニアエンジニアでも、コードを書く時間は業務時間の約40%であるという調査を引き合いに出し、残りの時間でさまざまな業務を行っていると示した。
具体的なスキルの1つとして、コミュニケーションスキルが挙げられる。チーム開発が前提となっているソフトウェア領域において、「自分がなぜそのロジックを採用したのかを、同僚に対して明確かつシンプルに説明できる能力」は現代のエンジニアに不可欠だといえる。コーディングに傾倒してしまうとこうしたスキルがおろそかになってしまい、「本当のエンジニア」にはなれないのだ。
この時の考え方として、「どの項目でも100点満点中30点程度は取れるようになり、得意分野では60点程度取れるようになれば十分」だと語る石原氏。「チームで協力して不得意分野を補い合えば、トラブルが発生した際に応急処置ができたり、助けが必要かどうかの判断ができたりする。そうすれば、チームとしてプロジェクトを進めていくことができる」と、チーム開発の必要性を力説する。