この記事は 株式会社カオナビ Advent Calendar 2024の8日目の記事です。
はじめに
皆さんはボーイスカウト・ルールをご存じだろうか。
有名なものとしては、この本に原則として紹介されているものだ。
この記事では、日々のエンジニアとしての日常の中で積極的に取りんだ結果生まれた成果の話をしたいと思う。
ボーイスカウト・ルールとは
そもそもボーイスカウト・ルールとはなんだろうか?
それは実にシンプルである。
来た時よりも美しく
以上だ。
この心を持った状態で日々を過ごすことがとても大切なのである。
取り組みを始めた背景
まずなぜこの取り組みを始めたのか。
それは筆者自身が、レガシーコードと向き合う時の心構えができてなかったこと。それが課題だった。
今までの筆者のエンジニアキャリアは、0→1開発を中心とした新しく文化や秩序を生み出す瞬間に立ち会うことが多く、すでに形成された秩序や文化の中でよりよく改善を行う姿勢に疎い部分があった。(1→10, 10→100開発だ。)
その際にすでに存在する1,10のコードに対して、敬意を払いながら改善を進める方法をあまり理解していなかった。
理解していないことで起きたこと
既存のルールに則り、そのまま思考停止し、当時の記述がどれだけ辛いものだったとしても、受け入れてしまったり。
より良い形を目指すことをせず、修正後のインパクトを恐れ大胆にメスを入れることができなかったり。
どうしても胸を張って改善活動をしていると語ることのできないジレンマがそこにはあった。
そんな時に「ボーイスカウト・ルール」を思い出し、取り組んでみることにしたのだ。
きた時よりも美しく
結論から述べる。
この原則は、筆者に誇りを取り戻させた。
どのような観点でエンジニアとしての誇りをとりもどさせたのかというと、大きく3つの観点がある。
- 自分がコードを書く時
- 自分がレビューする時
- 自分が動作確認する時
自分がコードを書く時
手始めに自分が加筆修正をする際に、ただ愚直に既存のルールや文化に縛られることをやめることにした。
確かにリスペクトは必要だが、必要以上にそれを盾に恐れることをやめた。
実際に修正をする時には、他の場所でも取り入れられている美しいとされる形をできる限り取り入れることを意識することにした。
その結果、手を入れるたびに修正範囲は大きく広がってしまうものの、以降修正をする人にとって、柔軟性が前よりもある、前回よりは少しだけ綺麗なコードを残すことができるようになった。
ステップ数としては、本当に瑣末なものである。
しかし、この積み重ねが文化を作っていくものなのだと体感するに至った。
自分がレビューをする時
レビュー依頼がきた時、今までは修正された差分のみを対象にチェックすることが多かった。
しかし、「きた時よりも美しく」という視線を持ってレビューをすることで、今回の修正文ではない部分にもコメントをすることが増えた。
レビュイーからすると、「しらねぇよ!」と感じてしまうポイントかもしれないが、苦しさを内包しているコードを少しづつでも改善に導く役目がレビュアーにあるとしたら、きっと誇り高い行動であると信じている。
自分が動作確認する時
実際にコードをかいていくと、当然動作確認をするタイミングがやってくる。
その時に、共通部品だったり、デザインシステムだったりと自分が修正していないが、ただ利用しているだけの部品も登場するだろう。
自分が手を入れた部分では全くない部分にパフォーマンス課題があり、動かした時にもっさりとした動作だったり、辛さを感じた時、今までは報告を上げて撤退することが多かった。
でも、「きた時よりも美しく」という鉄の掟を心にすり込んだ今であれば、少し行動が変わる。
共通部品だったり、デザインシステムに対してもその思想を適応し、チェックしにいくことができるようになった。
その結果、共通部品・デザインシステムを利用している他のチームの誰かが、今までよりも美しいものを使うことができるようになった。
そして、今までに触れない文脈の活動を行うことになったことで、エンジニアとしての力量も向上したと考えている。
まとめ
ボーイスカウト・ルール「きた時よりも美しく」を心に宿した結果、
小さな改善の積み重ねが文化を作ることを体感することができた。
そして、より広い範囲のコードに関与することで、エンジニアとしての力量の向上が見られた。
自身と他のチームメンバーにとって、より良いコードベースを作ることができるようになった結果、より安全な改善活動に繋げることができるようになった。
この経験を通じて、より積極的に改善に取り組むことが増えた。そして、筆者はエンジニアとしての誇りを取り戻すことができた。
このシンプルなルール一つでエンジニアとしてのあり方を見直すことができるようになった。
ぜひ、読者の皆様も心にボーイスカウトルールを宿してみるといかがだろうか。