こんにちは、やまです。
「綺麗なコードの書き方がわからない…」「自分エンジニアとして実力ないなぁ…センスないのかな…」
このような悩みを持つ駆け出しエンジニアの方、多くいらっしゃると思います。
でも大丈夫です。
コードは適切に学び、努力することで必ず綺麗に書けるようになります。
私も今でこそシニアエンジニアというポジションでお話をいただく機会が増えましたが、
エンジニアになりたての頃は上手くコードが書けず、レビューでよく指摘を受けていました…
数行で実現できることを周りくどく書く、特に意図もなくグローバル変数を使おうとする等
リリースし難いコードを量産していました…
ただ、今回お話しする努力を続けることで、
そんな私でも設計の参考にさせてほしいと言っていただけるようになるまでになりました。
私が駆け出しの頃から続けていたのは次の2つです。
・他者のコードから学ぶ方法と自分で設計を学ぶ方法のコンボで習得する
・量をこなす
コードを書く技術は他者から学ぶ方法と自分で学ぶ方法に分かれます。
【他者から学ぶ方法】
こちらは現在の現場のコードで綺麗だと感じるコードを自分の技にすることです。
すでに現場に参画されている方であれば、ベテランエンジニアの書くコードを見て、良い書き方を学ぶことができます。
ソースコードのリポジトリ上で(Githubがほとんどだと思います)、ベテランエンジニアの書いたコードを探せば見つけられます。
見る上では、なぜそのコードが綺麗なのかを分析することが大切ですね。
if文やfor文が少なくできている、再利用しやすい等見えてくるものがあると思います。
また、コードレビューを受けることも良いですね。
特に駆け出しのタイミングでは、ベテランエンジニアからレビューを受けることをおすすめします。
指摘を受けるのが怖いという気持ちもあると思いますが(私もボコボコにしていただきました…)、
自分だけでは気づけない学びも多いですし、短期間で成長できるので、
ぜひ勇気を出して臨みましょう!
【自分で設計を学ぶ方法】
プライベートでは設計の学習を行います。
QiitaやZennなどの技術記事から学んでも良いですが、書籍でのインプットがおすすめです。
なぜかというと、書籍の方が具体例・サンプルコードをもとに「なぜその設計が大切なのか」「どんな時に生かすのか」を体系的に学ぶことができるからです。
様々な設計手法を比較しながら学ぶことができることも嬉しいメリットの一つですね。
私も駆け出しの頃から時間が空いたら設計関連の書籍を繰り返し読んでいました。
良書だと思った書籍はまた別途記事にする予定ですが、大きく前進できたなと感じる書籍を挙げると
次の3冊は駆け出し〜経験2年の時期にとても有益な学びが多かったです。
- リーダブルコード
- オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
- 現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法
- リファクタリング(第2版): 既存のコードを安全に改善する
書籍で学んだ設計を使い
現場のコードで改善できそうなところを探してリファクタリングしてみる、
新規の機能開発で生かせそうなところで試してみるといったことを続けると
メキメキと設計の知見が習得できました。
・「やまさんのコードめっちゃ参考になります!」というメンバーからのフィードバック
・経験2年半時点で「10年くらいエンジニアやっているかと思いました…!」という声
・シニアエンジニアとして是非ご協力いただきたいというCTOからの声
このような身に余るありがたいお言葉をいただけるようになったのも、
上達しようと自発的に学び続け、アウトプットすることを大切にしてきたからだと感じています。
そもそも設計に正解はありません。
開発フェーズ、チームメンバー構成、機能の新規・運用フェーズなど状況によって最適な設計は変わると考えています。
大切なことは自分なりの意見・考えを持って議論できることであり、まずはこれを目指したいですね。
ただ、最初から上手くできなくても全く問題ありません。
むしろ、私も含め皆初心者だったわけですから。
今は実力不足に感じても、昨日よりも少しでもいいから成長しようと努力し続けることが
後に大きく自分にプラスになって返ってきます
落ち込みすぎず、完璧主義になりすぎずで大丈夫です。
学び続けていきましょう!