お前のこと誰が好きなん?選手権 Google流に反するイタいエンジニア
今回はですね、なんとあの天下のGoogleさんが出している
『Googleのソフトウェアエンジニアリング』 から、開発のコツを学んでいこうという企画でございます。
ただ普通に解説してもおもんないんでね、お馴染みの企画
「お前のこと誰が好きなん?選手権」 の形式で、
Google流に反するイタいエンジニアを紹介しながら、その解決策をツッコんでいきたいと思います!
それでは早速いきましょう。最初のエントリーはこちら。
① 「天才」気取ってコード隠すやつ
投稿者:孤高のプログラマー
「自分のコードは完璧になるまで誰にも見せたくないんです。
未完成のものを見られて批判されたくないし、完成した時に『すげえ!』って言われて、
一目置かれる天才になりたいんで、完成するまで隠れて開発してます。」
お前のこと誰が好きなん!?
なぁ!お前のこと誰が好きやねん!
「天才やと思われたい」?
お前そんなスティーブ・ジョブズとかリーナス・トーバルズみたいな
「孤独な天才」ちゃうやろ!
Googleは言うてますよ。「天才神話」を捨てろと。
お前が隠れてコソコソやってる間に、もし方向性が間違ってたらどうすんねん。
「早期に失敗して、高速に失敗せよ」。
早く見せてフィードバックもらわんと、
間違った方向に全力疾走することになるで!
あと 「バス係数」 って知ってるか?
お前がもし明日バスに轢かれたら、その隠したプロジェクトどうなんねんって話や。
お前しか知らんコードなんか、チームにとってはリスクでしかないねん!
隠れんと、さっさとチームに見せろ!
チームが全てや!
② 「バグ」に依存して文句言うやつ
投稿者:現状維持バイアス
「ライブラリーのアップデートがあったんですけど、そのせいで俺のシステムが動かんようなったんです。
どうやらバグが修正されたらしいんですけど、俺はそのバグった挙動を利用してコード書いてたのに!
勝手に直すなよ!」
お前のこと誰が好きなん!?
いや、お前のこと誰が好きやねん!
バグ利用して逆ギレて!
それ、Googleでは
「Hyrum(ハイラム)の法則」 って言うねん。
APIに十分なユーザーがおったら、
契約で何を約束してようが関係ない。
システムのあらゆる観察可能な挙動(バグ含む)に依存するユーザーが出てくる
例えば、ハッシュテーブルの順番とかな。
たまたまその順序で出てくるからって、それに依存したコード書くなよ!
Googleのソフトウェアエンジニアリングは
「時間で積分したプログラミング」 やねん。
時間が経てば変更は避けられへん。
「変化しない」ことに賭けるのは、ハイリスクなギャンブルやで!
③ テスト書いてへんのに文句言うやつ
投稿者:ノーテスト・ノーライフ
「インフラチームが大規模な変更した時に、俺の機能が壊れたんですよ。
CI(継続的インテグレーション)? テスト?
いや、そんなん書いてないですけど、壊した方が悪いんで、ちゃんと謝ってほしいですね。」
お前のこと誰が好きなん!?
お前のこと誰が好きやねん!被害者ぶるな!
Googleにはな、
「Beyoncé(ビヨンセ)ルール」 っていう最強のルールがあんねん。
If you liked it, then you should have put a test on it
(そんなに好きなら、テスト付けときゃよかったのに)
CIでテストされてへん機能が壊れても、
それは壊した方の責任ちゃうねん。
テスト書いてへんお前が悪いねん!
インフラチームは、
CIのテストが通ってる限りは安全やと判断して変更を加える。
文句言う暇あったらテスト書け!
④ 信頼不能なテスト(Flaky Test)放置するやつ
投稿者:運ゲーマー
「テストは書いてるんですけど、たまに失敗するんですよね。
でも再実行したら通るんで、まあええかと思って放置してます。
100回に1回くらいしか失敗しないですし。」
お前のこと誰が好きなん!?
それ
「信頼不能テスト(Flaky Test)」
って言うねん!
お前な、Google規模で毎日何億回もテストしてたら、
その「たまに」が毎日何千回も失敗すんねん!
そんなんエンジニアが
「あ、これまたあのFlakyなやつや、無視しよ」
ってなりだしたら、テストの意味ないやろ!
テストへの信頼が失われるのが一番アカンねん。
Googleでは、
信頼不能なテストは直すか、
直らへんのやったら無視されるだけやから
テストスイートから外さなあかんねん。
結論
はい、というわけでね。
Googleのソフトウェアエンジニアリング、要するに
「時間」と「変化」 にどう立ち向かうかって話でした。
- 自分は天才じゃないと認める(謙虚)
- チームメイトを信頼する
- 変化に対応できるようにテストを書いて自動化する
ま、これ全部やったからってGoogleに入れるわけちゃうけどな!
お前のこと誰が好きなん!?
以上です!
Discussion