CNET Japan Blog:100万行のソフトの作り方(2)
前回のエントリーからずいぶん日が経ってしまい、今頃感アリアリなエントリー。スマソ。
今回は、前回のエントリーで引用した項目について説明されていた。
シリコン・バレーの開発スタイルの特徴は以下の通りとのこと。
偶然なのだが、ウチの会社、特に私の所属しているワーキング・ユニットで採用しているスタイルとほぼ同じだった。そんなわけで、今回それぞれにどんな解説がなされるのかとても楽しみにしていた。
ウチの会社の場合、経験的に上記のような特徴を持つに至ったので、特に裏付けとなる理論があってそのような結論に達したのではない。そのため、同じような開発スタイルを採用している石黒さんが、それぞれをどのように説明するのか観察することで、今以上に私たちの組織のポテンシャルを引き上げるためのヒントが見つかるかもしれないと期待した訳だ。
組織編成はほぼ同じ。マネージャの下に4あるいは5人の小グループが2つ。それぞれのグループにはシニア・エンジニアが一人。チーム編成が動的に変化するのも同じ。チームごとすげ替えたことはないが、エンジニアを後から追加投入するのは日常茶飯事だ。ただし、ウチの場合はそのスケールが小さい(人材が少ないとも言う…)。
納期に対してタスクが明らかに多すぎる場合は、オフショアの前にテンポラリでエンジニアを追加することを検討する点も違うか。まぁ、人材派遣やらウチの会社の登録スタッフなどから人選するので、実質小規模のオフショアとも言えるのだが。
それでも大量にタスクがあふれる場合は迷わず小・中規模の会社にオフショアする。その場合、シニア・エンジニアも一緒に外部にアサインする。そのため、実質テンポラリの開発チームを買うのと同じことになる。
(石黒さんの解説とは別の面からの説明になるだろうか…。)
最も大きな理由は人的リスクの回避。特定のエンジニアに依存した開発体制を敷くと楽チンなのだが、キーマンが倒れたり引き抜かれたりしたときのリスクは計り知れないものがある。(ついでに言うと、キーマンに情報が集中しがちになりエンジニア間の情報共有が進まなくなるというデメリットもある。)
また、エンジニアを動的に補充したり交代させたりするためには、ジョブを「皆で共有する」という精神を事前に醸造し周知徹底させておく必要がある。ジョブを「個人所有」させてしまうとすべてのタスクの進行が特定のエンジニアの進捗に相互に依存してしまい、リソース全体を効率よく稼働させることが困難になる。
それを避けるためには、少なくともタスクを最小単位に分割しその達成状況を随時追跡する必要がある。ある特定のエンジニアが単タスクをロックして「所有」できるのは長くても一日と定め、半日あるいは一日という範囲で作業結果を評価し、状況に応じて同じタスクにエンジニアを追加投入したり、交代させたりしている。
(ちなみに、能力が高く優秀なエンジニアほど達成欲求が強いためか「ジョブ共有」を嫌がる傾向があるようだ。ウチの場合は、どんなに優秀であっても「連携プレイ」のできないエンジニアは必要ないと思っている。技術はあとから付け足したり外から買ってきたりできるが、このチーム全体を考えて行動するこのスピリットは買うことができない。エンジニアのストレス耐性とメンタリティは採用の際の大きな基準だ。)
開発エンジニアとテストエンジニアは区別せず、その日に担当したタスクによってどちらもこなす。個人的な感想だが、これが意外にうまく機能しているような気がする。開発とテストを同じエンジニアがリカーシブルに繰り返すことで、エンジニア間のクオリティのばらつきを小さくできているのではないだろうか。
このような流れを問題なく進行させるためにはエンジニア同士の相互協調関係が不可欠で、その連携に齟齬をきたすと、たちまちプロジェクトの進行が怪しくなる。(当然だが、そのような事態に落ちいた場合はトップ判断でエンジニアをすげ替える。)したがって、マネージャやシニア・エンジニア各メンバーの心理的コンディションを常に気にする必要がある。
上記のような柔軟な開発スタイルを採用しているせいで、指示系統はトップダウンにしないと収拾がつかないというのが実情。どこかにラインを定めて遵守させないと、できあがてきたものを組み合わせることができなくなる。
どうやらウチで採用しているプロセスは、シリコンバレーのものとそれほど大きな差はないようだ。だがどう考えても、スピードとスケーラビリティはシリコンバレーのほうが優れているような印象がある。(とにかく振幅がデカい印象がある。)
もし組織やプロセスにあまり差がないのであれば、問題はマネジメントにあることになる。うちの場合、次の改善ターゲットはマネジメントの方法そのものにあるんじゃないかと感じた。まぁ、どちらにしてもすべての面でブラッシュアップが必要なのは間違いないのだが…。
地道に頑張ることにする。
Thanks for signing in,
.
Now you can comment. (sign out)
(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)
サイン・インを確認しました、
.
さん。コメントしてください。 (サイン・アウト)
(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)