2013-03-10

http://anond.hatelabo.jp/20130309233920

残念なソフトウェア開発の現場は、沈みかけの巨大な船に乗った航海に似ている。

船底の穴から浸水必死でかき出しながら、どうにか進んで行く。そういう航海だ。

船のどこにどれだけ浸水箇所があるのかは分からない。

ある穴を塞ごうと船底に板を打ち付けたら、

それによって別の場所に新しい穴を空けてしまったりする。

船の構造はあまりに複雑で、膨大な部品の間にどんな依存関係相互作用があるのか、

誰も完全には把握していない。

それは、はるか昔に組み立てられた太古の船で、

構造把握の手掛かりは、代々伝わる不十分で不正確な古文書だけなのだ

新任の船員は、出た水に対してとにかく手当たり次第に対処した。

どんな物でも使い、徹夜で穴を塞いで回った。

ひたすら大きな声で号令を出し、

いかに早く穴を塞ぐかが、船員の間で競われた。

何人もの船員が過労と心労で倒れ、

航跡には水葬者が点々と残された。

船員たちが経験を積むうちに、浸水するのは船室の新しく手を加えた部分だと分かり始めた。

船室の改装作業の一部でよく穴を空けてしまうらしい。

そこで彼らは、改装作業を終えた時のチェックリストを用意する事にした。

穴を空けていないかの確認事項をリストに列挙し、

作業の後にそれを読んで各部を確かめれば、

穴を空けたままにしてしまう事は無くなるだろう。

しかし、浸水はあまり減らなかった。

穴を開けてしま作業パターンは膨大だった。

それが船底だったら・機関室だったら・客室だったら・甲板だったら・竜骨沿いだったら・板だったら・柱だったら・ドアだったら・蝶番だったら・ドアノブだったら……。

不思議な事だが、ドアノブを直しても浸水する事がこの船にはあった。事例が少なくて原因は良く分かっていない)

チェックリストの長さは、すぐに人が把握できる数を超えた。

複雑な船に対するチェックリストはそれ自体複雑になってしまったのだ。

浸水して沈みかけた船の構造を反映したチェックリストは、

それ自身浸水して沈みかけになった。

船員達はやがて、修正する部品を仮組みして水槽テストするようになった。

事前に水漏れが無いかをテストしてから実際に船に取り付ければ、

部品が新しい水漏れの箇所にはならないはずだ。

それでも、浸水はなかなか減らなかった。

まず、水槽と実際の大海原とでは、

水圧や比重やその他もろもろの条件が大きく違った。

また、既存部品と新しい部品とを取り付ける境界部分そのものについては、

やはり実際に取り付けてみないと分からない部分も多かった。

何より、部品のものが既に複雑だった。

それに対する事前のテストも、天候や波の高さ・潮の流れなど、

様々な特殊な条件を考慮する必要があり、

テストする項目も非常に複雑なものになってしまった。

テストが本当に妥当ものか、穴を見落としていないか、

誰にも分からなかった。

浸水して沈みかけた船の構造を反映したテストは、

それ自身浸水して沈みかけだった。

ある時、水平線上に別の真新しい船が見えた。

それは黒い小ぶりの船で、いかにも俊敏で頑丈そうな船だった。

自分達の乗る船が大波や嵐に遭って戦場と化している時でも、

その黒船は悠々と航海を続けているように見えた。

船員達の一部は、そんな黒船を憧れと羨望の眼差しで眺めた。

しかし、他の船員の一団は、

あの船は小さくて目新しいから、華やかで順調そうに見えるだけで、

俺たちのような信頼と伝統のある大型船舶とは違う、ヨット遊びみたいなものだ。

と、その船の小ささを馬鹿にしてみせた。

ある船員はその船の特徴的なマストの形状を真似て、

自分達の船にも似たようなマストを取り付けてみようとした。

しかし、船は俊敏にも堅牢にもならず、新たな浸水しか生まなかった。

それで結局、この船には今のやり方しか無いのだ、

という保守的な声が、船員達の間で支配的になった。

マストの取り付けが失敗するのを見ていたある船員は

「積荷信仰カーゴカルト)……」とつぶやいた。

その船員は、船に乗る前の学生時代から、小さなヨット作りに熱中していた。

最新の材料設計技法を駆使した小さなヨット自分で組み立て、海に浮かべて楽しんでいた。

自分ヨットが有名なヨット雑誌掲載されたこともあり、それが今でも誇りだった。

そんな彼が、今では大型船舶の穴埋めに奔走していた。

現実の足元で起きる浸水を、ひたすら塞いで回る日々だった。

ああなっていれば……こうなっていれば……そんな仮定が頭の中を何度もよぎった。

それでも彼は忠実に、言われるがまま、浸水を塞いで回った。

ある時彼は、比較的大きな船室の改修を任された。

久しぶりの新しい仕事に彼は熱中し、

自分の知識の全てを注ぎ込んで新しい船室を設計した。

上司がその設計を見たとき、彼の顔は曇った。

「このアタッチメントはなんだ?」

はい、それによって新しい部品既存部品と切り分けられて、

浸水がここより先に及ばないようになります

それに、今後また改修があった場合

アタッチメントの部分から丸ごと入れ替えることができます

「こんなアタッチメントなんて見たこと無い。

他と同じように作り直せ。

それにこの部分の文言はなんだ?」

はい、それによってこの部品使用箇所が限定されて、

他の部分で使われていない事が証明できます

「そんなの他の誰が読んでも分からないだろう。

これを見た客にも、何で今までと違うのか説明できない。

こんな文言は削って他と同じようにしろ

何でちゃんと今までと同じように作らないんだ?」

謙虚な彼は、ただうな垂れて、言われるがまま指示に従った。

彼は善良な人間だったので、自分のこだわりのために無闇に人と衝突するよりも、

職場雰囲気や他の船員達との関係を大切にしようと思った。

彼はそうやって、日々の仕事とどうにか折り合いを付けて、

船員稼業を続けていった。

大きな衝突も無く、仕事も手早かったため、

他の船員達からは頼りにされた。

ただ、週に一度の飲み会や船を挙げてのパーティーでは気後れを感じ、

自分の部屋に戻ってヨット雑誌を読んだり、

船の模型を作っていたくなった。

「皆さんの頑張りで今この船が航海できています今日はこの場の皆さんに感謝を込めて、乾杯!」

そんな乾杯音頭が、何だか空々しく聞こえた。

船底では、今も浸水を塞いでいる船員がいるのだ。

善良な彼も、つい冷笑を浮かべてしまった。

ある時、黒船が大きく進路を変えた。

目を見張るような素早い転換だった。

それから、船員達の集まり船長が怒鳴り込んできた。

「今すぐ黒船を追って進路を変えろ」

何でも、新しい大陸が見つかって、そこにたどり着ければ一攫千金だと言う。

「何が何でもすぐやれ。黒船に先を越されるぞ」

船員達は口々に、それは無理だと言った。

まず、ただでさえ浸水箇所が多くて、それを塞がないといけない。

進路を変えると負荷が掛かる部分が変わって、新しい浸水が無数に起こるだろう。

新しい部品必要だし、

それを作って水槽テストして長いチェックリスト確認して……とにかく無理がある。

「とにかくやれ。オーナー命令だ」

その日から、船上は戦場になった。

無理な進路転換とその影響で、新しい無数の浸水が生じた。

浸水が生じるとその原因を追究してチェックリストテストに反映する決まりになっていた。

まり浸水があるたびにチェックやテストが大変になった。

するとチェックやテストは消化不良になり、

浸水も見落としや誤魔化しが増え、

それがまたチェックやテストを難しくするという、悪循環となった。

船員の誰もが「これは無理だ」と感じていた。

船長はただ大きな声で怒鳴っていた。

ヨット作りの好きな船員も、一心不乱で働いていた。

しかし彼は、構造的にこの船が進路転換に耐えられないことを、

どこかで勘付いていた。

隣の船員が水葬に伏されるのを見送りながら、明日は我が身だと思った。

ある時、船室に大きな音が走った。

何かが裂ける音と、それに続く悲鳴のような音が船中に響いた。

船は船底から二つに裂けていた。

無理な進路転換のせいで、船体に大きな負荷が掛かったのだ。

もはや誰にも沈没を止められなかった。

船長やそのお気に入りの船員達だけは、

あらかじめ確保してあった専用の救命ボートでいち早く脱出していた。

しかし、一般船員向けの救命艇は不十分で、何よりそこに行き着く道も複雑で、よく把握できなかった。

多くの船員は、船と運命を共にした。

ヨット作りの好きな船員も例外ではなかった。

海の上に放り出された彼は、自分もこのまま死ぬのだと思った。

静かな海で、上司の怒号が聞こえないのが、ひどく幸福に思えた。

海のはるか向こうでは、黒船滑るように新大陸を目指して進んでいた。

僕はあの黒船を知っている、と彼は思った。

僕は知っている。あの船がどんな構造を持っていて、

どんな組織精神のもとに航海しているのか。

学生時代にも勉強したし、毎月のヨット雑誌でも扱っている。

僕はそれをずっと夢見ていたし、自分ヨット模型でも試してみたことがある。

僕はあの船のことをよく知っている。

ただ、この沈んだ船では、その知識が生かせなかった。

それは何故なんだろう。

黒船から目を離すと、周囲にはあらゆる汚物が浮かんで、

自分と同じように海を漂っているのが見えた。

彼は、パーティーの時と同じように冷笑を浮かべた。

理由はどうあれ、結局は、沈むべきものが沈むのだ。

それは真っ当なことなんだ。

あのままボロ船が航海を続けてしまった方が、

結局は、犠牲になる人も金も人生も多かったのだ、と。

きっと黒船新大陸に辿り着くだろう。

そこで目覚しい成果を挙げるだろう。

まれ変わったら、あんな船を作ったり乗る仕事に着きたい。

だが、この職業も同じ船乗りではなかったか

船が好きで、船に憧れて、この職業に就いたのでは?

それは間違った事なのか? 船が好きなのに?

疑問は尽きなかったが、冷たい海水ゆっくりと彼を殺していった。

最後の力を振り絞って水平線の黒船一瞥すると、

その優雅な姿をまぶたの裏に止めたまま、

船乗りの夢を見ながら、彼は死んでいった。

記事への反応 -
  • [居酒屋。サラリーマン風の男がグラスを片手にくだを巻いている。] もうさ、システムエンジニアなんて免許制にしちまえよ。 こんな複雑で難しい仕事、ロクにソフトウェア工学も修...

    • 残念なソフトウェア開発の現場は、沈みかけの巨大な船に乗った航海に似ている。 船底の穴からの浸水を必死でかき出しながら、どうにか進んで行く。そういう航海だ。 船のどこにど...

      • このまえ某動画サイトでウテナ見たせいか「あなたは世界を革命するしかないでしょう」って台詞思い出した。 あれ見てる時は「なぜ革命?」とか思ってたけど、突き詰めると鼻くその...

      • 長文の力作だけど、つまんない。 と書こうと思ったんだけど、ブコメはそこそこ好意的なのね。

      • 彼は、パーティーの時と同じように冷笑を浮かべた。 理由はどうあれ、結局は、沈むべきものが沈むのだ。 それは真っ当なことなんだ。 きっと「彼」は航海の最初の頃からいつか...

      • 彼は、パーティーの時と同じように冷笑を浮かべた。 理由はどうあれ、結局は、沈むべきものが沈むのだ。 それは真っ当なことなんだ。 きっと「彼」は航海の最初の頃からいつか...

      • 言いたいことはわかるし内容が違うとも言わんが、 航海要素がこじつけレベルなので読んでて違和感ありまくり。

      • http://anond.hatelabo.jp/20130310152356 沈没船エントリを書いた増田です。 およそブログ向きではない冗長で読みにくい文章だったけれど、 元増田に便乗したお陰か、思ったより多くの方に読ん...

    • 意見自体は同意なんだけど、SIerみたいなシステムが出来上がっちゃってんのがもはや駄目なんじゃねえの 人月仕事単位で金払ってたらそりゃこんな感じになるだろ プロダクト単位で金...

    • なんで今のシステムになってるかっていうと ”顧客が全て丸投げしたいから”そういう感じになってるんだよね~ 顧客側は勉強も何もしたくないの理解もしたくないのよ 金だけ出して...

    • 医者みたいに御上がITに関する料金を決めてくれたら、様々な問題が解決するのになーと思う。デスマとかなくなるだろうし。

    • 製造工程で、ソフトウェア工学に明るい優秀なプログラマからのフィードバックで、 今のまずい設計のまま製造を進めればカットオーヴァーまでの工数は100人月+保守費用10人月/年、 前...

    • どこの業界でもそんなもんだろ。 下請けに回すってのは、所得の再分配ならぬ仕事の再分配。 それ自体はいいんだけど、現場の人間に金が届く頃には抜かれた額だけっていう。 途中で...

    • http://anond.hatelabo.jp/20130309233920 俺、それなりの規模のSIer側の人間なので、下請けに出す側の人間だけど、下請けもたいがいクソだよ。 会社は、対象のプログラミング言語を「やったこと...

      • http://anond.hatelabo.jp/20130310143818 まあね。でもそれは結局「待遇に似合った質」でしかないよ。 下流にいてデキるプログラマは、勉強会等で人脈を作り、ソーシャルに行ってしまう。 結...

      • で、下流の人間は、(契約形態によるけど)残業代がかかるし期日がくると逃げる。で、バグだらけのクソコードを俺がサビ残でせっせと直しているわけさ。 結局、何億も赤字を垂れ流...

      • 下級のクソプログラマだって時間さえあれば多少メソッド化してみせるくらいの器量はあるのさ、時間さえあればね 下流の質を嘆く前に、まず上流で時間を食い過ぎてないか、下流が滞...

      • そういう悩みがあるのなら、最初から君がコード書けば済む話だよね。 なぜそれができないのかを考えると答えが見えてくると思うよ。

    • http://anond.hatelabo.jp/20130309233920 「下請けが客より技術的に上なのは当たり前」というが、それこそ思い込み。 俺は15年以上プログラマをやってきた。そんな俺がリーマン・ショックで職を...

      • SEって何だ?という話はおいておいて、元請けも下請けも昨今はひどい奴がたくさんいるでFA

      • なんだろう、下請けにいいものを作ることを求められても困るぞ?   できた後に、発注書に書いてないような高スペックを求められたり、常識ですよねとセキュリティーを求められたり...

        • どうなんだ? 俺が書いた例読んでもまだそんな事を言うって事は、あんたもエセ側じゃないかと思うんだが…… ゾンビ出さないとか大量のCLOSE_WAITとかは常識レベルじゃないのか? SEに...

          • 現に書かないから実装されないわけで、 エビデンスを求めるなら書くべきだと思うけど。

            • 言ってる事も酷いし、エビデンスの使い方も酷いし、まぁ一生底辺って感じ。 君と関わらないで仕事していければいいなぁと思った。

          • SEになってよく見るプログラムは、リソース開放なんて知った事か的な場当たり的プログラムなんだけど、こいつはその匂いを強く感じるなぁ。仕様書に「確保したリソースは必ず開放...

          • 「ドキュメントに書かれてない事はしない。書かれてある事だけをやる」を徹底するのもまた優秀なプログラマーだがな。

        • 場所にもよるけど、作れる人間がいるSIerだと本当に「もう、作るのはうちでやるから君等もういいよ」状態なわけで。

      • スキルが必要な作業はSI内部だけで回した方が楽だし、環境を整えておけば時間かけずに品質も確保できるはずだけどな。 最近経験したプロジェクトだと開発自体は社内の人間だけでや...

        • それはそれで、下請けの無駄遣いっぽい感じがするなぁ 一種誰かの理想なんだろうけどね とても健全でいい環境とは思えない いつまでも自分が苦労しそうな感じ

          • 下請けはスキル面で品質が担保できないと考えると当然の使い方だけどな どうすれば下請けのスキル面を低コストで簡単に見積もれるんだろうか

            • まぁ確かにね。 というか君の職場、下請け要らないよね デバッガーとかは下請けといえば下請けだけど、元々のこの話では単純なデバッガーは除くよね?

        • >>というか君の職場、下請け要らないよね<< http://anond.hatelabo.jp/20130310232504 を書いた人間だけど、テストする人を下請けに含めないのだったら文字通り「いない」状態と言えると...

    • なんかところどころ書き換えれば、まるで建設業界でもそのまま使えそうなお話ですね。 どこの業界も大変ですね。

    • この手の話は何十回も聞いたけど、一番罪深いのは中抜き元請けでもブラック下請けでもなく発注者だと思う。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん