CNET Japan内の、100万行のソフトの作り方てな記述を読んだ。おいらもまがいなりに、シリコンバレーのスタートアップにいる端くれとして思ったことを書こうと思う。
この記事は、(1)と(2)に分かれているので、二つを読んでください。
シリコンバレーのプログラマーは本当に凄いのか?
これは、何と比較してってのがよくわからんのですが、おらの経験からするとちょっと印象が違います。凄くは無いけど、最低レベルは高い。ってのが僕の印象です。
まぁおらの経験は、日本での勤務経験数年と、ここでの勤務経験数年、それぞれ1社づつなんでかなーり少ないほうになりますし、日本での勤務経験は既に5年も前の話ですので今の現状とあっていないかもしれませんが。。。
日本ではSEがいっぱいいます。このSEってのが曲者です。
日本で言うと、システムエンジニアってことになってると思います。日本にいるとき、おらもSEだと思っていました。SEがプログラム書いてるんです。
日本でプログラマって職種ってあんまり見たことが無かったです。
日本で自称SEの人や肩書きがSEの人は、プログラムが書ける人とかけない人がいました。
まぁシステムエンジニアですから、システムのデザインができればいいので、プログラムがかけるかどうかは重要じゃないです。
逆に日本で言うSEってこのシリコンバレーで会ったことがおらは無いです。このエリアで日本で言うSEに一番近い職種はおそらくマネージャーだと思います。
そうすると、日本には自称マネージャーがいっぱいいて、プログラマがおらんことになります。
おらが日本で働いていたとき、おらはいつも、プログラムが書ける人を探していました。
自称プログラマはいっぱいいましたが、1から10まで仕様書を出してあげないとプログラムをかけない人ばかりでした。要求仕様から始まって、構造仕様書、クラスの関係図やら、関数名、それこそ、関数内のロジックまで指定しないと、プログラムがあがってこないんです。
まぁぶっちゃけて言えば、おらがやっていたプロジェクトはC++でWindowsなわけですが、Windows95の時代で、そうゆうプログラミング環境を使った経験のある人がおらんかったんです。それこそ、Windowの上に線が引けないレベル。。。
それに比べて、初めてこっちに来たとき、プログラマ募集をかけると、ちゃんとプログラムが書ける人が面接に来ることに感動しました。
日本だと、「やる気はあります。これから勉強します。」ってな人ばかりで、どないせぇって状況ばかりでしたが、こっちではそんなことはありませんでした。
これははじめ、プログラムが書ける人間の絶対数が違うのかと思っていました。
話を聞けば情報系の大学ではプログラミングの実習を重要視しているし、当時バブル真っ盛りで、プログラマの中国人、インド人ががんがん移民してきていたわけです。まぁおらもそのうちの一人になるわけですな。
給料体系やら、根本的に募集の形態が違うのも大きな原因のひとつです。
$60k/yrで、プログラマ、Windowsやら、なんちゃらの経験何年。
とか、
$72k/yrで、どんな経験が何年。
ってな募集をこっちでは結構普通にやります。もちろん、DOE(経験によって給料を決めます)ってな話もありますが、給料指定でどんなポジションか明確に募集しているんです。
てぇと、$72kの募集にへっぽこプログラマはやってこないわけでして。経験をレジュメ(履歴書)から見れば大体無理なのがわかるわけで。。。まぁそれでもがんがん応募がありましたが。。。
日本にいたときは、年功序列がどーのという理由で、たとえプログラムがかけようがかけまいが、給料は同じという会社にいましたので、募集かけても、まったくもって、人が集まらなかったんです。
んでどうするかというと、部長からのありがたいお言葉、「社内で育てろ。」
それがですね。プログラマを育てても、ちょっと経験を積むと、プログラマを卒業してSEになっちまう(されちまう)ですよ。プログラムをかじったことがあるレベルのSEが量産されていました。
そうゆうSEがマネージメントしたプロジェクトはとっても危険なのは簡単に想像できると思います。
それくらい、人材の層が薄かったんです。年功序列という名の下に、人材を育ててますから、時間がかかるんですね。まぁおらは4-5年しか日本で働いて無いですから、おらが新入社員のときの経験無しの同期の人が、ちょっとまともなプログラムを書けるようになるかなぁ。1本くらい規模のあるプログラムを書いてるかなってな期間です。こっちに来てから、その人たちがどうなったのか知らないですが、おらが日本にいた当時からSEになってました。
そうゆう意味で、日本とこっちで最低レベルが違う気がします。
解脱しているようなレベルのプログラマの確率ってのは日本でもアメリカでもあんまり変わらないかもしれません。でも、最低レベルがぜんぜん違うと思います。こっちの方がレベルが高いですし、またそうゆうレベルの人を(払うものを払えば)さくっと集めることができます。
おらの印象では、日本のプログラマってどこに住んでるんだろう。ってなくらい確率が低い気がします。
さて、この前提条件を踏まえて、(2)の記事についてコメントします。
ここで書かれている開発形態は、うちでもほぼ同じ開発形態をとっていますので、とてもすんなり読むことができます。
この開発形態の場合に重要だと思う点が2点あります。
1点目
マネージャーの負荷が猛烈に高い。
ここで言うマネージャとは、先の記事で言うところのチームリーダーに値すると思います。
要するにトップダウンですから、マネージャーにほとんどすべての責任が及びます。
工数管理から設計方針、何がどうなっているのかをすべて把握していないと、下は混乱します。マネージャーが大雑把に、あぁせぇこうせぇとゆうて、下が何かよきに計らってはくれません。下の技量に合わせてどこまでダウンするのかの計画も含めて、全部マネージャーが取り仕切ります。
この場合、マネージャーの負荷を下げるには、適当にゆうて、ちゃちゃっと仕上げてくれるようなそれなりの(最低レベルを超えた)プログラマが必要です。
特に小さなプロジェクトチームの場合、水平分散トップダウンで、猛烈な速度で回していきますから、一人のマネージャーが複数のプロジェクトを見ているうちに、わけがわからなくなって、マネージャーが追いつかなくなることが結構あります。
でも、それをさくっとフォローできるレベルのプログラマでないと、ついていけなくなってしまうわけです。材料を勝手に集めてきて、マネージャーが判断できる材料をさっと提示できないと、マネージャーは判断できませんから、わけのわからない判断が飛び出してきて、それをわけのわからないプログラマが実装をして。。。と、大変な目にあいます。
もちろんマネージャーもプログラマの実装に対しての十分な知識が必要です。わけのわからない判断をすれば火達磨になりますから、結局プログラムの事細かな内容まで理解して、提示していくだけの能力が必要となります。
開発速度を追求するにあたって、プロジェクトチームの中には、階層構造はあまりありません。水平分散がほとんどだと思います。一人のマネージャーが多くの領域の責任を持ちます。サブリーダーってのもあんまりありません。判断がぼやけますし、意思の疎通もバケツリレーになってしまって危険ですので、あんまり権限が無かったり(その分責任がなかったり)します。
まぁこちらの場合、マネージャーはプログラマとはまったく違ったレベルの給料を取りますので、その分、猛烈に働きます。部長がのんびり構えてて、実働部隊が火を噴いているような光景はありません。部長が謝り役でしかないなんてことはありえないので、そのあたりがおらの経験した日本の状況とかなり違います。日本ではなんで部下がこんなにバグを出すんだろう。なんで進捗が思うように進まないんだろうって疑問を持っている上司がいると思いますが、こちらのマネージャーはそれらの原因から対策までのすべてを理解していることが多いです。
プログラマは一生プログラマです。プログラマがマネージャーになるのはとっても難しいです。もちろんチームリーダーからマネージャーという道がないわけじゃないですが、このチームリーダーってのも責任範囲が限定されていると、なかなかマネージメントの経験を積むことがありません。またチームリーダーが中途半端に判断を下すと、話がややこしくなることが多いので、マネージャーにお伺いを立てることも多いです。というかそうゆうもんです。そうゆう意味では完全分業です。
2点目
テストのレベルがかなり重要になる
この記事でも出ていますが、開発エンジニア3に対して、テストエンジニア1くらいの量を必要とします。このあたり、きっちりテストしていかないと、開発の速度が速いので、バグがどんどん肥大化、複雑化します。ひとつのバグを放置すると、1ヵ月後には既にプログラムは猛烈に成長していますから、そのバグが収拾付かなくなるんです。
またそのテスト計画やらも、プログラムの構造を理解したうえで、また顧客の要望する最終形態を理解したうえで作らなければならないので、スキルが要求されます。
開発エンジニアのおらからすれば、ありゃ、特殊技能です。それ相応の経験を積まないとできないことだと思います。
どのレベルのクオリティを会社として、製品として必要としているのか、ってのが難しいところです。。。完璧を追い求めていたらいつまでたっても製品が出荷されないです。このあたりの判断もマネージャーの責任ですね。
このように役割分担がはっきりしているのがこのエリアの特徴です。
もちろんここまで組織がちゃんとしているのは、スタートアップの企業でも既にある程度成長している企業です。少なくともSeriesなんちゃらで投資を取っていて、企業としての体裁を整えているレベルのスタートアップです。
これらの点が当たり前のように、日々がんがん高速に回されているのが、シリコンバレーのスタートアップです。
またエンジニアが普通にこうゆう環境にいるので、そうゆう環境で育ったエンジニアを簡単に集めることができるのも、このエリアの特徴だと思います。
おらがいる環境から見たコメントでした。
もちろん、企業ごとに文化がありますし、経営方針の違いによってさまざまな違いがあります。僕が思っている範囲はとっても狭いものですし、この記事に出ているものも、視点のひとつだと思います。多様性もこのエリアの面白いところかもしれません。
でもね。
こうやってエンジニアやらマネージャーやらが酷使されても、ゴールにたどり着く企業(起業?)は数多くあるわけじゃないんですよ。
このあたり、完全分業制やら、ゴールにたどり着くまでの道のりやらで、モチベーションを維持するのがとっても難しく感じる今日この頃です。
完全分業制だと、自分が成長したって実感が無いんだよねぇ。。。まぁそれだけが原因じゃないですが。。。
最近の日本では、
・SE
セットアップエンジニアの略。
セットアップできる人じゃなく、セットアップする人
・SI
セットアップインストラーの略。
セットアップのためにインストール作業する人(会社)
です。少なくとも俺はこう解釈している。
シリコンバレーのプログラマーは本当に凄いのか?
いろいろな人からの refere を頂いて休日にはそれを眺めるのを楽しみにしている。平日はなかなか時間が取れなくてすんません。 id:grayfoxさん、 http://d.hatena.ne.jp …
天才プログラマはいらないのか?
Business On DemandというWebの天才プログラマはいらないのか?という記事を読んだ。以前自分自身の記事の単純に真似すると痛い目を見るにも関連があることなので、思うところを書いておく…