最終更新時刻:2009年11月28日(土) 10時00分
-

続・100万行のソフトの作り方

公開日時:
2004/05/14 09:20
著者:
umeda

ゴールデンウィーク連休前の石黒邦宏さんのゲストブログはたいへん好評で、特に最初の2つのエントリー(「100万行のソフトの作り方(1) (2)」をきっかけに、ウェブ上でいろいろと議論が起きていました。石黒さんには、いずれまたゲストブログをお願いしようと思っていますが、「あまり時間が経たないうちに、この反応をめぐって、何か書いていただけませんか。」とお願いした結果、以下のような文章が、僕のところに届きました。

---------------------------------------------------
石黒です。

Blog の1つの可能性として、これは新しいメディアになりうるのではないかという話を聞いた時、正直「そんなことあるわけないじゃん」と思いましたが、今回実際に体験してみての感想は、「これってもうメディアかも」でした。特にTrackBackのリンクを辿っていくと、非常に質の高い議論が連鎖するようにされていて、しかもそのもとが自分の文章だというのは、とてもエキサイティングな経験でした。ダイナミックな対話データベースという感じですね。なんだかこう書いていると初めて Web を見て興奮している人のようで、「そんなのもう知っているよ」とか言われそうですが。

さて、いただいたTrackBackへの感想を少し書いてみたいと思います。

同じくシリコンバレーで仕事をされている、Cagylogic blog からいただいたTrackBackから、

「日本ではSEがいっぱいいます。このSEってのが曲者です。
日本で言うと、システムエンジニアってことになってると思います。日本にいるとき、おらもSEだと思っていました。SEがプログラム書いてるんです。
日本でプログラマって職種ってあんまり見たことが無かったです。
日本で自称SEの人や肩書きがSEの人は、プログラムが書ける人とかけない人がいました。
まぁシステムエンジニアですから、システムのデザインができればいいので、プログラムがかけるかどうかは重要じゃないです。
逆に日本で言うSEってこのシリコンバレーで会ったことがおらは無いです。このエリアで日本で言うSEに一番近い職種はおそらくマネージャーだと思います。
そうすると、日本には自称マネージャーがいっぱいいて、プログラマがおらんことになります。」

まったく同感です。私も日本で最初に就職した会社では、SE採用でしたが、配属されてから実際にやった仕事はUNIXのシステム管理でした。シリコンバレーでは、会社によって呼び方が違うと思いますが、うちではITと呼ばれる人間がそうした仕事をやっていますね。確かにSEという職種は聞いたことがないです。

私は開発スタイルそのものもエンジニアリングの対象になると考えています。開発スタイルやリソースアロケーションには、いろいろな形態があるので、プロジェクトや環境に合った適切なものを選ぶ必要があると思います。しかし、SEという職種は、エンジニア個々人の具体的な役割を隠蔽してしまうので、開発スタイルを検討する上で必要な、役割ごとの定量的な分析を困難にするはたらきがあるのではないでしょうか。

ということで、日本のプロジェクトの場合、SEという職種を使わないことから始める必要があるかもしれないですね。SEを20人プロジェクトに割り当てましたと言っても、具体的な仕事の割り当ては見えてこないですし、開発スタイルも分からないですから。

次は、わんこ日記さんから。

「俊足な開発をしている場合、テストで問題を見つけるのが遅れたら、訳がわからない変なものにすぐになってしまうから、テストって大変ですよね。USの開発者3に対してテスト1というのが、うらやましい。
日本じゃ「テストなんて新人がやるもの」って感じで、かなり軽視されている傾向があるからな、先週も、優秀な人をテストにつけようとしたら「気をつけてくれ」って指導が入ってしまったし… 本当は、問題が起こりそうだし技術的に難しいテストだからお願いしたんですけどね。」

テストエンジニアリングはそれ自体独立した技術ですね。開発と同じだけの深さと広がりがあると思います。最近では、XPプログラミングのテストファーストのようにプログラマ自身がテストケースを書いてからプログラムを書くというスタイルが提案されていて、実際に採用しているプロジェクトを見たこともあります。この場合、プログラマとテスターとの垣根が無いわけですが、人間、痛そうなところを無意識のうちに触らないようにしてしまうという弊害もあるなと思いました。

優秀なテストとは如何に効率よくプログラムの秘孔を突くかということにあるわけですが、自分の秘孔はうまく突けないですね。やはり開発とは別に優秀な秘孔突き集団が必要だと思いました。

私たちはテストチームをQA(Quality Assurance)と呼んでいます。日本の製造業は世界に稀にみるQA大国なわけですから、QA自体を軽視しているわけではないと思います。もしかすると、SEという職種の呪いがここにもあって、テストエンジニアという存在とQAという工程を隠してしまっているのかもしれませんね。
---------------------------------------------------

以上が、石黒さんからでした。

本欄3月29日「ベテランの参入がBlogを活性化させる」でご紹介した吉岡弘隆さんの「未来のいつか/hyoshiokの日記」でも、石黒さんのエントリーの前後で、「デイリー・ビルド」、「シリコンバレーのプログラマーは本当に凄いのか?」「シリコンバレーのプログラマは本当に凄いのか(続き)」が続きました。吉岡さんならではの視点でのこの議論は、とても面白く刺激的なので、併せてご紹介しておきたいと思います。

※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。

前後の記事

このエントリーへのコメント

5

縦割りのソフトウェア開発に関しては、
ウォーターフォールがその顕著な例でしょう。元々、ウォーターフォールは数十年規模のソフトウェア開発で実証されたもので、当然の事ながらチェックポイントでイテレーティブに作業が行われています。ですが、日本も含めて短期間のプロジェクトに適用する段階でイテレーティブな要素が割愛されました。これは、生産ラインにおけるオートメーションに似ています。本来的に工業化されていないソフトウェアにオートメーションの分業化を持ち込んだことが、問題の本質と思います。そして、一番問題なのは人が変わるときのコミュニケーションが十分でないことです。良く言われることですが、UMLはコミュニケーションのための表現方法であって、それ以上でもそれ以下でもありません。EAでも、コミュニケーションが成り立たなければ絵に描いた餅でしかありません。UML2やMDAでも、要求モデルから実装モデルまでの連携が自動化できるとは思えません。そこを繋ぐのは人であり、その人のセンスなのかも知れません。だからこそ、動くソフトウェアを早く出すというのが重要だと思う。唯、それがどの部分なのかを見極めるのが難しい所だと思う。

  kazamachi on 2004/05/15

4

「続・100万行のソフトの作り方」を拝見して、
活発な議論されているのは大変興味深く実感した。
小生は、これまで所謂、約15年前になるが「SE」であり、
また、「プログラマー」であった。
当時は、アプリケーション・パッケージ利用が少なく、
大抵の場合、業種毎に、ベース・プログラムソースが決まっていた、と記憶している。このソースコードを見ると、整然とコーディングされているものもあれば、
最近、2007年問題で話題にのぼる「スパゲッティーコード」と呼ばれるものもあった。当時はCobolが主流、そして、PCソフトウェアはベーシックであった。
今回、注目されるのは2点だ。一つ目は、シリコンバレーのソフトウェア開発(「SE」と「プログラマ」の違い含む)と日本国内の違い。2点目は、膨大なステップ数を持ったソフトウェア開発のメソドロジーに関するものだと認識している。
前者は、かつて議論されてきたキャリア・パスの共通認識が、IT業界の中においてコンセンサスを得られなかったままで時間が経過した結果に引き起こされてしまったのではないだろうか。当時は、入社して「プログラマー」を経験、その後、「上級プログラマー」になった後に、
顧客業務の分析などの基本設計ができるソフトウェア開発者に至る(これを「SE」と呼んでいた)といった具合にだ。ただし、当時でさえ、単なるプログラム開発だけでは十分といえなかった。現在、インターネットが主流になっているが、その頃はパケット通信が主流であり、
業界によっては、全銀協手順やリテールに特化したプロトコルもあって、ネットワーク知識を持った技術者は希少価値が高かったといえる。特に、いまのように、オープンや標準化された技術が少なかったことに加え、電子化されたマニュアルなどが少なかったこともあって、主従関係が成立していたといえる。
この頃の成果評価は、仕様書の書き方から、単体テスト、複合テスト、テスト・データの作成方法、ソースコードの記述方法などが対象となり、いかにして、「できる先輩」の下で仕事をするかといったことが、その後のスキルを左右したと思われる。
小生は、幸運なことに、アンダーセン・コンサルティングのシステム構築方法や他社ソフトウェア開発方法などを社会人になった当初に学ぶことができたことは、現在も大きな財産となっている実感している。
説明が長くなってしまったが、「SE」とは「プログラム作成」は当然であり、「ネットワーク」「検証」「効率化施策」「マニュアル作成」「顧客への技術教育」まで含めた、広い範囲の知識が必要ではないだろうか。
ところが、企業組織が大きくなると、このタスク毎に縦割り組織になる傾向がなかったとはいえないだろう。
後者に関しては、モジュール開発手法を利用すれば、当時でさえ、センスの良いエンジニアであれば、高い生産性が図られていた。この点では、ステップ数の議論以上に、業務に即した、もっと言えば、仕様書に忠実なソフトウェア開発が求められていると思われる。今後、EAやUMLに期待したい。だが、オブジェクト指向に走りすぎると、その弊害としてソースコードが理解できなくなる事態をも引き起こす可能性があり、このトレードオフを最適にすることが、マネージャーに要求されているのはないだろうか。ご参考まで。

  maki on 2004/05/15

3

 そう言えば先日、納期の短縮を求められた時にマネージャ(と思われる人)が「プログラマーとSEを増やせばなんとか」と無責任に発言していたので、「SE増やしたところでどーにもならんじゃろ」と思ったのを思い出しました。
 そもそもここでは設計もプログラマーと呼ばれる人がやっているので(つまり他の人が書かれている「SE」なので)、「そもそも増やしたSEってなにするねん?」と突っ込みたくてしょうがありませんでした。
(突っ込むとただでさえ無駄に長いミーティングがさらに延びそうだったのでやめましたけれど)

  asakura-t on 2004/05/14

2

プログラムが書けない SE がいることにも驚きですが、もっとひどいのは、プログラムにコードというものが存在することすら知らない「コンサルタント」という職種の人たちだと思います。
今の IT 業界が、そうしたコンサルタントたちによって半ば牛耳られていることも事実です。で、技術者は軽んじられる一方です。
技術者に対するしかるべきリスペクトを行っておかないと、日本のソフトウェア産業は遠からず危機的状況に陥ると思います。

  McDMaster(マナル店長) on 2004/05/14

1

日本市場におけるSEという職種の特殊性だと思われます。日本における給与格差でも、SE>プログラマになっていますよね。でも、プログラムが書けないというより理解できないSEは、個人的に嫌いです。何故なら、実装する技術は未だ成長過程で、構想が何でもできるわけではないですから。だからこそ、アーキテクチャが重要だと叫ばれていると思います。
テストエンジニアに関してはとても重要な仕事だと思います。そして、テスト ファーストで利用されるunitテスト等はホワイトテストですよね。これだけでは、プログラムの品質は向上してもシステムとしての品質は向上しないですよね。だから、XPではシナリオがあると思うのですが。このことも含めて、日本においてはソフトウェアに関わるエンジニアは何を目的にしているかを自覚する必要があるし、その作業を行うという意義を社会や会社も認める必要があると思います。そうしないと、職種による差別が無くならないと考えます。

  kazamachi on 2004/05/14

ブログにコメントするにはCNET_IDにログインしてください。

この記事に対するTrackBackのURL: 

CNET_ID

メンバー限定サービスをご利用いただく場合、このページの上部からログイン、またはCNET_ID登録(無料)をしてください。