残念なソフトウェア開発の現場は、沈みかけの巨大な船に乗った航海に似ている。
船底の穴からの浸水を必死でかき出しながら、どうにか進んで行く。そういう航海だ。
ある穴を塞ごうと船底に板を打ち付けたら、
船の構造はあまりに複雑で、膨大な部品の間にどんな依存関係や相互作用があるのか、
誰も完全には把握していない。
それは、はるか昔に組み立てられた太古の船で、
構造把握の手掛かりは、代々伝わる不十分で不正確な古文書だけなのだ。
新任の船員は、出た水に対してとにかく手当たり次第に対処した。
どんな物でも使い、徹夜で穴を塞いで回った。
ひたすら大きな声で号令を出し、
いかに早く穴を塞ぐかが、船員の間で競われた。
何人もの船員が過労と心労で倒れ、
船員たちが経験を積むうちに、浸水するのは船室の新しく手を加えた部分だと分かり始めた。
そこで彼らは、改装作業を終えた時のチェックリストを用意する事にした。
穴を空けたままにしてしまう事は無くなるだろう。
それが船底だったら・機関室だったら・客室だったら・甲板だったら・竜骨沿いだったら・板だったら・柱だったら・ドアだったら・蝶番だったら・ドアノブだったら……。
(不思議な事だが、ドアノブを直しても浸水する事がこの船にはあった。事例が少なくて原因は良く分かっていない)
チェックリストの長さは、すぐに人が把握できる数を超えた。
複雑な船に対するチェックリストはそれ自体複雑になってしまったのだ。
船員達はやがて、修正する部品を仮組みして水槽でテストするようになった。
事前に水漏れが無いかをテストしてから実際に船に取り付ければ、
それでも、浸水はなかなか減らなかった。
水圧や比重やその他もろもろの条件が大きく違った。
また、既存の部品と新しい部品とを取り付ける境界部分そのものについては、
やはり実際に取り付けてみないと分からない部分も多かった。
それに対する事前のテストも、天候や波の高さ・潮の流れなど、
誰にも分からなかった。
ある時、水平線上に別の真新しい船が見えた。
それは黒い小ぶりの船で、いかにも俊敏で頑丈そうな船だった。
その黒船は悠々と航海を続けているように見えた。
しかし、他の船員の一団は、
あの船は小さくて目新しいから、華やかで順調そうに見えるだけで、
俺たちのような信頼と伝統のある大型船舶とは違う、ヨット遊びみたいなものだ。
と、その船の小ささを馬鹿にしてみせた。
ある船員はその船の特徴的なマストの形状を真似て、
しかし、船は俊敏にも堅牢にもならず、新たな浸水しか生まなかった。
それで結局、この船には今のやり方しか無いのだ、
その船員は、船に乗る前の学生時代から、小さなヨット作りに熱中していた。
最新の材料と設計技法を駆使した小さなヨットを自分で組み立て、海に浮かべて楽しんでいた。
自分のヨットが有名なヨット雑誌に掲載されたこともあり、それが今でも誇りだった。
そんな彼が、今では大型船舶の穴埋めに奔走していた。
ああなっていれば……こうなっていれば……そんな仮定が頭の中を何度もよぎった。
それでも彼は忠実に、言われるがまま、浸水を塞いで回った。
ある時彼は、比較的大きな船室の改修を任された。
久しぶりの新しい仕事に彼は熱中し、
「このアタッチメントはなんだ?」
それに、今後また改修があった場合、
「こんなアタッチメントなんて見たこと無い。
他と同じように作り直せ。
それにこの部分の文言はなんだ?」
「そんなの他の誰が読んでも分からないだろう。
これを見た客にも、何で今までと違うのか説明できない。
何でちゃんと今までと同じように作らないんだ?」
謙虚な彼は、ただうな垂れて、言われるがまま指示に従った。
彼は善良な人間だったので、自分のこだわりのために無闇に人と衝突するよりも、
彼はそうやって、日々の仕事とどうにか折り合いを付けて、
船員稼業を続けていった。
大きな衝突も無く、仕事も手早かったため、
他の船員達からは頼りにされた。
ただ、週に一度の飲み会や船を挙げてのパーティーでは気後れを感じ、
船の模型を作っていたくなった。
「皆さんの頑張りで今この船が航海できています。今日はこの場の皆さんに感謝を込めて、乾杯!」
船底では、今も浸水を塞いでいる船員がいるのだ。
善良な彼も、つい冷笑を浮かべてしまった。
ある時、黒船が大きく進路を変えた。
目を見張るような素早い転換だった。
「今すぐ黒船を追って進路を変えろ」
何でも、新しい大陸が見つかって、そこにたどり着ければ一攫千金だと言う。
「何が何でもすぐやれ。黒船に先を越されるぞ」
船員達は口々に、それは無理だと言った。
まず、ただでさえ浸水箇所が多くて、それを塞がないといけない。
進路を変えると負荷が掛かる部分が変わって、新しい浸水が無数に起こるだろう。
それを作って水槽でテストして長いチェックリストで確認して……とにかく無理がある。
無理な進路転換とその影響で、新しい無数の浸水が生じた。
浸水が生じるとその原因を追究してチェックリストやテストに反映する決まりになっていた。
するとチェックやテストは消化不良になり、
浸水も見落としや誤魔化しが増え、
それがまたチェックやテストを難しくするという、悪循環となった。
船員の誰もが「これは無理だ」と感じていた。
船長はただ大きな声で怒鳴っていた。
どこかで勘付いていた。
隣の船員が水葬に伏されるのを見送りながら、明日は我が身だと思った。
ある時、船室に大きな音が走った。
何かが裂ける音と、それに続く悲鳴のような音が船中に響いた。
船は船底から二つに裂けていた。
無理な進路転換のせいで、船体に大きな負荷が掛かったのだ。
もはや誰にも沈没を止められなかった。
あらかじめ確保してあった専用の救命ボートでいち早く脱出していた。
しかし、一般船員向けの救命艇は不十分で、何よりそこに行き着く道も複雑で、よく把握できなかった。
多くの船員は、船と運命を共にした。
静かな海で、上司の怒号が聞こえないのが、ひどく幸福に思えた。
海のはるか向こうでは、黒船が滑るように新大陸を目指して進んでいた。
僕はあの黒船を知っている、と彼は思った。
僕は知っている。あの船がどんな構造を持っていて、
僕はそれをずっと夢見ていたし、自分のヨット模型でも試してみたことがある。
僕はあの船のことをよく知っている。
ただ、この沈んだ船では、その知識が生かせなかった。
それは何故なんだろう。
自分と同じように海を漂っているのが見えた。
彼は、パーティーの時と同じように冷笑を浮かべた。
それは真っ当なことなんだ。
あのままボロ船が航海を続けてしまった方が、
そこで目覚しい成果を挙げるだろう。
船が好きで、船に憧れて、この職業に就いたのでは?
それは間違った事なのか? 船が好きなのに?
疑問は尽きなかったが、冷たい海水がゆっくりと彼を殺していった。
その優雅な姿をまぶたの裏に止めたまま、
船乗りの夢を見ながら、彼は死んでいった。
[居酒屋。サラリーマン風の男がグラスを片手にくだを巻いている。] もうさ、システムエンジニアなんて免許制にしちまえよ。 こんな複雑で難しい仕事、ロクにソフトウェア工学も修...
残念なソフトウェア開発の現場は、沈みかけの巨大な船に乗った航海に似ている。 船底の穴からの浸水を必死でかき出しながら、どうにか進んで行く。そういう航海だ。 船のどこにど...
このまえ某動画サイトでウテナ見たせいか「あなたは世界を革命するしかないでしょう」って台詞思い出した。 あれ見てる時は「なぜ革命?」とか思ってたけど、突き詰めると鼻くその...
長文の力作だけど、つまんない。 と書こうと思ったんだけど、ブコメはそこそこ好意的なのね。
彼は、パーティーの時と同じように冷笑を浮かべた。 理由はどうあれ、結局は、沈むべきものが沈むのだ。 それは真っ当なことなんだ。 きっと「彼」は航海の最初の頃からいつか...
彼は、パーティーの時と同じように冷笑を浮かべた。 理由はどうあれ、結局は、沈むべきものが沈むのだ。 それは真っ当なことなんだ。 きっと「彼」は航海の最初の頃からいつか...
言いたいことはわかるし内容が違うとも言わんが、 航海要素がこじつけレベルなので読んでて違和感ありまくり。
http://anond.hatelabo.jp/20130310152356 沈没船エントリを書いた増田です。 およそブログ向きではない冗長で読みにくい文章だったけれど、 元増田に便乗したお陰か、思ったより多くの方に読ん...
意見自体は同意なんだけど、SIerみたいなシステムが出来上がっちゃってんのがもはや駄目なんじゃねえの 人月仕事単位で金払ってたらそりゃこんな感じになるだろ プロダクト単位で金...
なんで今のシステムになってるかっていうと ”顧客が全て丸投げしたいから”そういう感じになってるんだよね~ 顧客側は勉強も何もしたくないの理解もしたくないのよ 金だけ出して...
医者みたいに御上がITに関する料金を決めてくれたら、様々な問題が解決するのになーと思う。デスマとかなくなるだろうし。
医者の世界はデスマが常態化しているのに何を寝言を言ってるんだ
そのためには、お上が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 を書いた人間だけど、テストする人を下請けに含めないのだったら文字通り「いない」状態と言えると...
なんかところどころ書き換えれば、まるで建設業界でもそのまま使えそうなお話ですね。 どこの業界も大変ですね。
この手の話は何十回も聞いたけど、一番罪深いのは中抜き元請けでもブラック下請けでもなく発注者だと思う。