無職が転生してプログラマになったんですよ。運よく雇ってくれる会社が見つかった。
それまで一人でしかプログラムを書いたことがなかったから、コードレビューをしてもらえるということにとても期待していたし、それで安心して仕事ができると思っていた。
しかし、コードレビューは俺が期待していたものとは違うらしいと気づくまで、ものすごく時間がかかった。そんな話。
無職転生してプログラマになって、もちろん新規開発にアサインされるわけがなく既存のコードの保守が仕事となった。そのコードはなかなか大規模なもので、その全てを把握するなんて到底無理なものだった。
うん、ここですでに結論が出てるんだけど、当時の俺はそれに気がつかなった。
んで、割れ窓を直していくのが仕事なんだけど、俺がデグレが起こるようなことをしようとしていたら先輩が気づいて止めてくれる。それがコードレビューをしてもらえるってことだと思っていたわけだ。
でも、全然そうじゃなかった。
先輩がしてくれるコードレビューは追加されるコードの品質を見るというもので、デグレの可能性に気づいてくれるなんてものじゃなかった。
そりゃそうだ。コードの全貌を把握している人間はいないのだから。
その辺りでようやくうっすら気づいてきた。コードレビューはデグレが起きないようにしてくれるものじゃないって。コードにより引き起こされるバグの責任はレビュアーじゃなくて俺にあるんだって。
レビュアーもこのコードの全貌を把握していない以上、当然の帰結だった。
それはとても怖いことだったけど、でももう乗ってしまった馬車だ。俺は俺なりに仕事をするしかなかった。
そうして仕事をしているうちに、そこそこデカい不具合を出した。
不具合の原因は、影響範囲がそこそこ広い割れ窓の修正手段をとってしまったことだった。そのそこそこ広い影響範囲の中に、作られたのが昔すぎてドキュメントも残っていないのに今だにユーザーが使っている機能があって、そこがデグレた。しかもそのデグレによって出た損失は、回復不可能なものだった。
もちろん、レビュアーがそれに気づく事はなかった。
デグレって何?
それまで動いていた機能が動かなくなること。
幼女戦記の主人公
無職転生がかるてっとに参加するってことかな
デーモン小倉の略
個人の努力であらゆる不具合を防止できると思うのがそもそもの誤解 銀行だって暗号化プログラムだってしょっちゅう不具合出してる 不具合はあるものとして受容するしかない
とすると、不具合を出してもメンタル折れない程度にはメンタル強いのがプログラマの適性なんかな?
重要な修正箇所からは全速力で逃げる能力
そのコードはなかなか大規模なもので、その全てを把握するなんて到底無理なものだった。 いやいや、理解しろや。保守担当が理解せんで誰が理解するねん。 レビュアーに責任なしっ...
確かに保守担当だった俺が把握してなかったらというのはあるが、俺よりもずっと長い間件のコードに関わってたはずのレビュアーも全貌を把握し切れていなかったと思われる時点でち...
IEEEがコードレビューに関する論文を出していて、それを読む限りではコードレビューはバグの検出にはそれほど効果がないとのことでした。 (品質の維持/向上やレビュー者間へのシス...
どの論文?
これやで https://www.microsoft.com/en-us/research/publication/code-reviews-do-not-find-bugs-how-the-current-code-review-best-practice-slows-us-down/
ありー
新人がデグレさせるのを止めるのもコードレビューの役目だぞ。 筆者のプロジェクトの詳しい状況は知らんが、恐らくドキュメントどころかテストコードすらまともに書かれていないん...
いや、単体テストはそこそこ書かれてたし、バグ修正の際はリグレッションテストもちゃんと書いてた。 だから全てのテストも通ったからヨシ!的な流れでテストに含まれていなかった...
本当の問題はコードレビューじゃないな。 diffを読んでも影響範囲が分からなくて、デグレがあるのかないのか判断できないようなコードベース そこに新人を無策で投入して、不安...
ただ、レビュアーがバグチェックをしてるとしても、実装者としての責任を持つ気持ちはあったほうがいいと思う。責任を自信と言い換えてもいいけど、自分が手を動かした仕事に責...
デグレって初めて聞いたわ 最近使われてる言葉?
アップグレードの逆でしょ