一人の天才プログラマーがほとんど一人でシステムを作ったがドキュメントはなくて誰もメンテできないときってどうするの?って話

捨てて作り直すしかないか
69
やまぶん @yamabunmath

富山在住 / 数学(特に代数学) / パズルみたいな問題を解くのが好き / 謎屋珈琲店名探偵No.19 / 謎検準1級 / ボードゲーム / ぷよぷよ / ゆるゆり / ポケモンGO / 料理 / 金沢大学→数学の先生→プログラマー / フォローはお気軽に

yamabunmath.main.jp
やまぶん @yamabunmath
1人の天才プログラマーがシステムをほとんど1人で作ったんだが、ドキュメントが残っておらず、他に誰もメンテできる人がいない。 みたいな状況って、みんなどう対応してるの?
やまぶん @yamabunmath
知らない間に新たな機能が追加されたりしてて、関連システムと辻褄が合わなくなったりするのも苦労してます。
やまぶん @yamabunmath
バズってるので宣伝 Webルート作成サービスGuRutto(グルっと)です。 内部では天才プログラマーが作った効率化アルゴリズムが使われています。 無料で登録できるのでぜひ使ってください。 gurutto.geoinfo.co.jp/aboutGuRutto.h…
リンク gurutto.geoinfo.co.jp 効率的なルート作成を簡単に | GuRutto(グルっと) 複数地点を一筆書き GuRutto(グルっと)は、地図上の複数地点をグルっと一筆書きするような効率的なルート作成を支援するサービスです。配送に必要な情報を入力するだけで、効率的なルートを自動作成します。
ルートoneむねち(銀モデ会) @HID95880986
@yamabunmath そういう状態に陥らせてる時点で天才じゃないんですわ。 入口と出口だけ抑えて回りを突貫工事パターンとか、入口と出口だけ抑えて中身を作り直す… にならざるを得ない… (当社はその応酬です😱)
雪山雪太郎 @yukiyama2003
@yamabunmath @yasana4 一人のポンコツプログラマーが作ったシステムがあって資料が残ってない なら割とよく見る
こうなりそう
mast@舞鶴へ行きたい @1retsam
@yamabunmath そんな状況は体験したことが無いが…こんな感じじゃないの? A「よく分からないが動いているからヨシ!」 B「分からない…俺たちは雰囲気でメンテナンスをしている。」 C「動け!このポンコツ!動けってんだよ!……この手に限る。」
やまぶん @yamabunmath
@1retsam 動いてる間は大丈夫なんですが、バグが見つかると大変です
mast@舞鶴へ行きたい @1retsam
@yamabunmath 冗談はさておき、正しい挙動を決めておいて、それに基づくテストを作っておいて、正しい状況を確認したうえで、少しずつ変えてみて、挙動を確認しながらメンテナンスするとかでしょうか。天才的なプログラマーなら変態な人でない限り、きれいにコーディングされているから、コードも読みやすいかと。
やまぶん @yamabunmath
@1retsam それが、結構読みづらいコードもあるんですよ。
mast@舞鶴へ行きたい @1retsam
@yamabunmath その時はあきらめて、頑張るしかあるまい。何、1年目のPythonの知識ゼロの私でも日本語が一切ないOpenStackのCinderのソースに食らいつけるんだ。どうにかなる。
やまぶん @yamabunmath
@1retsam mastさんもいろいろ苦労されてるんですね
mast@舞鶴へ行きたい @1retsam
@yamabunmath まあ、アレは1年目の時の上司も流石に無茶かと思ったらしいけどね。
伊藤 @pj_doaa
@yamabunmath 準天才が現れてギリギリまで保守を続けますが最終的には手に負えなくなりシステム更改します。
こうしたらいい
甕星@Perfect Brown Lunchbox @mikahosi
@yamabunmath 案1、試しに止めてみる。 悲鳴を上げた部署がシステムを利用してる。 誰も悲鳴を上げなければラッキー♪ 案2、入出力をだけでも仕様を起こす 同じ入力に対して同じ出力をするシステムを構築。平行運用期間をおいた後、旧システム撤去。
y2yuu🇯🇵🇺🇸@datascientist @y2yuuuki
@yamabunmath ⑴天才プログラマーが自分である ⑵天才プログラマーが自分ではない まず⑴であることを祈るw ⑵はとりあえず天才に凡人でもわかるよおうなシステムの再構築かドキュメントにおこすようお願いする もし天才がいない場合は何人かで作り直す
W.D. @WD4096
@yamabunmath 1 ソースを読んで項目転送表を作る 2 パフォーマンスの悪い箇所から順次リファクタリングしていく という対応が多いです。書き直したいけど書き直すコストが実益に対して高い場合とか、悔しいですが見送ることがあります。 ループのネストが1段目と2段目が逆であるべき箇所が2桁見つかった時とか。
残りを読む(9)

コメント

FFR31 @FFR31 6日前
BABEL BABEL BABEL BABEL BABEL BABEL BABEL BABEL BABEL BABEL BABEL BABEL BABEL BABEL BABEL BABEL
ゆーき @yuuki_s7 6日前
あなたが「天才」でない場合→会社「おまえが『天才』になるんやで」にしかならんのでそんな仕事やめてまえ/あなたが「天才」の場合→ドキュメントか後継者残せカス
野獣後輩 @yaju5123 6日前
yuuki_s7 助けて天才エンジニア! ↓ お前が天才になるんだよ! の流れやめろ
ゆゆ @yuyu_news 6日前
「天才」でも「プログラマー」でさえない「そこそこのExcelワーカー」が何とかして、その人がいなくなるとなんともならなくなる職場は割と多い…
ぽんぽん @apocalypse1706 5日前
結局は使わなくなるよな。
フロッグ @thefrog1192 5日前
それ考えるとガンダムSEEDでキラが作った連合製MSのOS、モルゲンレーテが手入れたのは正しかったんだな&作業大変だったろうなアレ……
鹿 @a_hind 5日前
それは一見天才に見えてその場でそいつしか出来なかったからやっただけでメンテ考えてないなら必ずブラックボックス化するしそうなったら誰も正当性を確認できないまま騙し騙し使ってく災厄の箱になるだけよ。 自社でどうにもできなくなったとき、縁もゆかりもない外部のシステム屋になんとかしろとか言われる糞案件化するんだよ。だからやめよう野良システム。
ヘイローキャット @Halo_nyanko 5日前
thefrog1192 つかザフトOSでもフラガさんはストライク操縦できたと思う・・・
SAKURA87@多摩丙丁督 @Sakura87_net 5日前
『ドキュメントを残さないプログラマが果たして天才と言えるのか』という話もあるみたいだけど。この手の残念な状況になってる場合って、当人がドキュメントまで完璧に整備してても、重要性が分からないものを分からないまま捨てちゃうアホな人が居たり不可抗力でドキュメントが破棄されたりしたりするんだよね……。
キケリキー @KIKERIKI17 5日前
スレチだが、ソースコードがあるってすげー羨ましい、2000年問題で、バイナリを逆アセンブルして、レジスタの使い方を妄想しながら解析したときは、「作り直そうよ」と心の底から思った・・・・
ヘボピー @hebop_ 5日前
HOS定期BABELBABELBABELBABELBABELBABEL……
mikumiku_aloha @mikumiku_aloha 5日前
ファイナルファンタジーⅢの飛空艇で飛ぶシーンが天才プログラマー作でリメイクに困ったとか。 https://matome.naver.jp/odai/2141074438422802001
フ一口 @fu_hitokuchi 5日前
天災プログラマーいるよね
マクガン @Makugan32 5日前
ドキュメント読んでもわかんないパターンとか…
とろろ @ein18790314 5日前
そもそもどんなに素晴らしいプログラムだとしても、継続的にメンテできて運用できないならクソプログラムだよ。もとより入れるべきではない。 それに依存して業務止まるリスクと天秤にかけたら導入自体あかんパターン。むしろその天才が害悪で、そいつに事業継続できるように引き継ぎできるようにやらせるのが上司の仕事。
あづさ/kyoka@眼鏡のエレクトーン弾き @azusa_Klavier 5日前
部署異動や引継ぎに慣れていない中小でありそうな話
キケリキー @KIKERIKI17 5日前
この話は、Excelマクロを絡めた老害叩きと地続きなんだよな・・・・税率変わったとき、勝手に作られた課内伝統のマクロを直してくれって何箇所か呼ばれたから・・・
\(TOT)/ @shibanasu14 5日前
ウォーターフォールに固執しなくても、リリース時点で設計書とソースは合ってないとだめよ すみませんたまに漏らしてます
nyos @nyos_x 5日前
天才プログラマーのコードや構造はわかりやすいので問題にはならんと思うよ
takatakattata @takatakattata1 5日前
メンテができないのは生モノみたいに時間と共に価値が落ちる存在でしかない
しょーた @shota243 5日前
天才なんてのはなかなかいるもんじゃなくて、問題は天才でもなんでもない奴が一人で作ったぐちゃぐちゃのコードが誰も怖くて触れずにずっと運用されているのにプラットフォームのバージョンアップとかは容赦なく迫ってくることだよな。
ワブガー @Wabger 5日前
ソースにコメントを書く。全メソッドの呼び出し時にログ出力させてコードを追えるようにする。ソースのドキュメント化ソフトを試す。 マルチスレッドでやたらとイベント飛ばして処理してたら、頑張って。 プラットフォームのバグを利用して不可能を可能にするタイプの実装をして、Updateでバグが修正された途端に動かなくなるタイプのヤツは無理。
優希(ゆき) @ulbvbdkp23409 5日前
そもそも天才にそんなのを作らせないというのを
t_yano @t_yano 5日前
プログラムってのは地道に読んでいけば案外読めるもんなので、まずは読んでみて何やってるかいちいち書き出す。それで動きが追跡できても、なんでそうやってるのか分からないとしたら、そのアルゴリズムを読んでる人は知らないけど、書いた人は知ってて、書いた人にとっては当たり前のアルゴリズムだった、みたいなケースはあると思うよ。
dolphinist🐬 @dolphinister 5日前
天才プログラマに「ドキュメントも残せよ天才なんだから」って言ってるの天才どころか才自体解って無さすぎる 凡人でさえなんでも平均なものを作り出せるわけがない事はよく知ってるだろうに
東風 @kuroshiroshiro2 5日前
市場競争。才能がいない中小は大手の規模のメリットに敗北。才能頼りだとシステム維持困難。
mikumiku_aloha @mikumiku_aloha 5日前
プログラムじゃなくてハードウェアだけれども「ウォズニアックは天才だ、でも配線図が1人で書けなかった」ということで図面におこしたビル・フェルナンデスさんの話。 https://iphone-mania.jp/news-57785/
龍ex @ryu_ex222 5日前
基本的には実装見て設計書起こすでしょ。そのままだとメンテナンスできない。 ただそれをするなら、更新のときにきちんと要件定義して設計書一から書いて凡人が作ったほうが良いことも
Pon @Pon__CG 5日前
ドキュメント作りの専門家を雇う
B.a.k.a.ぼうなす⋈ @bounasu 5日前
「天才」の定義が曖昧過ぎてみんな明後日の方向見て話してる印象が拭えないのだが。
saku @sakuuuuuuune 5日前
ボンクラが書くコードは本当に読めない あいつらは行き当たりばったりで書いてるから、思考もぐちゃぐちゃ、コードもめちゃくちゃなんだよな 一方で優れたプログラマーはコードもやっぱり優れてて、アルゴリズムやパターンの知識は必要だけど、意図が明確で大変に読みやすい 手がかりになるドキュメントぐらいは残すべきだけど、創造的なコーディングはコード先行でもいいと思うよ
ですの @_desuno_ 5日前
「天才のつくったシステム」の部分を「部署の名人がつくった秘伝のマクロつきExcelブック」にすると一気に身近な時限爆弾にそしてヘルプコールのかかったシステム部門の目が死ぬ
ボルフォッグ @kigantetu11 5日前
何十年も使われてる工業機械のソフトでその手のは山ほどあるらしい
ネギ@芋の呼吸 @negi__ 5日前
今どき自動単体テストも書かないような人を天才プログラマなどと呼んではいけない
mmmmmtttt37 @mmmmmtttt37 5日前
ドキュメントは後々のためにちゃんと作っておくべき。開発自体の納期が迫って余裕がない場合でも、開発完了後に作ればいい。そうでないと後で無駄に時間がかかることになる。
SAKURA87@多摩丙丁督 @Sakura87_net 5日前
negi__ この手の話題が出て来たときの天才プログラマーが活躍していた時代って最近でもまだパソコンの画面がブラウン管だった時代で、既に引退していたり何なら鬼籍入りしててもおかしくないような時代の話なので。今時のプログラマの感覚で考えてはいけません。
たかみん/りんと @r_takamine 5日前
普通の人が書いてやばい若手がリニューアルしたシステムの面倒見てますけど、ひたすらコードリーディングして動作と突き合わせて追っていくしかないですね。そして営業に「ここってこういう動作になってるんですけど大丈夫なんですか?」って聞くと「はははご冗談を」って言われる。
RENOWAN @renowan 5日前
天才と言っても、技術の再現性は人によって違うからなんとも言えない
はくまに・アーチボルト @haku_mania_P 5日前
近い案件が昔あったな…システムと、最新かどうか不明なソースだけが手元にあり、ドキュメントも残ってない。そんなシステムを回収しないといけなくて、納期も短く絶対伸ばせないって地獄案件。結局残ってるソースからまず仕様書を第一版として起こして、テストしながら現行システムとの差を調べて第二版として仕様書起こして、更にテストして動作が異なる部分は現場にどっちが便利かを聞いたりして第三版を起こし、そこからようやく改修開始…まじで地獄だった。
yuki🌾㊗️5さい🎉⚔ @yuki_obana 5日前
出力ベースに見て必要な入力はあくして書き直しておしまい(´・ω・`)みんなそんな困るほど複雑なコード書かないほうがいいよ
さらら @sarara0328 5日前
haku_mania_P 顧客側にはロードモジュールだけがあって、システム側にはバージョン違いのソースだけが複数ってのがありました。管理してた人は辞めた後。死ぬかと思いました。
そそ @quiseitaiho 5日前
下手にいじったらイデが暴走するんやな
ΤRΙΝΑRΥの行く末を真に憂う者 @ikenhuto 5日前
拡散性ミリオンアーサーのスマホ版のサービス終了の理由の一つがこれなんだよね……
YF @annex38 5日前
それいったら車も家電も同じことでソフト屋のオレ様感がくっさ
しゃもじ @fc0879 5日前
まとめタイトル読んで「.hack//だ……」と思ったけど現実はそうでも無かった。ちゃんと運用保守環境を別に運用してたハロルド・ヒューイックは人の心があったんだな……。
masano_yutaka @masano_yutaka 5日前
NTserver時代のファイルサーバを2008R2に移行したことあったけど、定義から全部やり直したな。 XPクライアント導入まではまだ何とかなったけど、7では無理だった。
hatano @_hatano_ 5日前
mikumiku_aloha 回路図を起こすのとそれを配線にするのでは全然別の作業なのでそれほど不思議な話じゃない。
かびぱん @kavipann 5日前
保守体制が考えられていないシステムは、誰が作ろうと全てゴミだよ。
Off Black @OffBlack1 5日前
「ドキュメントに起こしてない奴なんか天才じゃない」って、どやってるツイートみたけど、天才の中じゃ脳内で整合性取れてるからドキュメントなんか要らんのよ。ただ凡才じゃ理解できないからドキュメントに起こしてくれないとよくわかんないって右往左往してるだけ。そこが天才と凡才の違いです。まことにうらやましい。
ぽんぽん @apocalypse1706 5日前
OffBlack1 そうなんだよ、天才の仕事は評価すべきだと俺も思う。天才の仕事を凡才が引き継ぐのはムリってだけで。
nekodaisuke @nekodaisuke1 5日前
本当に頭のいいひとは難しいことを簡単に説明できるはずだとか言う謎定義と同じように、天才プログラマーはコードが読みやすいはずだみたいな謎前提があって草。
nekodaisuke @nekodaisuke1 5日前
OffBlack1 趣味でプログラマーやってろって話だよね。
Off Black @OffBlack1 5日前
apocalypse1706 そうそうほんとこれ。話し聞いてもなしてその発想でたかさっぱりわからんw「ほぇ~やっぱ頭いい人は見てる世界違うんやな」ってなる。でもドキュメント書かせるとへたくそだったりするんよなぁ。もう才能の方向性の違いやね。
Off Black @OffBlack1 5日前
nekodaisuke1 しかしこれやると日本企業じゃソフトウェア製品が作れなくなるのですよ。実際企業で採用される日本製のソフトウェアの絶望的に少ないよ。いやもう既に日本製製品なんかシャレにならんくらいほぼないです。いまや日本の開発はパッケージの拡張やどっかのシステムを組み込むだけの仕事しか成り立ってない。これなら天才的発想が要らない。
ヘリオドール @heliodor_ruby 5日前
mikumiku_aloha FF3の場合は、ハードウェアのバグ(っぽいもの?)利用ってことだから、ハード依存のため移植できないって話で、ソフトの中身が分からないとかメンテできないとは系統違うと思うけれど…。とりあえず開発者がガチ天才で後の人が困るってケースとしてはすごく納得する。
佐渡災炎 @sadscient 5日前
こんなもん1から全部作り直す以外の選択肢なんか無いよ。作ったのが天才かどうかなんてのは全く関係がない。
佐渡災炎 @sadscient 5日前
上司が許可しない→その上司が無能 作り直す金が無い→あきらめて捨てろ
はやし・しのぶ @Hirarinmac 5日前
hebop_ ちなみにコミック版だとHOSの暴走って話的に1mmたりと関係ないので、映画版では犯罪者だった帆場瑛一氏はASURA開発の古柳教室出身で、篠原重工では新型OS開発者の1人だけという(なので最後までご存命)。
KLEIN @klein_artifact 5日前
KIKERIKI17 ですよね。ソースコードがあるなんて、そこから仕様書起こすのが簡単(確認事項が列挙しやすい)ってことですし。
うてん。 @uten00 5日前
ブラックボックスのシステムなんて何かあったときにお手上げで責任取る人もわからなくなるので作った本人が生きてるなら金払ってでも仕様書書き起こしてもらうか、最初から作り直すべきだと思うねえ。
うてん。 @uten00 5日前
任期中に爆発するかわからない時限爆弾なら先送りするのも人情だけどセブンペイみたいな顧客に損害を与える大事故が起きてからじゃ遅いし責任もあいまいになるから何度でも起きうるしで地獄なんよな。かといってすぐ動いてくれる環境ならこんな悩みは出てこないからその環境でやれる対処なんて爆発した時の覚悟くらいしかないのかも…
Live long & prosper @titan3xFnfxte 5日前
ikenhuto 糞コードで保守できなかったという話は聞いたが、天才プログラマが作ったとは聞いてない。仮に言っててもポジショントークでしょ。
I am I...Me. @IamIMe2 5日前
ちょっと前に「論理的思考を捨てろ」みたいな主張のブログでバズった「天才プログラマー」の登大遊氏なんかはどうしてたんだろう。凡才にもメンテナンス可能につくっていたのかどうか。
たる @taruwo 5日前
天才は天才だけあって、これぐらい普通にわかるやろみたいな感じでコード書くからドキュメントを残さないんやで
I am I...Me. @IamIMe2 5日前
なお「天才の書いたコードなら読みやすいはずだ!」と言ってる人もいますが、天才プログラマーはメモリアドレス等を意識して高速化や軽量化のために高級言語でアセンブリ的な記述を平気でするので(特にひと昔前の速度・容量の制約が大きかった時代は)、必ずしも可読性は高くなかったりするぞ。
鼻毛山 @yamadataro25252 5日前
ニコニコ動画がまさにこれで天才プログラマーが辞めて機能アップが出来なくなってたんでは。その後、凡才が束になって1から作り直そうとした(その時間稼ぎのために超会議とかやって機能向上が無い事から目をそらした)けど結局どうやっても天才プログラマと同等の物を作れなくて現在に至る、みたいな話をどこかで読んだ。
玉川あるい @EvnY9Yc548xH51j 5日前
ナージャジベリがFF作った時は、他にコードの読める人がいなくてデバッグで苦労したって話を聞いたことある。FFのバグの多さはそこに起因するんだって。
reesia @reesia_T 5日前
だましだまし使ってたけどとうとうメンテできないレベルでスパゲティ化してそのままサービス停止なんて例は枚挙にいとまがないわけで。作ったきりで終わりだったり趣味でやってるならともかく、保守することを考えればちゃんと仕様書書いて、誰が見ても分かるようにコードを整理することが求められるんだよ。
すってんで @suttende 5日前
ソースあるなら読めばいいじゃん バイナリしかないことも稀によくある
でー@でとこーだ @detcoder 5日前
「プログラミングの天才」と「産業での優秀コーダー」は、基本的に違うものさしになるという話
愚民Artane.🦀@火事場泥棒に10兆円追い銭。 @Artanejp 5日前
ドキュメント書く暇があるならソースコード書け。と言う感じだった、古のハッカー文化…(´・ω・`)
はくまに・アーチボルト @haku_mania_P 5日前
sarara0328 それ系の案件は、だいたい当時の担当者はおらず、押し付けられた後任者が死にかける案件ですよねえ…
abigail9801(月光蝶G) @abigail9801 5日前
ソースツリー作成ツールとER図作成ツールを使ってデータとアルゴリズムの大掴みな関係を割り出し、モジュール毎に破壊的なやり方で解析を行う。 つまり、削って戻すやり方で機能を調べる。 これで7割位は仕組みがわかるので、後は時間を掛けて動かしながら調べる。 プログラムにマジックなどない。本当の意味で他人にわからないようなものは、実はロジックがおかしい恐れがあるので、潰してモジュールごと交換する。
abigail9801(月光蝶G) @abigail9801 5日前
大体、古いコードは車輪を何度も発明するようなやつが書くので、今じゃ同じ機能のものがその辺に転がってる事も多く、ビビるほどデキた昔のコードなどない。 いちいち恐れずにバラして調べ、同じようなフリーのコードでよく保守されているものがあれば、ガンガン載せ替えていけばいい。 本当の天才なんかそんなにいないし、コードというのは大方陳腐化していくもので、後生大事に取っておく理由がない。再利用性を下げるようなものはどんどんゴミにすべし。
おでんでん @ABORTED 5日前
KIKERIKI17 更にマクロが保護されててパスワードが分からなければ最強(´・ω・`)
さらら @sarara0328 4日前
haku_mania_P ですです。そして小さいとこほどそうかも。
rti @super_rti 3日前
とりあえず安全に変更できるテスト環境のサンドボックスを作る(重要)。その上で、入出力部分をメインに検索する。後は適当に壊しながら学ぶ。逆汗ソースじゃないんだからgrepできるでしょう。