人は自分が簡単に出来ないことにほど非寛容的になる
https://gyazo.com/d038835f4a13ffd2aaf4bdfaf875ee33 https://twitter.com/hktechno/status/975735632558370816
LINE時代の同期の川田くんが良いことを言っていた
どういう文脈なのかは分からないが、とりあえず職人気質の人間は同業の他人の仕事について口を挟みたがる傾向があるように思う
XXはYYなのだからWWでなくZZすべきだのような理屈は、文面上は正しくエンジニアリングの現場でたくさん見かける言葉だ
が、しかしこういった他者の成果物に対する意見が常に正の影響を持つとは限らないように思う
Githubでの開発が当たり前になった今、github-flowなどのプルリクエスト/レビューという開発体制が普及して、製品の品質を上げるにはコードの品質を上げるべきだという意見が主流になった
「コードレビューをしっかりやろう」というのはプログラマの中での標語になり、今や逆に中身を失いかけているような気がする
前の会社にいた時は研修から業務のときも常にコードレビューを頑張って(英語で)書いていたし、またそうするべきだという風潮があった
だが、今僕はあまりコードレビューを礼賛する姿勢は持っていない
正確に言えば、『コードレビューをしっかりしていればそれでいい、それ以外にプログラマが製品の品質を有効な上げる方法はない』ということは思っていない
僕はコードの品質(=バグが出にくい、可読性、モジュール性、疎結合、etc...?)が製品の品質に直結するというロジックはそもそも成立していないと思っている
そもそもコードの品質(これは本来プログラマ以外誰も気にしないものだ)が重要とされる最大の理由は、開発の効率を上げ、より堅牢で拡張性が高く、新しい機能を追加してより早くユーザに使ってもらうためだ
つまり、コードの品質がいくら良くても的はずれで必要とされていない製品を作っているのならその努力は全くの無意味である
僕はコードレビューはチーム開発においてその開発プロセスを効率化して開発速度を落とさないために行われる、一種の必要悪だと思っている。つまり、本質的になくてすむのなら無いほうがいいものだ
僕自身もプログラミングのバイトを始めた頃は他の開発者の人とgithubもコードレビューもなしでsvnで開発していたため、バグりまくったコミットを混入させたりして困らせていた
僕はそもそも同じソースコードを複数人でいじるという体制そのものが軋轢を生みやすいと思っている
コードレビューをどれだけ頑張ったとしても、それはコードに対して防御的な効果しか産まない
コードレビューのおかげでユーザー数が増えたりはしないし、誰かから感謝されることもまたない
コードレビューはする側もされる側もできるだけ失うまいという姿勢で臨まざるをえない
そしてその過程で人間として大事なものが傷つけられることが多々ある
所詮仕事であるのに、そういう事態に陥るのはハッキリ言って不毛にすぎる
そして、破滅的にダメなプルリクエストに対してはコードレビューは完全に時間の無駄で、即却下する以外にない
そういう開発者を開発チームに入れないということが最大効率なのではあるが…
幸い僕はそういう事態に遭遇したことはないのだけど…
雰囲気採用ダメ絶対
閑話休題するが、要するにコードレビューは結局何を防御するのか?ということを常に考えなくてはならないと思う
以外に思われるかも知れないが、バグっているコードをはじき出すのはレビューの仕事ではないと思う
コードにバグがないことの安心はテストをセットで書くことでensureすべきだと思う
なので、レビューする側はバグを防御するという意識でレビューしても時間の無駄だと思う
そもそも、どんなに綺麗に書かれたコードでも他人の思考ロジックを通って出てきたものはその人以外には理解しにくいのである
それを頑張って理解しようとするのも正直本質的ではないし、そのコストは複数人で同じコードをメンテナンスするコストよりも高くつくのでは?と思ってしまう
そういう過程でコード規約やXX禁止などの邪悪なルールがたくさん出てきて、やがて全員が消耗して憎み合う未来が透けて見える
表題で言いたかったことは、次のとおりである:
レビューすべきコードを書くのは常に人間であり、レビューするのは常にそれを書いていない人間である
この前提がある以上、レビューする側がルールや原則のナタを振り回せば、レビュイーの尊厳はいとも簡単に傷つけられるし、そもそも原則やルールは守ることに意味があるわけではないということを忘れて正論のように人の書いたコードに文句をつけるのは良くないことのように思う
コードは常に生きていて、色々なやんごとなき事情からなんとか生かさなければいけないこともあるわけで、そのやんごとなき事情を知らない人が外野から的はずれな正論を投げつけるのは無意味だよなーと
まぁ、同じチームにいる人間がそんなんだったらつらいんじゃないかなマジで
僕はコードを書く時たーのしーを何よりも最優先するし、たーのしー持続を阻害する要素は粛々と退けていかなくてはいけないと思っている
プログラミングに関わる理論は、最終的にたーのしーに帰結しないのであれば僕は支持しない
楽しくプログラムを書けないのであれば僕はプログラムは書かない
自由であることがたーのしーの第一条件だと思う
製品の品質を上げるという名目でたーのしーを奪う輩とは戦っていく所存