簡単に見える時ほど注意せよ | 悪態のプログラマ

悪態のプログラマ

とある職業プログラマの悪態を綴る。
入門書が書かないプログラミングのための知識、会社の研修が教えないシステム開発業界の裏話は、新人プログラマや、これからプログラマを目指す人たちへのメッセージでもある。

最初は簡単そうに見えた仕事だったが、やってみると意外と難しかった、ということがある。

例えば、「CSV ファイルを読み込むプログラムを作ってくれ」という依頼があったとしよう。初心者プログラマにありがちなことだが、CSV なんて読み込んだ文字列をカンマで分割するだけだ、などと簡単に考えてしまうことがある。

しかし、実際にプログラムを作って動かしてみると、うまく動かない。いくつかの考慮が欠けていたのだ。例えば、

・値の中にカンマを含む場合はどうするか。
・値の中に改行を含む場合はどうするか。
・カンマの前後の空白は値に含むか。

といったことである。

よくあるルールに従う(例えば、Excel が出力するような)場合には、既存のライブラリ等を利用して簡単に実装できるかもしれない。しかし、独自のルールが必要だとしたら、ちょっとした手間がかかる。


あるいは、「文字列検索機能を作ってほしい」という依頼を受けたしよう。単純な完全一致検索や部分一致検索を想定して、安請け合いしてしまうかもしれない。

しかし、依頼者の頭の中にあったのは、日本語の単語単位できちんと検索してくれるプログラムかもしれない。つまり、「京都」で検索して「東京都」が出てきては困るというわけだ。こうした要望に対応するには、形態素解析のような高度な技術や適切な辞書データが必要になってくる。


ここに挙げたような例は、ある程度の経験を積んだプログラマや SE であれば、すぐに頭に浮かぶような話である。彼らは、仕事が依頼された時に、その場で質問し、上記のような問題はクリアにするだろう。

「安請け合い」しないために肝心なのは、仕事を依頼されたその時に、どこまで踏み込んだ質問ができるか、ということだ。経験が浅い人には難しいかもしれないが、そういう意識を持っていれば、そのうちできるようになるだろう。


一方、ベテランの技術者でも難しいのは、依頼者しか知らないような独自の要件(業務ロジック)に関することである。

特に、顧客から「ここのデータは、単に××コードで引っ張ってくるだけですよ」なんていう、いかにも「簡単でしょう?」といった感じの説明があった場合は注意したほうがよい。意識的であるかどうかは別として、必要な情報が隠されていることがあるのだ。プロジェクトの後の方になって、「いや、通常のケースはそれでいいんですけど、こういった場合はこうなって、ああいった場合はああなって・・・」などと「例外」がどんどん増やされたりする。

依頼者からすれば、細かい例外的な条件などは、大したことではないと思っているのかもしれない。システムにとっては、「通常」だろうが「例外」だろうが、処理が必要なのであれば同等なのだが。

何か仕事を頼まれたときには、簡単そうに見えることほど警戒したほうがよい。安請け合いをする前に、なるべく多くの情報を聞き出すことである。





■関連記事
やってみなきゃわからないという現実
どのくらいでできる?
・タブ区切りのCSV?



ソフトウェア見積り―人月の暗黙知を解き明かす
スティーブ マコネル Steve McConnell 田沢 恵 溝口 真理子 久手堅 憲之
日経BPソフトプレス (2006/10)
売り上げランキング: 2407
おすすめ度の平均: 5.0
5 アートとしての見積もり


成功する要求仕様 失敗する要求仕様
アラン・M・デービス 萩本 順三 安井 昌男 高嶋 優子
日経BP社 (2006/11/02)
売り上げランキング: 49741
おすすめ度の平均: 5.0
5 要求マネジメントの良書