華僑の故郷にシステム開発会社を作った日本人

情報システム開発をコストメリットがある中国で行う中国オフショア開発。中国現地にシステム会社を作って4年目の私がオフショア開発の現場を紹介します。

オフショア開発に「擦り合わせ」があるのか?

システム開発現場、特にオフショア開発での擦り合わせ

開発を外部に委託するときに設計書を開発側に発行する。
発行された設計書はどんなに完璧に作ったと思っても問題が存在する。
その問題を取り除くのは開発側である。
作る側の立場で設計書を見て初めて穴が見えてきて、
仕様説明会やQA票のやり取り、会議を通して穴を擦り合わせて潰していく。
言い換えれば、設計書の最後の仕上げを行っているのは開発側である。
これは私自身が過去に、設計側で仕事をしていて強く思ったことである。

設計書を発行した後に設計の問題が発覚するので、
設計書を数回に分けて開発側に発行する場合、設計側は大忙しとなる
なぜなら設計の問題に対する大量のQA票の処理と次回発行予定の設計作業を同時にこなさなくてはならなくなる。だいたいはこういう場合、QA票が後回しになり、さらに忙しくなってくるとこれぐらいの内容は、
QAを寄越さないで開発側で考えてくれと言ってします。

日本の優秀なソフトハウスは設計側がこのような態度でもなんとかしてしまう。
仕様の擦り合わせに止まらず、進め方の擦り合わせまで行うのである。

オフショア開発にこのようなやり方を持ち込むといい教訓を得ることができる。

この例で言えば、「一体、何を質問して何を質問しなくてはならないのか?」
このあいまいなところに境界を引くのは難しい。
とにかく質問を減らせという設計側の指示なのだから質問を減らす。
よって、問題があるまま開発が行われ、設計側にリリースした後に問題が噴出する。

設計側は問題があるならこちら側に報告してもらって解決して開発してもらわないと困ると激怒する。

これは極端な例かも知れないが、少なからずこういう面があり、ここで、
トップダウン的な文化圏とボトムアップ的な文化圏の違いを学ぶのである。

また、言語的な問題もあると思う。
外国語で書かれた設計書の問題を的確に見つけてそれを質問という形で設計側にお伺いすることができるのか?

私たちが英語の設計書を見て積極的に質問できるか。たぶん難しいと思う。
よって、質問票を介して設計書の問題を潰すやり方は機能せずに、
問題があるまま開発が行われ、設計側にリリースした後に問題が噴出する。

このような問題を経験すると設計側は設計書の強化を次のプロジェクトで行う。
それは一見正しいように思える。
果たしてそうだろうか。それはなにやら部分最適化的な問題解決に思える。

極端な例では、まるでプログラムのような設計書ができあげる。
そして、こんな設計書を書くなら日本で開発した方がいいという声が出てくる。

ここでこの記事のタイトルの「擦り合わせ」を調べてみると、こういうものが出てきた。

http://techon.nikkeibp.co.jp/article/WORD/20060224/113645/

「擦り合わせ型」の対比として「組み合わせ型」という言葉が書かれている。

ここで思うのは、開発側は「組み合わせ型」をイメージしていて、設計側が「擦り合わせ型」をイメージしていたとして、両者がそれに気づかずにプロジェクトを進めてしまっているのではないのかと?

次回は、ユニクロはどのようにSPA(製造小売業)を展開しているのかを考察してみたい。

BTS(バク管理システム)に思う つづき

前回、BTSには管理者の視点が足りないという話をしたが、
具体的にはどのような問題があるのか見てみよう。
 
管理者の視点とはいったいどのような視点なのか?
もう一度テストチームにレポートを提出してもらった。
 
管理者の視点とは、バグの分析のこと。
バグの数が少ないモジュールは、テストが十分になされていない可能性がありますし、バグが多すぎるモジュールは設計にミスがある可能性があります。
開発者ごとのバグ数や、テスターごとのバグ発見数などを集計すれば、
このモジュールは複雑なので、この開発者とこのテスターに担当させよう、ということもできますし、バグ発見数が収束してきたので、開発者とテスターの人数を減らそう、ということもできます。
 
これらのことはBTSで対応できます。
モジュールごとにバグを表示させる、担当者ごとにバグを表示させるということは、どのBTSでも実現可能です。
よって、バグの管理をBTSに一本化しても、問題ないと思います。
 
 
確かに、バグの分析は管理者の視点の一つだが、私はこの結論にNGを出した。
それは、管理者として大切な、もう一つの視点が欠けているからだ。
そのもう一つの視点というのが何なのか、テストチームに話をした。


まず、大前提として抑えておかなければならないのが、デバッグの作業は、バグの修正が終れば完了、というのは間違いだ、ということだ。
プロジェクトのオーナーはテストチームのリーダーではなく、顧客だ。
たとえバグが修正されたとしても、顧客の合意が得られなければ完了にはならない。この顧客の合意を得るという視点がまさに管理者の視点になる。

また、この合意というのは、ただ単に、このようにバグを修正しましたので承認してください、というものではない。
「このようなバグがあるのですが、業務上起こりえるものでしょうか」
と相談しなければいけない場合もあるだろうし、「このバグは修正に時間がかかるため、再来週のリリースでよろしいでしょうか」というような交渉をしなければならない場合もある。

ここで問題になるのは「全体を見渡せるか」だ。
BTSは個別の詳細についての情報は豊富だが全てのバグを見渡すのが困難だ。

一覧表であればこのようなことを避けることができる。
バグの内容について協議したいものは赤で色分け、時間の交渉をしたいものは青で色分け、というようにしておけば、問題を探すような時間が無くなり、
ミーティングがスムーズに進む。

これをBTSで解決するのはなかなか難しい。
バグを一覧で出力してくれて、なおかつきれいに色分けまでしてくれるようなBTSは今のところ聞かない。
どうも、管理者の視点をBTSだけで実現するのは無理のようだ。。。
だが、無理やりBTSで一本化するより、2つの視点によってBTSとバグ一覧を使い分けた方がよさそうだ。

私「一覧がないと、顧客とのMTGで困るだろう」

是澤君「何が困るのですか?」

私「顧客にしてみれば報告したバグがいつ修正されてくるのかが知りたいでしょう
それを一覧にして、これとこれは同じリリースになりますという風に
一覧にすることで伝えることができるよね
それが、管理者の視点ということだよね」
「また、バグの種類、重要度等の情報を統計し、統計結果を分析した上で
品質改善を図ることができるよね」

是澤君「そうですね、ではCSVで出して一覧にして、顧客に渡します」

私「ただ、CSVにして顧客に渡すだけでは駄目だよね
事前のミーティングで一覧の項目について合意を得ていなくてはなりません」

この一連のやりとりで、テストチームはBTSをCSVに出力し必要項目をまとめ
顧客に報告したようだ。

バグの管理には開発者の視点、つまりバグを修正するという作業を確実に行うという視点と、管理者の視点、つまり顧客の合意を効率よく得るという視点の、2つの視点がある。
BTSは開発者の視点からは優れているが、管理者からの視点から見るとどうしても欠点が多い。
逆に一覧表での管理は管理者の視点からすると不可欠なものだが、開発者の視点からすると絶対的に必要なものではない。

BTSは開発のバグ修正プロセスを支援するものであり、顧客との合意形成を支援するものではないと言える。

BTSを一本化するにはどうすればよいか、という主題とはずれてしまったが、結局のところ、テスターと開発者の間ではBTSを使い、一覧表を使わないという形で一本化でき、管理者と顧客の間ではBTSを使わず一覧表を使うという形で一本化できるのではないだろうか。

 

BTS(バク管理システム)に思う

バグの修正がどのように行われているかをレポートして欲しいとテストチームに依頼した。
すると下記のようなおもしろいレポートが届いた。
バグトラッキングシステム(以下BTS)を用いてバグ管理をしているのだが、
そのBTSでのバグ管理の問題ということだ。
見てみよう。

是澤さんは嘆いていた。
あぁ、おれはなんて馬鹿な事をしていたんだ・・・。
日本側のPMの要求とはいえ、BTSとエクセルでの二重管理なんてあまりに効率が悪いではないか。
ムラ、ムリ、ムダを省くのが改善の基本だが、この二重管理はまさにムラではないか。
なのに、これまでまったく改善してなかった。。
 
「是澤さん、是澤さん、BTSとバグ一覧表でバグの状況が違います!」
という開発側のマネージャーの劉さんの再三の指摘を受けて、
是澤さんはバグ管理をBTSで一本化する道を模索し始めた。
 

BTSには、エクセルにはない利点が多くある。
一つのバグを一つのトピックで管理するので、バグ修正の経過が見やすい、というのがその1つだ。
同じようなバグが見つかれば、「そういえば以前同じようなバグがあったから、検索して参考にしよう。」ということが簡単にできるし、設計書に同じような仕様があったときには、「この仕様はあのときのバグの対処を参考にして、あらかじめ使用を追加して開発側に渡そう。」ということができる。
 

バグの現在の状況をリアルタイムに把握できるのも大きな利点だろう。
オフショア開発では普通の開発とは違い、翻訳、というフェーズが入る。
バグ修正では、テスト担当者、翻訳担当者、修正担当者、という風に、担当者が頻繁に入れ替わる。
場合によっては設計チームとのやり取りも必要なため、バグの現在の状況をはっきりさせないと、
「是澤さん、是澤さん、ID23のバグの再テストは終わりましたか?」
「え!?一覧ではまだ翻訳依頼を出したばかりということになってますけど?」
「辣腕翻訳家の羅さんが数分で翻訳しちゃいました。
バグの修正も終わりましたよ。」
「えー!?
すぐに再テストします!!」
ということになりかねない。
 
一覧表の管理で起こりうるこのような状況も、BTSを使うと簡単に回避できる。
バグに、再テスト中、翻訳中、修正中、などのステータスをつけることもできるし、
現在の担当者の名前を付けることもできる。
また、担当者が変わった際には担当者にメールが送付されるため、
「え!?今、自分が担当者だったの???」
なんていうミスを防ぐことができる。
 
 
さらに、エクセルでの管理は、コミュニケーション上不都合があることも確かだ。
バグ一覧は各担当者が同時進行で修正を加えるため、
「翻訳担当の羅さん、バグ一覧を更新しましたので翻訳お願いします!」
「・・・是澤さん、 私も今更新したばかりなんで、是澤さんの一覧と内容が違うんですけど。。。」
「えー!?でもそのバグ急いで修正しないといけないから、そっちで修正してもらえませんか・・・」
「・・・わかりました。。。」
ということになり、羅さんは泣く泣く修正するはめになる。
 
つまり、翻訳者がバグ一覧に翻訳内容を記述している最中に、テストチームがバグ一覧に新たなバグの内容を記述してしまったため、
テストチームが新しく上げたバグ一覧に、翻訳の内容を記述しなおす、という統合の作業が必要になる。
バグ一覧での管理には、ある人が更新した内容と、別の人が更新した内容が異なるため、
一方の人が更新したバグ一覧の上に、他方の人が更新内容を書きなおす、という作業が必要な場合があるのだ。
 
だが、BTSの場合、このようなことは起こらない。
一つのトピックに次々にレスを投稿していけばよいからだ。
一つのバグは一つのトピックで管理されるため、ほかのバグの更新に影響されることもない。
 
 
BTSには、一覧形式にエクスポートできるものも多い。
私たちが使っているBTSでも、CSV形式とPDF形式でエクスポートが可能だ。
見やすさという面ではエクセルの一覧表に劣るが、
バグの原因や修正内容、担当者などが一覧で確認できるという点は変わらない。

 

このレポートを読んですぐに私はこのレポートに不満をもった。私は彼らに指摘した。


「しかし顧客や管理者にとってはBTSが不人気だ。

それはBTSは開発者のプロセスを効率化することを目的に開発されていて、

管理者の視点で開発されていないからだ。

  そもそも開発者が自分たちのために作ったものだから管理者の事なんて考えてもいない」
 
「この管理者視点を明確にしなくては二重管理から抜け出る事はできない」と忠告した。

そもそも、顧客は、なぜエクセルでのバグの管理を要求してきたのだろうか?
バグを一覧管理することの利点をBTSで
・バグの原因、どのように修正したかなどを一覧で見れる
・モジュールごとのバグの個数を調べる、 開発担当者ごとのバグの個数を調べるなど、集計が容易

(続く)