今回の題名は抽象的ですが、話の内容は私の考える腕の良いSEとは?というお話です。
SEというのはシステムエンジニアのことで、主に業務で使うコンピュータプログラムの設計をする人のことを指します。
実際にプログラムを作成する人のことをプログラマと呼ぶことが業界では一般的です。
個人的にはなんとなく差別的な感じがして、どちらか片方でよいのではとも思いますが、今回は設計についての話なのでSEという呼び方で書きます。
1990年後半からコンピュータ業界でもっともホットな話題といえば、2000年問題でした。
これはどういう問題かというと、昔、ディスクやメモリーが高価だった頃の名残で、日付の年は西暦の下2桁で保存するということが一般的だったので、2000年になったときにコンピュータが1900年と間違えて認識してしまうことになり、様々なシステムが誤動作を起こすと言われたものです。
コンピュータ業界のみならず世界中で大騒ぎになりました。
銀行の預金残高がなくなる。
飛行機が落ちる。
原子力発電所が爆発する。
ロシアからミサイルが飛んでくる。
などということがまことしやかに言われたのですが、幸いにして大したことは何も起こらず世界中が肩透かしを食らいました。
かく言う私も、普段は買わないミネラルウォーターを買いだめした記憶があります。
この名残は Windowsのバージョンに未だに見ることが出来ます。
Windows95 は 1995年に、
Windows98 は 1998年に、
Windows2000 は2000年にリリースされたものです。
当時、コンピュータにかかわっていた人は、ほとんど無意識に西暦の年を2桁で表していた証拠ですね。
さて、前置きが長くなりましたが、もうほとんどの人が2000年問題を忘れてしまっている今、『西暦の年を2桁にしてください』ユーザからこんな要望を聞いたとき、SEはどうしたらよいでしょうか?
今回のシステムでは西暦の年を2桁で持っても大した問題起こらない。
(扱うデータはすべて2000年代のもの)という前提の上で考えて見ます。
よくない順に並べると・・・
1.ユーザの要望なので2桁のシステムを設計する。
2.2000年問題を説明して4桁のシステムを設計する。
3.ユーザの見える部分は2桁にして、内部的には4桁で設計する。
1、2は明らかに間違いです。
1はもし、1900年代のデータを扱うようになったときに簡単に破綻してしまうシステムです。
例えば、このシステムではよくても、別のシステムとのデータ連携などが発生することがあります。
(前に"20"をつければよいだけですが)
2はユーザの要望を満たせていません。
『西暦の年を2桁にしてください』というユーザの真意は何でしょう?
おそらく、ディスクやメモリーの容量を気にしての要望ではないでしょう。
もし、容量を気にされているのであれば、「仮に100万件のデータを扱ってもわずか 2MByteの差しかありませんので、現在使われているサーバで問題になることはありません」と説明すべきです。
余談ですが、日付は文字型で保存されることが多いと思います。 が、ディスクやメモリーの容量を気にするなら数値型で持った方が小さい容量で済みます。 割り算と余りよりSubStringの方が分かりやすいというのは、コボラーとコボラーに育てられた技術者が多くて、常識を鵜呑みにしてしまうからだと思う。
ほとんどの場合『西暦の年を2桁にしてください』というユーザの真意は『入力のキーパンチ数を減らしたい』ということや『表示を短くしたい』いうことをユーザの言葉で説明しただけに過ぎません。
私の考える良いSEというのは、このユーザの言葉を汲み取り『西暦の年を2桁というのは、キーパンチ数を減らしたいのですね?』と確認し、3の対応を取れるSEです。
実際には日付のような簡単な例で、1や2のパターンで作るSEはほとんど居ないと思います。(たまに見かけますが・・・)
しかし、もっと複雑な問題にぶつかったときに『ユーザが言ったから』という理由でわけの分からない設計をするSEは実際にたくさんいます。
特に、以前のコラムでも書きましたが、下請け中心の仕事をしてこられたSEは、ユーザの言葉を杓子定規に実現しようとしますので、ユーザの皆様も自分の要望が完全に伝わっているか、十分にコミュニケーションを取って確認してください。
長々と駄文を書きましたが私が言いたかったのは、
『システム開発のよくある姿』を描いたこの漫画の内容です。
かなり秀逸です。
海外の人の作品のようで、あちこちで引用されているので使いました。
著作権は誰にあるのか分からないです。
私は『3連のブランコを作って』といわれて『タイヤのブランコ』を提案できる人になりたい。
そう考えて日々、努力を続けています。


コラムの全インデックス