オブジェクト指向技術やアジャイル開発の第一人者であり,プロジェクト・ファシリテーションのコンサルティングも手掛ける平鍋氏。現在のソフト開発には,多くの無駄がはびこっていると指摘する。作るソフト開発から育てるソフト開発への変革が「持続可能なソフト開発」につながると説く,同氏に聞いた。
現在のソフト開発の問題点は何でしょうか。
問題は大きく二つあります。一つは,システムを使う人,つまり発注側であるユーザーと,システムを作る人,つまり受注側である開発者とで,共通のゴールを目指して仕事ができていないことです。発注者と受注者が,契約を間に挟んで綱引きをする,つまり,どちらかが勝てば一方が負けるという“ゼロサム”の関係になっています。その結果,ユーザーと開発者の間に意識のズレが生まれ,利用されもしない機能をたくさん作ってしまうなど,無駄が発生しているのです。
もう一つの問題は,ソフト開発のリソースが平準化されていないことです。多くのソフト開発は,最初に大きな投資をして初期開発するフェーズと,その後ダラダラと少人数でメンテナンスするフェーズで成り立っています。数十人の開発者を短期間で集めて初期開発が終わればすぐに解散,というようなやり方が,多くのリソースの無駄を生んでいます。
どうすれば問題を解決できるでしょうか。
小さいシステムを安定的に作りながら,ソフトを育てていくモデルが,リソースを平準化し,不要なものを作らないための解決策になります。短期集中型で投資するモデルを“狩猟型”とするなら,“農耕型”のソフト開発と言えるでしょう。
農耕型ソフト開発を実現する方法の一つが,アジャイル開発です。アジャイルでは,いかに早くメンテナンス・モードに持って行くか,つまり,ソフトを育てる段階にいかに早く入るのかということをやっているわけですから。
“農耕型”の開発で大事なことは何ですか。
意外と見落とされがちなのが,プロジェクトのメンバーが気持ちよく働ける環境作りです。
ソフト開発は,ソフトウエア工学とプロジェクト管理を足したものだという考え方があります。その考え方によれば,プロジェクトに何か問題があるのは,使っている技術がよくないか,プロジェクト管理がよくないかのどちらかだということになりますが,本当にそうでしょうか。
この考え方には,そこで働いている人が高いモチベーションを持っていいものを作ろうとしているか,という視点がすっかり抜けています。ソフト工学とプロジェクト管理だけで割り切ったプロジェクトは,人間という資源をかなりの低効率で使って粗悪なものを作っている感じがします。
ソフト工学の知識はもちろん必要ですが,参加するメンバーが働きやすい環境を作ることも,とても大事だと考えています。会議の仕方や作業場所の問題,メンバーのワーク/ライフバランスも含まれるかもしれません。これらを「ソーシャル工学」と呼んでいます。ソフト開発に不可欠なものです。
先日米国でアジャイル関連のカンファレンスに参加したところ,多くのセッションが,こうしたプロジェクトの環境作りをテーマにしていました。例えば信頼関係をどう作るか,というワークショップもあって,「まずは握手をしましょう」というような話を真剣にしていました。
そう考えると,エンジニアを育てることも,働く環境作りとしては重要ではないでしょうか。
その通りだと思います。ユーザーと開発者がコミュニケーションした結果としてのソフトウエアは,担当者たちの知識の塊です。しかし,ユーザーと開発者がやり取りしたこと,メンバーの頭の中にある情報も含めたすべてが,成果物としてリリースされるCD-ROMに収まっているわけではありません。
こうした知識は,どんなにドキュメントを書いても,伝わらないものがあります。例えば自転車の乗り方と同じです。いくら言葉で教えてもだめで,後ろを支えて一緒に走ってあげないと伝わりません。ソフト開発なら,同じ現場にいて,人と人とをつないで暗黙知を伝えていくことが不可欠でしょう。それが,人を育てることだと思います。
人を育てることが,結果としてソフトを育てることにつながります。IT業界にはせっかく有能な人が入っているのですから,一生懸命やった人の才能が評価され,ユーザーと開発者の両者がハッピーになれる仕組みを作っていきたいと考えています。
(聞き手は,森重 和春=日経SYSTEMS,取材日:2008年6月25日)
平鍋 健児(ひらなべ けんじ)氏