エンジニア3年目に開発の楽しさと成長を取り戻すために有効だったこと

3年目に入り成長を実感していなかった

普段はRuby on Railsで開発をしているのですが、今年に入ってからの数ヶ月はあまり楽しんで仕事ができていませんでした。

その理由の1つが、Railsでの開発をルーティンワークとして捉えていたからだと思います。要件から実装パターンがある程度見通せるようになり、Rails wayで実装するだけ..と仕事の中で創意工夫できるところがないような感覚に陥っていました。
結果、自分のアウトプットのレベルも上がらず成長を実感できなくて、仕事も楽しめていなかったのだと思います。

今は上記の状況を脱出し、開発をとても楽しめています。自己評価でも数ヶ月前よりはかなり成長していて、メンバーからも同様のフィードバックをもらいました。

今の良い状態に至るまでに実践して良かったことをまとめたいと思います。

自分が書いたコードを振り返る

以下の記事に影響を受けて、自分が書いたコードを振り返るようになりました。終業後や休日などにPull Requestを読み返したりしています。

自分のやったことを評価するということが大事だとという話をします。これは成長速度にすごく関わるキー・ファクターで、初心者だけではなくて、社会人としてもそうだと思います。エンジニアとして仕事をする、プロとして成長するときのキー・ファクターですね。
強いエンジニアになるための練習法 “失敗の芽”をどれだけ蓄えられるか? - ログミーTech

自分が書いたコードを振り返る時間をとると、「これは果たして良いコードなのか?」「もっと綺麗に書けないか?」など色々考えるきっかけが生まれます。

オブジェクト指向、リファクタリングを学ぶ

綺麗なコードを書こうという意識が出てきても、それを実践する知識が自分にはないことに気が付きました。なので以下の書籍を繰り返し読みました。

繰り返しというところが重要だったと思います。
それまでは流し読みで沢山の数の本を読もうとしていたのですが、それをやめて、少ない数の書籍を理解できるまで繰り返し読むようにしました。

この意識は以下の記事に影響されているところがあります。

プログラミング上達したい人に繰り返し読んで欲しい4冊|erukiti|note

プロダクトコードを手元でリファクタリングする

リファクタリングの視点を持てるようになってきたら、プロダクトコードを業務時間外などに手元でリファクタリングしてみるということをやりました。

リファクタリングの実践する場としてプロダクトコードは、以下の点で個人開発等よりも優れています。

  • 十分に複雑で少なからずリファクタの余地がある
  • 業務ルールをゼロから学ぶ必要がないので、コードの修正に集中できる

実際にリファクタリングがうまくいくこともあれば、いかないこともあります。そういったトライアンドエラーをローカル環境であればリスクなく繰り返すことが出来ます。

追記(2021/11/30):
上記のやり方はレガシーコード改善ガイドで「試行リファクタリング」という名前で紹介されています。

テスト駆動開発を実践する

リファクタリングが実践できるようになってきたら、開発スタイルに目を向けて、テスト駆動開発を学び実践し始めました。これは「開発の楽しさ」を取り戻す意味で、本当にやって良かったと思います。

関連記事: 書籍と動画から学ぶTDD

テスト駆動開発では問題を分割統治して、1つずつ完了させていきます。これによって「前進している感」を得やすくフローに入りやすいと感じています。

またテストに対する見方も大きく変わりました。今までは「後で書く面倒くさいもの」と考えていました。先に実装を書いて、「こう動いてほしい」という気持ちでテストを書いていたからです。

テスト駆動開発を実践すると、テストは「開発を駆動する強力な補助輪」のような存在だと感じ始めました。テストによって振る舞いを担保していることで、自信を持って大きなリファクタリングも行えるからです。

最近自作したGemなどももちろんテスト駆動開発で実装しました。

最後に

まとめると、以下の4つが自分の成長の意味でも、開発の楽しさを取り戻す意味でも有効だったと思います。

  • 自分が書いたコードを振り返る
  • オブジェクト指向、リファクタリングを学ぶ
  • プロダクトコードを手元でリファクタリングする
  • テスト駆動開発を実践する

誰かの参考になれば幸いです。