DXとアジャイル開発はセットのように言われています。
ですが日本では、アジャイル開発の成功条件として「開発規模が小さい」「生産性が高いエンジニアが揃っている」などが挙げられています。
アジャイル開発では、大規模な開発には対応できないのだろうか…
そんな疑問に応えてくれる情報を見つけました。
シリコンバレーではどうやって大規模システムを開発していくのか
(シリコンバレーエンジニア酒井潤チャンネル - シリエン戦隊JUN TV)
非常に示唆に富んだお話で「正直、日本ではアジャイルで大規模開発は無理なんだ」と思い知る内容でした。
要点、考察についてお話します。
フラットな組織を作れるのは慢心を捨てたTOPだけ。
シリコンバレーでは大規模な開発もアジャイルで遂行しているようです。
シリコンバレーでは、チームごとに百戦錬磨のエンジニアがリーダーにつきます。
プログラミングがガリガリ書け、グーグル、アマゾンなどを渡り歩き、開発経験を積みまくっているエンジニアです。
海外のエンジニアは「転職して実績・スキルを上げ、単価を上げていく」のが当たり前。ハイスペックなエンジニアが育つ土壌が整っています。
この百戦錬磨の、チームリーダーを張れるエンジニアが沢山いるということがポイントです。
アジャイル開発は1チーム10人以下が良いと言われています。つまり、大規模な開発となれば、沢山のチームが必要になります。
チームが増えれば増えるほど、管理・連携が難しくなる。チームごとに優秀なリーダーがついているかどうかが肝になります。
つまり、シリコンバレーには百戦錬磨のエンジニアが沢山いるからこそ、アジャイルチームを増やすことができ、アジャイルでの大規模開発が可能になるというわけです。
対する日本はどうでしょうか。
「ガリガリ書ける」「百戦錬磨」エンジニアリーダー不在の日本
まず、日本のエンジニアチームリーダーの多くは「PM」「SE」。
ポイントは日本の「PM」「SE」は、プログラマーとしての経験を十分積んでいないケースが多いこと。全員そうとは言えませんが、「ガリガリ書けないリーダー」は多いです。
「ガリガリ書けなくても管理はできる」が日本の考え方ですが、実は、問題があります。
1つは「進捗のみを管理してしまう点」。
プログラミングをガリガリ書き、理解している人でなければ「むずかしい部分がどこか」がわかりません。とにかく手を動かせばどんどん進むものだと考えてしまい、進捗だけを管理するようになります。結果、プログラマーはカンタンな部分を先に進め、むずかしい部分を後回しにしてしまい、後半で問題が発生。リカバリーする時間もなく、炎上してしまうという問題が起きてしまう傾向があります。
もう1つは「最適な判断ができない点」。
飲食店の店長で考えるとわかりやすい話です。店長が店員の業務をやったことがないとどうなるか。まず、店員の負担がわからなくなります。そのため、人を増やした方がいいのか、減らした方がいいのかわかりません。また、店員1人1人の能力が読めず、何を任せるべきなのか、追加でどんな教育が必要なのかがわかりません。
「現場を知らない」ということが様々な問題を引き起こす要因になるのですが、日本の場合、現場の人と管理の人は別物という感覚があります。
また、海外には「百戦錬磨」エンジニアが多く存在しますが、日本は「百戦錬磨」のエンジニアが少ないです。
「百戦錬磨」の価値とは、さまざまな企業を渡り歩き、さまざまな人と対峙してきたこと・さまざまな局面を乗り越えてきた点にあります。
だから百戦錬磨のエンジニアがリーダーになることで、他のアジャイルチームリーダーともうまく連携することができるわけです。
ですが日本では、百戦錬磨の経験を積み重ねることがほぼできません。日本は未だ、転職を繰り返すと”社会不適合者”として見られてしまう傾向がまだまだ根強く残っているからです。
そのため日本はアジャイルチームを沢山作っても、うまく連携できるリーダーが不足している。結果、アジャイルでの大規模な開発は困難になるわけです。
シリコンバレーエンジニア 酒井さんも動画で「強いリーダーが十分いないと、大規模な開発をアジャイルで対応するのは無理」と断言しています。
「色々やる人」がチームプレイを壊す
また、日本でアジャイル開発が成り立ちづらい要因として挙げられていたのが「日本はいろいろやるエンジニアが多い」点です。
日本では、自身の専門分野に固執する人間を高く評価しない風潮があります。そのため、領域を横断して動けるエンジニアを評価する傾向があり、フルスタックを目指すエンジニアが増えている要因にもなっています。
ですが、シリコンバレーのエンジニアは「専門分野以外手を出さない」を徹底。「俺はパイソン・バックエンド専門だから、それ以外やらない」とハッキリ言います。ほかの領域に勝手に手を出さない。日本とは真逆です。
酒井さんはこの問題を、サッカーに置き換えて説明しています。
サッカーは、各選手にポジションが割り振られているから成立しています。割り振られていないと、全員で同じパスを奪いに行き衝突したり、全員が攻撃にいってしまい守りが手薄になったりしてしまいます。これではチームプレイが成り立たない。
シリコンバレーのエンジニアは領域を割り振られ、自身の領域に集中しつつ他と連携する意識が根付いており、チームプレイが成り立っていると言います。
日本のエンジニアは各人が領域を超え動きます。そのため、知見が薄い領域にも不用意に意見してしまい、衝突してしまう。チームプレイが成り立たなくなる要因が多いのかも知れません。
アジャイルは、全員がフラットに意見を交わしあい開発を進めていくスタンスの開発手法です。ですが重要なのは、フラットである中にも、お互いの領域を尊重し意見を出しあうこと。日本のアジャイルがまだまだうまくいっていないのは、このあたりの認識不足にも要因がありそうな印象です。
「連帯責任」がプロフェッショナルを殺してしまう
また、自身の領域を明確に主張するということは、責任の所在をハッキリさせるということでもあります。
サッカーで言えば「パスは通っていたがフォワードの決定力不足で試合に勝てなかった」「ディフェンスのミスが続き負けた」など、誰が悪かったかが明確になります。
シリコンバレーに限らず海外では、領域を明確にし、パフォーマンスが悪ければ即解雇・入れ替えるという実力主義です。
一方日本では、領域を横断する人が優秀・パフォーマンスが悪くても即解雇はしません。連帯責任です。
これでは、日本でプロフェッショナルが育つのは難しいはずです。責任を個人に言及しないのであれば、自己研鑽を重ねる理由がなくなります。
1人1人がプロフェッショナルとして自身の領域に責任を持つからこそ「自律的に考える」姿勢も生まれてきます。アジャイル、そして、DXとは「一人ひとりが自律的に考える組織を作ること」でもあり、この問題も非常に大きなネックになっていると言わざるを得ません。
まとめ「日本はウォーターフォールを進化させるべき?」
日本で、大規模開発をアジャイルで遂行するのはむずかしい理由についてお話してきました。
●シリコンバレーには「ガリガリプログラムが書けて」「百戦錬磨」のエンジニアが多く存在する。チームリーダーを任せられるエンジニアが揃っており、アジャイルでも大規模開発もうまくいく。
●また、各エンジニアが自分の領域に責任を持ち、領域以外に口を出さないことを徹底しておりチームプレイがうまくいく。アジャイルが正常に機能する。日本は領域を超えるエンジニアが賞賛され、チームプレイがうまくいかないことも多い。
日本においては、開発規模が比較的小さく、かつ、優秀なエンジニアが揃っている場合のみ、アジャイルは成功する、ということなのではないでしょうか。
ですが、ウォーターフォールであれば能力・経験にばらつきがあっても大規模開発を進めることができます。問題も多いウォーターフォール開発とは言え、日本で大規模開発を成功させてきた実績を持つ開発手法です。ウォーターフォールを進化させていく方が、おそらく日本には合っているのではないでしょうか。(アジャイル開発に取り組むエンジニアによると「アジャイルの成果はまだ見えていない。試験運用中だ。」とのこと。 )
DXが叫ばれる昨今、セットでアジャイルを取り入れるべし!という声が広がっています。ですがそのアジャイルの源流であるシリコンバレーと日本の、根本部分の違いを理解し、判断していくことがとにかく重要なのではないでしょうか。
執筆者
リビルダーズ編集部