SE稼業は忘己利他(もうこりた)─現場に転がる箴言集

第6回あせりの設計・製造

はじめに

不条理な要求ないしは見積もりの失敗によって最初から不可能な開発期間しか与えられなかった場合や、いつまでたっても決まらず二転三転する要求仕様に振り回されて多くの時間を失ってしまった場合、開発チームの全員はまちがいなく⁠あせり⁠モードになってしまいます。⁠あせり⁠とは目標未達の危険性に対する感情的な反応であり、開発に必要な最低限の期間が実際に失われてしまったのならば、このプロジェクトは間違いなく失敗することになります。必要時間の不足は、業務品質の劣化を招き、調査・検討不足に始まり、工程中断、ひいてはある工程自体のスキップという重病を招きます。

#36:腐ったリンゴをどうするか

雑とは手抜きのこと。手抜きの原因は主に時間不足によるあせりや本人のモチベーションの低下によるところが多い。ある手順の必要性を理解していないことによる手抜きはエラーの一種だが、その行為の必要性の認識があるにもかかわらず行われる手抜きは悪質だと言える。

雑な仕事を撲滅したければ、チーム一丸となって健全なチーム運営や妥当性・合理性のある開発に努力することだ。

集団で作業を行うときのほうが、個人でするときよりも一人当たりのパフォーマンスが低下する現象を社会的手抜きという。事故を防ぐ多重チェックは、チェックする人数が増えるほど、他人任せの心理が強まる(リンゲルマン効果⁠⁠。ブレーン・ストーミングも同じメカニズムで効果が落ちる。

釘原直樹、⁠社会的手抜きの魅力研究』

#37:死出の旅路

困難な登山の行程を行き抜くためには、第一に食糧や備品などの装備が必要だ。開発においては適切な開発費・期間・体制の確保などの事前準備にあたる。第二に現在地・目的地を特定するための地図とコンパスが必要だ。開発においては要件定義書・仕様書・設計書などのドキュメントとそれを理解・判断するチームの開発能力に相当する。この第一と第二の条件なしで開発を進めることは装備も地図もコンパスもなしで雪山登山を強行することに等しく、プロジェクトの全員は死出の旅路に出発するようなものだ。

すべての事故には理由がある
2005年度における山岳事故態様分布:

1.道迷い:594人、2.滑落:279人、3.転倒:247人

典型的な連鎖は、悪天候→道迷い→疲労→死亡のケースである。

山岳遭難事故に見るヒューマンエラーの影響
  • ミステイク(mistake⁠⁠:意図や行動の間違い・確認ミス。錯覚、勘違い、誤判断等
  • スリップ(slip⁠⁠:意図は正しかったが、行為段階での誤り、し忘れ等
  • ラプス(lapse⁠⁠:動作の意図を忘れる、記憶された情報が取り出せない等

主要な事故の80~90%がヒューマンエラーによって起こる。

青山千彰、⁠山岳遭難の構図』

#38:型より入れ

仕事であれスポーツであれ名人の域に達する前は、先人が編み出した基本の型やフォームをマスターすることが重要である。型というものは、ものごとの試行錯誤の結果、無駄なものをそぎ落とした普遍的かつ合理的な一連の動作のことだと言える。我流は人の成長をある低いレベルで止めてしまい、せいぜい行ったとしても中程度までだろう。型は先人が編み出した検証済みの成功パターンであり、ソフトウェアのプラットフォームにおけるフレームワークもこれと同様に情報処理における共通的かつ普遍性のある型の集合体であると言える。人であれ組織であれコンピューター・システムであれ、この型の集合体やフレームワークが強固な基盤を与えてくれる基となる。

型を持つ人が型を破るのが型破り。型がない人がやったら型無し。

中村勘三郎(歌舞伎役者)

#39:現状維持の法則

何かに行き詰ったとしても人は今までやってきたことをなかなか変えることができない。例え、その行動が非効率だったとしても、それでよしとされる環境にあればいつまでもやり方を変える気にはなれない。しかし、その問題が限界点を越えたときにそれが問題として立ち現れるが、もう後の祭りである。悪い状態に陥らないようにするためには、地道な改善活動を継続する以外に方法はない。

人は、選択肢を前にして迷った場合、新しいものに手を出すことを選択するよりも、今と同じ日常をそのまま送っていくことを選択する。

ダニエル・カーネマン(行動経済学者)

#40:設計書がありません

設計書がなければソースコードの解析による開発となり、まちがいなくその設計品質は劣化する。設計品質が劣化すれば製造品質も評価品質も劣化する。いつまでたっても設計書は更新されないまま品質劣化の悪循環が繰り返される。当り前のことである。設計書の前の要求仕様書がなければもっと悲惨な結果となる。

ものごとがそうなっているのは、そうなったからだ。

G.M.ワインバーグ、⁠コンサルタントの道具箱』

#41:ソースコードの文脈を読む

文脈を読むとは、文章全体の流れを正しく読み取り、その趣旨を正しく理解することと言える。すなわち読解力のことである。日本語の読み書きができれば文章を正しく理解できるわけでもないのと同じようにプログラム言語の読み書きができれば一連のソースコードの文脈を正しく把握できるわけでもない。

文脈を正しく読めなければソースコードの解析もできない。まとまったコードの文脈の主文が何であるかを先に把握することが重要だ。分岐点に続く副文に気を取られると文脈を見失ってしまう。文脈を見失ったら分岐点に戻ること。

文脈とは、文章の流れの中にある意味内容のつながりぐあい。多くは、文と文の論理的関係、語と語の意味的関連の中にある。文章の筋道。文の脈絡。コンテクスト。

デジタル大辞泉

文脈力の四つポイント
  • 事柄の意味をつかまえ、文脈を押さえられること
  • 相手の文脈や、場の文脈に乗れること
  • 自分の文脈をきちんと伝えられること
  • 文脈を逸れても、元に戻れること

斎藤孝、⁠頭がいいとは文脈力である』

#42:「相互義務」があることを知る

仕事の依頼者と請負者の間には相互に果たすべき義務がある。依頼者は自分の依頼するものを説明する義務があり、請負者はそれを実行する義務がある。依頼者はお金を出したから後はよろしくなどという態度は許されない。何を依頼するのかその内容を提示することなく、何とか作ってよと言われても何を作ってよいのか皆目わからない。自動車を作ってと言われても、自家用車なのがトラックなのか、何馬力なのか、などの仕様が明確に提示されなければ何を作ってよいのかわからない。要求仕様を提示しない依頼者も悪いが、それに対して忍従している請負者も相当の愚か者といわざるを得ない。どこまでも譲れるものではない。

ノブレス・オブリージュ(Noblesse oblige)
位高きは、徳高きを要す(優位の者こそ大きな義務を負う⁠⁠。

レヴィ公爵、⁠格言と省察』

おわりに

設計・製造に共通する基本的な問題は⁠時間制御の失敗⁠にあると言えます。この問題の解消方法は次のとおりです。

  • 説得力のある見積もりに基づき妥当な開発期間・費用の獲得を図ること
  • 早期の仕様凍結を行うこと
  • 必要時間の削減のために、業務の効率化および失敗の削減を常時実行すること

人間が最も苦手とする認識が時間に関する認識です。人間は、⁠自分の見たものがすべて」という強い心理的傾向をもっているために、目には見えない時間というものを上手にコントロールできません。いつも時間に追われている人々が多いのもそのせいでしょう。いくらあせったとしても時間が延びるわけでもありません。あせりから脱却するには用意周到な準備を行う以外には方法はありません。

おすすめ記事

記事・ニュース一覧