始めに
エンジニアとしてキャリアを始めてから5年ほど経ちました。
主にデータを集め、整理するプログラムを書いています。
少し前になりますが、エンジニアを始めてから数年の頃、上司に「コードクオリティを高めた方が良い」とフィードバックを頂きました。恥ずかしながら、それまではコードクオリティをほとんど意識したことはなかった為、今から考えると当時書いてたコードは読みづらく、他のエンジニアの方はもちろん、自分ですらメンテナンスしづらいコードを書いていました。
そんな自分が「Clean Code: A Handbook of Agile Software Craftsmanship」の本に出会い、半年間かけて学び、実践することでコードクオリティが向上しただけでなく、エンジニアとして非常に多くの学びを得ることになりました。今回は少しでも参考になることがあればと当時の学んだことを書き残したいと思います。
本を読む前に自分が持っていた思い込み
- エンジニアの好みによって、きれいなコードは人それぞれ違う
- 自分が足そうとしているコードの周辺に少しおかしなコードがあっても、誰かがいつかリファクタリングをしてくれるので、少し変でもそのまま新しいコードを足せばいい
- エンジニアとして経験を積むにつれて、その内自然とコードクオリティは良くなっていく
実際に書いていて、恥ずかしいですが、これらの思い込みは次第に変わっていきました。
この本から学んだこと
- きれいなコードとは何か
- なぜきれいなコードを書くのが大切なのか
- きれいなコードを書く為の方法
大きくまとめるとこの3つを学びました。
それらを一つ一つ理解し、実際に現場で実践し、何度も何度も読み直して、自分のコードと照らし合わせていくと、徐々にきれいなコードが書けるようになってるという実感が持てました。
本を読んだ後の自分の考え方の変化
1. エンジニアの好みによって、きれいなコードは人それぞれ違う
- 少なくともどんなコードが読みづらいコードなのかが分かるようになりました。
- コードクオリティにもベストプラクティスが存在し、それを生かしてコードを書くと読みやすくなりました。
- 読みやすいコードを書くことはコードレビューや今後メンテナンスをしてくれるエンジニアの方々の為になることを学びました。実際に周りの方が読みやすいコードでプルリクエストを出すと変更を依頼されることが格段に減ると実感しました。
2. 誰かがいつかリファクタリングしてくれるので、少し変でもそのまま新しいコードを足せばいい
- 自分がしないように、他の方もリファクタリングしてくれないと気づきました笑
- 例え自分が書いたコードでなくても、おかしなコードを見た場合は少しでも読みやすいコードになるように小さなリファクタリングをしようと気持ちを入れ替えました。
- 読みやすい、メンテナンスしやすいコードにリファクタリングすると新しいコードを追加しやすくなりました。
- 気がついた時に少しづつでも改善するように心がけると、長期的に圧倒的に読みやすくメンテナンスしやすいコードになると実感しました。
3. エンジニアとして経験を積むにつれて、その内自然とコードクオリティは良くなっていく
- これはあながち間違ってはいないかもしれませんが、特別に経験のあるエンジニアでなくても、コードクオリティ向上の方法を学び、実践していくと、コードクオリティは向上することが分かりました。
- 今まで同じチームの良いエンジニアの方が他の箇所で書いたコードをコピペすることがあったのですが、それが無くなりました。仮に参考にすることがあっても、コピペをするのではなく、コードを良く読み理解し、その時の自分が出来る最善のコードを書くようにしました。
- その場その場で最善なコードを書く為に学ぶことによって、時間はかかりましたが少しづつ自分の書くコードに自信が付くようになり、コードを書くことがとても楽しくなりました。
- 学ぶことが習慣化され、自分に自信がついてくると、「もっとメンテナンスしやすいソフトウェアを作りたい!」とエンジニアとして開発に対する姿勢が大きく変わりました。
まとめ
- 「Clean Code: A Handbook of Agile Software Craftsmanship」の本からきれいなコードの書き方や必要性を学び、実践したことによってコードクオリティが格段に上りました。
- コードクオリティは向上すると、メンテナンス性の向上やコードレビューの容易化など開発のあらゆる所に生かすことが出来ると実感しました。
- 学ぶ習慣が身に付き、自分の書くコードに自信が付くと、より良いソフトウエアを開発したいという姿勢に変わりました。
最後に
上司にコードクオリティを向上するようフィードバックをもらえたこと、本当に感謝しています。当時、必死になって学んでも、中々実践出来なかったり、すぐには結果が伴わなかったりした時など辛い時もありましたが、自分自身、この本からエンジニアとして大切のことを沢山学ばさせていただきました。この記事が参考になり、少しでも多くの方に読んでいただけたら大変嬉しく思います。