git&Githubアンチパターン - diary.jgs.me

svnから解放されたのもつかの間、今度はひどい運用のgitGithubのプロジェクトにアサインされて、これまたひどい歪みのBackboneを矯正するバイトをしている。Backboneに対しては、どんな過酷なプロダクトでもとりあえず導入されていればまだ大丈夫だろう、という印象だったのだけれど、クソプログラマはそんな希望さえもあっさりと打ち砕いてくる。クソBackboneの話は長くなるので割愛するが、単純なページ構成のはずなのに、なぜかViewが複雑に絡み合い、liveとbindとonが混在しているし(これはjQueryアンチパターン)、そもそもそれはBackbone.events使えやという感じだし、なぜかBackbone.Routerが3000行超えてるし椎間板ヘルニアみたいな状態だけど、なんとか意図を読み取り、インデントを正し、git blameして呪詛の詞を並べている。
それとは関係なく、gitの運用が酷い。携帯デバイスからだとステージングでしかデバッグできないので、1000000歩譲って適当なbranchにデバッグコードをコミットするのはまだ許すけれど、それがmasterにガッツリmergeされてるので頭が痛くなる。しかも、デバッグコードでいないメソッドを呼んで落ちたりするのだ。クソめ。それもね、まあエラー吐いたりするから気付けるし、一括削除してやればいいのだけれどね。それよりも深刻だとおもうのは、とりあえずコメントアウト、みたいなコミット。終了対応をさ、コメントアウトでやるもんだから、ゴミが相当蓄積されるのですわ。オシャレに対応コミットをrevertするとか、せめてコードを削除してコミットしてくれ。それから、「//とりあえずコメントアウトすると動く」みたいなやつは心底うんざりする。それは、自分がそのコードが動作している所以を理解していないのを明示しているようなもんだし、それにしたって削除してくれないとあっという間にゴミだらけになる。
それから、せっかくGithubで運用しているのに、ただのリモートリポジトリとしか使ってなくてhubの意味がない。PRは基本的にノーレビューノーディスカッションでステージングにマージされるし、ステージングからマスターには「動いてる/動いてない」しかファクタがないのでエスカレーター方式でクソコードがmasterにマージされる。その「動いてる/動いてない」も自動化などされておらず、なんとなく影響ありそうな箇所を人力確認するというオールドスクールっぷりだから厳しい。
そして、リファクタすれどもすれどもクソコードが次々と継ぎ足されていくカタストロフィが起きる。無間地獄かよ。
―リファクタバイトの朝は早い。「そうですね、出社したらまず出勤してなかった日のコミットログを洗って、該当部分から掃除ですね」的なやつをやっている。
そんなこと、こんなところで書いてるヒマあったらプロジェクトで共有しなよ、って話なんだけどそうもいかないからグチグチ書いてる。どうも、僕の位置からみて上に4階層ぐらいあって、上から下へそれぞれ締め付けがあってこの地獄が形成されているんじゃないかとおもっている。ひとつ上の階層のひとは、成果が求められる第二階層に締め付けられているからオンタイムでいろんなことをやらなきゃいけないし、その第二階層も第三階層から締め付けがあって、その上の第四階層ぐらいまでここから見える。とにかく動いて、評価値が稼げればとりあえずOKという文化がかなり根を深く張っていてこれが諸悪の根源なんじゃないかとおもう。そのクソコミットが未来の自分か、もしくは僕みたいにしわ寄せを請け負う人間の首をじわじわと絞めていることはわかってるのかわかってないのか知らないけれど、一ヶ月後だって、下手したら一週間後だってわからないプロジェクトの、コードの品質を保とうという発想にはなりにくいんだろう。だからCIをしよう、という話にもならないし、テストを書くよりもプロダクションコードを書こうという話になるし、ドキュメントは書かなくてもいいという話になるのだろう。
脱バイトしたら、リポジトリをみてまともそうなところに行きたいと強くおもう。svnの深遠な世界にも触れられたし、gitとGithubのアンチパターンが発現しているところがいかにつらいかも身をもって学べたので経験としてはよいかもしれないけれど、どれも二度とゴメンだとおもっている。

November 2nd, 2013 1:40am

ヒュー!苦労してんな! #20190923