ja en ja es es en cv en en en en en ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en fy zh ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en
っていうのを続けたんだが、どうも最近はそこで終わらせて実装はいるのまじ危険だと思う機会が多い。口頭で「こう言った」というのは大体あとで「そうは言ってない」になることが大半だってことに気づいた。し、それの指摘はだいたいプルリクエスト出してからくることが多い。そしてそれは大なり小なり、ある程度やばいものが飛んでくる。
最近は小さな機能だとしても実装前設計書を必ず書いて、責任者なりのエンジニアに確認と合意をとるようにしている。シニアエンジニアはやっぱりいて、彼らと合意をとらないとPRで「そもそもの設計が間違っている」という指摘を受けるからだ。それ一番辛い。設計が間違ってればまず実装の差し戻しが発生する。設計が間違ってなければコードレビューで「ここ書き方こうしてほしいで」ってので済む。
最後にIMOについて触れたい。
とはいっても時間や予算は有限なわけで、その中でやりくりはしなければならない。僕はそう言うのは本気でどうしようもないとは思ってる。だから「時間的な余裕がなくて、最速がこれだったからこうした」っていうのは大体受け入れるようにしてる。0-1のフェーズならリリース後直せばいいし、運用中なら改善issueだせばいいと思ってる。
一方で視点の食い違いは誰にでもあるもので「要件を聞いた当時ではこれが必要でこれがベストだと判断した」ものが他人から見たらただのクソコードクソシステムだとしか思えない場合はある。それももう仕方ないと思う。見ている視点の違うはどうしても発生する。
ただ、存在するものを一方的に否定するのは、やめた方がいいと思ってる。
作った本人が「これはその時時間や予算的にやばくてそうしなければならなかった。そしていつか直さないとと思う。だから改善策を提案してほしい」と思ってるなら、ちゃんと「自分はこう思う。だからこうしてみたらどうか」というのを丁寧に説明する必要はあっていいんじゃないかと感じる。僕はエラーが吐いている箇所は「こういうエラー吐いているように見えるが、ここは仕様なのか修正していいのか」というところからまず聞くようにしている。「どうしようもなくてそうした。改善できるならしたい」という返事がくれば「わかった」と応えて改善issueと、できるなら改善PRだすところまでやる。それならまだいいかもしれない。が、システムを根底から覆す設計をするなら、話は別だ。
ある程度の検討と話をチームと、一番は設計した本人と話をしたほうがいいと思う。それも一定の時間をかけて。それは本当にシステムを覆すほどの設計をする必要があるのか。今修正しとかないとあとでつらいことになるのか。とかいくらでもあると思う。設計した本人のスキルセットにもよるとは思うけど、なぜその場所にそのエンジニアがいて、その設計を行ったかなどは話がいくらでもあるはずだと思う。間違ったり要件をうまく飲み込めなかったり、話が通じない人間ならまず最初を任されることはないと個人的には思う。それで時間と予算が問題なく、かつチームで合意形成が取れたら覆す系設計に入っていいんじゃないかな。
いろんな経験をしてきて、僕は「提案->メンバーと口頭で合意->小さな設計書を書く->設計書レビュー->実装->PR->デプロイ」がチーム開発の中では最速だという結論にいたってる。これでスプリントからもれてもしかたないとも思ってる。そうしないとPRでなんども差し戻されるたびに実装が「システムやビジネスのため」ではなくて「ポイント稼ぐためにさっさとPRを通してデプロイ するため」に変わってしまいそうな気がするからだ。(実際過去にそういう経験はある)結果バグを生んで障害発生するほうが正直時間やお金のロスになる。できるひとは提案してissueを作ったらさっさと実装してPRまで持ってくのかもしれない。そしてそれはマージされてすぐに出ていくという自信があるんだろう。僕は正直、その自信はない。自分が周りの人間以上に解釈違いを起こす人間だということをずっと生きてきて知っているから。
技術的負債やクソコード、クソシステムと呼ばれるものはあるし、視点の違いではなんでもない、普通のあるべき姿だった、ということもある。そういうのを僕はいっぱいみてきた。これからもいっぱいみるだろう。そこに対しては否定ではなくIMOから入っていくのを心がけたい。
現状の事情と要件と設計と時間の問題で本当にどうしようもなくなるべくして発生したものはどこにだってあるものだとは思う。