Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス
目次
はじめに
冒頭の書籍を読み、
様々な学びがあったので
連続Tweetでメモを取ったものをまとめておきます。
個人的には、ユニットテストに関する内容がかなり学びがあったので、
この部分は別の記事でまとめたいとおもいます。
Tweetメモ
Googleに入門することにした。(まだしばらく積読) Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス https://t.co/Rkg1thljO2 pic.twitter.com/vNZOpQ0s1F
— Atsushi Sakai (@Atsushi_twi) 2022年2月18日
他部署の人にコードレビューを依頼できるのサラッと書いているけど、普通の日本企業では結構難しそう。マネージャーは自部門の工数が取られるの嫌がりそうだし。それをボランティアで実施しているって、そのレビュワーのマネージャーはかなり視座が高くないと難しそうだな。
— Atsushi Sakai (@Atsushi_twi) 2022年3月6日
5章のチームリーダー入門と、6章のスケールするリーダーは、自分ぐらいのエンジニアには、涙なしには読めないな。心当たりがありすぎて辛い。。
— Atsushi Sakai (@Atsushi_twi) 2022年3月12日
6.3.3章のボールを落とすことを学べは、特に素晴らしい。印刷して、壁に貼りたいぐらいだ。
— Atsushi Sakai (@Atsushi_twi) 2022年3月12日
9章のコードレビューも結構面白い。全てのディレクトリにOWNERSファイルなるものを置いて、コードオーナーを管理しているのか。これを見るとかなり複雑なDSLっぽいな。あと、コードレビューの目的として、他人に理解できるかを含んでいるのは重要。https://t.co/dxi5MvP00J
— Atsushi Sakai (@Atsushi_twi) 2022年3月14日
11章テスト概観。20億行以上あるモノレポに毎週2500万行近くの変更を実施しているにもかかわらず、ほとんどbranchを作らさずに直接headにマージされてるってすごいなぁ。。やっぱり別ブランチで育てるってダメなんだよな、やっぱり出来るだけたくさんのところでコードが動かさないといけない。
— Atsushi Sakai (@Atsushi_twi) 2022年3月21日
12章ユニットテストも素晴らしいな。これまで聞いたことがなかった、変更に強いユニットテストの書き方が参考になる。ユニットテストは公開API経由で作る、メソッド毎ではなくGiven/When/Thenベースで挙動をテストする、テストユーティリティよりも愚直に書く、ビルダーパターンでオブジェクトを作る。
— Atsushi Sakai (@Atsushi_twi) 2022年3月23日
16章のバージョンコントロールとブランチ管理もいい。モノレポであることが重要ではなくて、依存関係が一意に決まることが重要とか。あとトランクベースのブランチ戦略もそれそれ感がすごい。そっちのほうが研究の結果、ソフトの品質が高いってわかったとか知れてよかった。
— Atsushi Sakai (@Atsushi_twi) 2022年3月30日
いい言葉: Software Engineering はPrograming の時間積分である
— Atsushi Sakai (@Atsushi_twi) 2022年3月31日
Googleのビルドシステムのbazel は面白そうだな。関数型プログラミングみたいにビルドを指定することで、差分ビルドと並列ビルドを効率的に実現するというのはわかりやすい。#swebookjp https://t.co/EL9FfmP7As
— Atsushi Sakai (@Atsushi_twi) 2022年4月2日
20章静的解析も面白い。静的解析は基本的にコードの差分に注力する。単一のIDE利用を設定してないので、静的解析はコードレビュー中に行う。静的解析の結果にバグ登録機能をつけた。コンパイラのワーニングは無視されるので、エラーにするか、表示させないようにする。
— Atsushi Sakai (@Atsushi_twi) 2022年4月3日
23章継続的インテグレーション 結構意外だった。Googleレベルだと、PRのマージ前にはユニットテストだけでなく、かなりの自動テストを通すのかなと思ってたけど、マージした後にmainでしか重いテストは回さないのか。そしてmainが壊れたら、すぐにそのコミットをrevertすると。
— Atsushi Sakai (@Atsushi_twi) 2022年4月6日
読み終わった。流石の内容の厚みだった。目から鱗な部分もあれば、結構googleも同じ悩みを持っているんだなって思った所も、これはgoogleしか悩まないだろうなって所もあって、面白かった。もう一周興味があるところを読み直して、記事にまとめよう。
— Atsushi Sakai (@Atsushi_twi) 2022年4月8日
それ以外のメモ
失敗を許容し、失敗の学びを共有する事が重要
リーダーになっても手を動かし続けることで、チームの尊敬を得られる
その仕事を残りの人生でずっとやり続けたくないのであれば、自分の代わりを育てる
組織が線形に増えると、コミュニケーションコストは二乗で増える
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。