marcochiappetta.medium.com を読んでて grug brained developer というものを知って原典の grugbrain.dev を読んでみると僕自身が割と grug brained developer に共感してしまった。
grug brained developer がなんなのかを掻い摘んで要約すると以下のような考えを持ってる種族のこと。
- 複雑さを忌み嫌う
- 複雑さが導入されようものならまずは No を突き付ける
- Yes というのは明確な妥協ができる場合
- リファクタリングは小さく
- big brain developer*1を黙らせるにはプロトタイプを作らせておく
- ユニットテスト/E2Eテスト/統合テストはバランスをみて適宜適用する
- テストにおけるモックを嫌う
- アジャイル開発は銀の弾丸ではない
- 意図のわかるコードであること
- 安易な破壊的変更をしないこと(Chesterton's Fence)
- 使えるツールを使い倒す
- 型理論(システム)のメリットをコンパイルに見出す
- (有意義な)ログが好き
- big brain developer の言う "早すぎる最適化" ではなく、計測結果を根拠とした現実世界におけるパフォーマンス上の課題に対して対処すべき
- Visitor Pattern はカス
big brain developer を対比の概念として生み出して grug brained developer の存在をうまく補完しているように思う。
big brain developer って無駄に複雑なことをして他人が理解できないという表面的な部分で、経験や思慮が浅い人からは有能に見える可能性があるし、対外的なアピールがうまくてかっこいいエンジニア像みたいな感じにみられることもあるんだろうなという感想を持ったし、自分も気を付けなくてはいけないとも思う。
ところで Zen of Python っていいこと言ってんなーと思うけど python3.10 で導入された mtach 文は血迷ってんじゃないのかという憤りを感じている。あんな中途半端な機能誰が喜んでるんだろ。