会社の飲み会で酒に酔って、気付いたら個人的に社内で尊敬してるエンジニアの尊敬してる点を話していた。こんなことを挙げていた。
- コミットがきれい
- 全体的に丁寧
- 技術仕様やソースをちゃんと読む
話してみると、なんでこれらの点を尊敬しているのか考えたくなった。
コミットがきれい -> 作業がひとりのエンジニアの脳内で完結されると困るから
だれか一人で全てのプロダクトを担当するわけではないので、ひとのコードを読むこと・自分のコードが読まれることがある。きれいなコードとかクソコードとかいう言葉があるけど、実際にはただのきれいなコードとかクソコードというのは無くて、それが生まれた経緯がある。時間が無くて似たようなコードを抽象化できなかったのかもしれないし、レガシーな仕様に合わせるために命名を不自然にするしかなかった、とか。
そのコミットをするときに1つ1つ決断しなければいけなくて、逆に言うと決断の数だけコミットがあるはず。それを fix
とか update
とするのは、その決断をそのときの自分の頭に閉じ込めることになる。コミットがきれいだということは、決断を公にして他人や未来の自分を困惑させないための配慮をしているということだと思う。
全体的に丁寧 -> 正しい言葉は時間を節約する
尊敬しているエンジニアの仕事ぶりは、全体的に丁寧だと感じる。それはたぶん、正しい言葉を選んで使っているからだと思う。正しい言葉は、読む人(聞く人)の時間の節約につながる。正しい言葉はチームの生産性を上げる。
そして何より、正しい言葉を選んで曖昧さを消していくと、真っ当な技術力が身につくと思う。
技術仕様やソースをちゃんと読む -> 正しい知識を持っている
バイナリを書かずにプログラムを動かせるのは、誰かが書いた高度なソフトウェアを使っているからだ。そしてその内主要なソフトウェアのほとんどは仕様やソースが公開されている。http は仕様そのものだし、Linux のシステムコールはソースまで公開されている。技術仕様やソースをちゃんと読んでいる人は、検索エンジンからたどり着いたどこかの誰かが書いたstackoverflow回答から情報を得ている人よりかは、圧倒的に正しい知識を持っている。
現実
とはいえ、自分はどれくらいできているんだろう。現実は、たくさんクソコミットしてるし、stackoverflow鵜呑みにするし、雑なタイトルでissueを切って一緒に働いているエンジニアを困惑させたりしている。その方が楽だし、考える時間が必要ないからだ。
考える時間が必要ないからという理由で間違ったやり方を続けるのは良くない。
だからこそ、正しいやり方でできているエンジニアに尊敬のまなざしを向けずにはいられないんだと思う。