個人商店スタイルの開発手法

牛尾剛氏:あとは開発のスタイルなんですけど、これはけっこう興味深くて、僕も来た時はびっくりしましたけど、めっちゃ個人商店スタイルです。だから、先ほどルールとかがないって言いましたけど、会社の全社のルールもないし、ぜんぜんルールとかがありません。

どんな感じで開発するかっていうと、もちろんフェーズとかもないわけですよ。どうやるかっていうと、なんかめっちゃフワァ〜っとした要求、もうフワッフワですよ。フワッフワの要求みたいなのが一応あって、そのフワッフワの要求をエンジニアがClarifyといって、明確化します。まぁ言ったら、自分の頭の中で仕様化するようなもんですよね。

だからそのフワッフワな要求をまず明確にするところ。あとは自分で設計・デザインすること。作る、テストする、リリースする、運用するっていうのを全部1人でやります。これは別に年次とか新人とかそんなのは関係なくて、みんなそうやるんですよ。だから、僕もこんなんで新人ができんのかなと思ったけど、新人の人もみんな与えられたらけっこうやれますね。

ただ、1人で全部を完結する必要はぜんぜんなくて、例えばイケてる人にレビューをお願いしてみたりとかね。「僕こんな感じで設計考えてんのやけど」とか、そんなのをしてもいいです。僕はよく脳を借りるって言うんですけど、そういうふうな人に脳を借りながら、新人の人であっても、自分が主体的にそういうのをやっていきます。やっていくと、みんなすごく成長しているんで、ほんまみんなすごいなと思います。

だから本当に個人商店スタイル。チームですらないです。だからみんな自分が持っているフィーチャーに関してそれが個人商店で、自分がみんな主体を持ってもう全部やるっていう感じですね。そういうノリで開発しています。

(スライドを示して)だからチームと言っても、ICってIndividual Contributorっていう個人商店の集まりなんで、マネージャーが1人いて、でっかいチームなどというものは存在しないですね。ちっさいチームの集まりです。

もうだから中身のシステムはめっちゃめちゃ複雑ですけど、結局意外とみんなが思っているよりたぶん少ない人数でやっていますね。それぞれの人が自分の責任を持ってやっていきます。

だから、そのICっていう人が他の人のチームとコラボレートを、自分からアクションを起こしてやってみたりとか、わからない時とかに聞いてみたりとか、ミーティング設定したりとかしながら、情報を得ながら自分のタスクを遂行するみたいな進め方になっています。

僕はこの進め方がもう最高やって言っている話ではなくて、一例として聞いていただければいいかなと思っています。僕のチームはたまたまそうしているんで、Microsoftの他のチームは、ウォーターフォールはやっていないけど、みんなそれぞれ好きにやっている感じですね。

エンジニアの評価システム

(スライドを示して)あとはエンジニアの評価の話があります。ここはアメリカに来てからけっこう快適な感じなんですけど、人との競争に気持ちが向かっていかない感じがするんですよね。日本の組織にいる時は、例えば「あの人が先に昇進せぇへんと昇進できへんから詰まっている」みたいなことや、あの組織にいるとけっこう早く昇進できるとか、そういうことがよくありました。

でもこっちでいうと、ジョブディスクリプションが決まっていて、このレベルの人はこういうことができますっていうのがみんな定義されていて、それが達成できたらプロモートされるという仕組みになっている感じなんです。

だから、若い人でもそれができていたらめっちゃ早くプロモートされるし、歳を取っていても別にそんなのを誰も気にしないというか、はっきり言って、そもそも僕の歳を誰も知らないですよね。ああ僕も知らんけど。書いたらあかんって言われているし。

だから本当にジョブディスクリプションと自分の戦いっていう感じになるんで、誰も「アイツが先に昇進したから俺が昇進できなかった」みたいな、そういう争いがぜんぜんなくて、めっちゃ気持ち良いですね。住む場所とランクで給料が決まってくるので、すごくクリアでわかりやすいです。

あとはお給料もたくさん、こんな感じで貰えています。Facebookとかすごい金額ですよね。これは数年前のやつなんで、今はもっと高いかも。まぁそういうふうな感じですね。だから十分貰えているし、なんかもういいよね、みたいな。SDEとか。だから他人の比較ではなく、自分がどのレベルの仕事ができるかでみんな決まってくるので、気持ち良いという話です。

アメリカと日本のソフトウェアエンジニアのレベル比較

(スライドを示して)あとはソフトウェアエンジニアのレベルです。アメリカってさぞかしすごいんだろうなと思うかもしれないですけど、そうではないです。どういうことかと言いますと、例えばレベルの分布を示すと、こんな感じです。僕のイメージとすると。日本っていうと僕がいる時は、すごくハイレベルの人もいれば、ローレベルの人もいるっていうようなイメージでした。

アメリカに行くと、アメリカの人はみんな優秀かっていうとそういうわけではないです。どんな感じかっていうと、こんな感じです。なんか底上げがあって、ある一定のレベルが担保されているというイメージです。

別に全員がスーパー優秀とかそういう話ではないんですけど、やっぱりアメリカの場合はコンピューターサイエンスを出ているのが前提というノリがあります。僕は出ていないんですよ? 相当の知識があることが入社の条件になっているんですよね。

だから応募する人もそれに合わせて準備をしたりするわけですよ。みんな勉強してくるんですよね。そういうのもあって、最低限のレベルがすごく底上げされているんで、これがあるだけで仕事がすっごく楽です。もういろいろなことがすごく楽ですね。

まずコンピューターサイエンスのベースが1つ違うのと、あとはここですね。尖っているところ。これはなんやねんっていう話があると思います。アメリカの場合は上のほう、ハイレベルまでボリュームがある感じなんですけど、日本の場合はトップレベルはすごく細っている感じが僕はすごくしています。

1つはPh.Dパワー不足というか。日本だと、Ph.Dだと就職できへんとかいわれますからね。でもアメリカやったら、Ph.Dのプログラマーがおったら「うわぁ、かっけぇ」ってなります。Ph.Dの人って、実際にいるやつがほんまに仕事できるんですよね。やっぱり学問の力はすごいと思います。

マネージャーの役割と働き方

あとはやっぱり経験できるシステムであることもちょっとあるかもしれません。僕は先ほど言ったみたいに、日本でも通用しなかったような才能のないやつ、三流プログラマーです。でも、そんな僕でも世界中でみんなで使われるような、すごく複雑なシステムを担当させてもらえるわけですよ。それってMicrosoftやからできるわけであって。他ではAmazonとかGoogleとかでも。

例えばここのレドモンド市に住んでいたら、MicrosoftでもGoogleでもAWSでも行けるわけじゃないですか。だから、ただそういう世界規模のシステムを経験できるオポチュニティがあるんです。

でも、日本にいたらそういうのってあんまりできないじゃないですか。やっぱりそういう差が出ているんかなと思います。だから僕が言いたいのは、これは人のレベルの差じゃないんですよ。人のレベルの差ではぜんぜんないので、こんなんは本当は本来日本でもぜんぜん真似できる話かなと思います。だから、向こうの人のほうが優秀とは思わないです。だから一緒です。一緒やけど、そういう仕組みでこうなっている感じがします。

あとはマネージャーの働き方もすごく違います。マネージャーは指示する人ではぜんぜんないです。指示する人ではなくて、どういう人かっていうと、Individual Contributor、つまりプログラマーの人のキャリアの成功を助けてくれる存在で、サポーターみたいな感じです。

サポーターで一番の重要な仕事はアンブロックといわれています。アンブロックというのは何かというと、僕らみたいなプログラマーとかがいろいろな壁にぶつかって作業が止まるみたいなことをブロックっていいますけど、こういうことが起こったら、それをアンブロックしてくれるんです。

例えば、「あ、ここの作りの仕様が曖昧でよくわかれへんな」みたいなことを思っていて、そういうのをマネージャーに相談したら、「ああ、あの人がたぶんよう知っているからさ、つなぐわぁ」って言ってくれたりとか。僕が「こういうの技術的にこれでええんやろうか」とか「これでちゃんと動くんかねぇ」とか思っていたら、プルリクエストレビューしてくれたりとかします。

Individual Contributorが何か作業が進んでいる時はいいんですけど、このブロックされている時に時間がかかるので、これをできるだけ早くアンブロックするのが、マネージャーの一番大きな仕事っていわれています。あくまで主体はIndividual Contributorが自分で考えてやるって感じですね。

あとは脳をつなぐっていうロールもあります。これね、本当にすごいなって思うんですね。見ててすげぇなぁって思うんですけど。僕らは自分がやっていることでも把握するのが大変なのに、マネージャーの人は、Individual Contributorは個人商店でやっていることがぜんぜん違うのに、やっている人をちゃんとぜんぶ理解して、何をやっているかを把握して、「ああ、こういうふうなことを今からやろうとしてるんやったら、あそこの人と連携を取らないとヤバいから、ちょっとその人とつなぐわぁ」って言ってくれたりとか。

もちろん優先順位もつけてくれるし、本当にものすごく快適ですね。だから、本当に技術だけに集中できる感じです。そもそも技術だけでもやることがすごくたくさんあるんで、本当にそれはすごく違う感じがしますね。

日本の時だったら、政治半分技術半分とかでないと物事が進まないので、僕は心理学とかまで勉強しました。けれど、こっちやと本当に、ディープなテクニカルが重要なんで、こっちでは経営のことを知るべきやとかぜんぜん言われないですよね。

(次回へつづく)