こんにちは、リアーキテクチャ&イネーブルメント部のjunです。
普段はフレームワーク寄りの機能やライブラリの開発、パフォーマンスチューニング、リファクタリングなどなどプロダクトの土台を支える役割を担当しています。
今回は、
「車輪の再発明」は悪なのか?:エンジニアとしての成長と寿命を延ばす学びの道しるべ
といった重みのあるタイトルになってはいますが、そんな大層なものではなくあくまで私の個人的な考えとなりますのでご了承ください。
「車輪の再発明」は悪なのか?
この問いはエンジニアの間でしばしば議論になります。
効率を重視する現場では「既存のツールやライブラリを活用しろ」という声が多いでしょう。
ましてやこのAI時代に・・・と思うかもしれません。
しかし、この「車輪の再発明」を完全に避けてしまうと、エンジニア寿命を縮めてしまうかもしれません。
なぜなら、エンジニアリングの世界では「学び続ける力」こそが寿命を延ばす秘訣 だからです。
エンジニア寿命とは何か?
ここでのエンジニア寿命とは、技術的な市場価値を保ちながら活躍し続けられる期間を指します。
新しい技術が次々と登場する中、知識やスキルのアップデートを怠れば、徐々に「古い技術しか知らない人」として市場から淘汰される可能性が高まります。
エンジニア寿命を延ばすには、日々のプロジェクトでの経験だけでなく、「意図的な学びの時間」を確保することが重要です。
「車輪の再発明」を利用した学び
車輪の再発明は、一見すると非効率に思えるかもしれませんが、考え方によってはエンジニアの「学び続ける力」を鍛える最高のトレーニングになります。
コーディングやシステム設計(設計原則やデザインパターンなども含む)は、単に「知識」として知っているだけでは不十分で、手を動かして実際に作ることで初めて本当の理解が得られるものです。
そして、この手を動かすプロセスは「経験学習サイクル」に近しいものがあると思います。
※ 経験学習サイクルとは実際に経験した事柄に対し、「経験→内省→教訓→実践」の4段階のサイクルを繰り返して教訓の獲得や成長を目指す手法とされています。
私の場合は、頭で描いたコードを完成するまでのスピードが格段に上がりました。
そして、学んだ知識を組み合わせることで新たなアイデアも浮かんだりするようになりました。
では、「車輪の再発明」が寿命を延ばす理由には何があるのでしょうか。
「車輪の再発明」が寿命を延ばす理由
1. 既存技術を「使うだけ」では理解が浅くなる
例えば、フレームワークに頼りすぎると「魔法のように動くが、なぜ動くのか分からない」状態に陥りがちです。
この状態が続くと、フレームワークが変わった途端に対応できなくなり、技術的な寿命が短くなります。
自ら「車輪を再発明」して内部構造を理解しておくことで、新しい技術への適応力が高まるのではないでしょうか。
2. 市場価値が上がる「深い技術知識」が得られる
表面的な知識ではなく、内部の設計思想まで理解しているエンジニアは市場で高く評価されると思っています。
「既存のツールを使うだけの人」と「ゼロから設計できる人」では、報酬やキャリアの伸びが大きく異なるかと思います。
また、アドホックな対応が迫られた時にも即座に対応できることは強みになるでしょう。
車輪を再発明するプロセスを通じて、エンジニアリングの本質を理解することが、市場価値の向上につながるのではないでしょうか。
3. 技術的負債を減らし、より良いコードが書ける
再発明の経験は、「なぜこの設計になっているのか?」を考える力を養います。
これにより、プロジェクトでコードを書く際も「とりあえず動けばいい」ではなく、「保守性や拡張性を考慮した設計」ができるようになります。
結果として、技術的負債を生みにくくなり、「次世代のエンジニアが引き継ぎやすいコード」を書けるようになるのではないでしょうか。
どうすれば「無駄な再発明」を避けられるのか
もちろん、すべての場面で車輪を再発明していては、時間がいくらあっても足りません。
重要なのは、「学びのための再発明」と「ただの時間の無駄」を見極める力です。
再発明すべき場面
- 新しい技術を学ぶとき(フレームワークの内部を再実装してみる)
- 問題の本質を理解したいとき(ライブラリを使わずにアルゴリズムを自作してみる)
- 設計やアーキテクチャの理解を深めたいとき(自作のマイクロサービスを試してみる)
既存のものを使うべき場面
- リリース期限が迫っているプロジェクト
- 業務アプリケーションなど、再発明によるメリットが薄い場面
- すでに十分に理解している技術を使う場面
参考になった再発明
以下のようなものは学んでおいて損はないかと個人的に思います。
- Webアプリケーションミドルウェア
- hacomonoはRailsを使っているので、Rails文脈で言うとRackミドルウェアと呼ばれるものです。この仕組み(ミドルウェアスタック)は他にも流用できます。
- HTTPクライアント
- 世に溢れるほど存在しているものですが、それぞれ特色が異なるものです。自分好みのクライアントを作れるようになりましょう。
- 簡易的なテキストパーサー
- 自作の設定ファイルを作れるようになり、またその先にはテンプレートエンジンや新しい言語が待っているかもしれません。
- Pub/Sub(イベントの発行・購読)
- 特定の処理が発生した際に複数のリスナーが反応するといった仕組みを理解します。システムを疎結合にしたい時に役に立つでしょう。
などなど探せばたくさんあるので、ぜひチャレンジしてみてください!
まとめ
いかがでしたか?
エンジニアとして長く活躍し続けるには、「学び続ける力」が不可欠です。
そして、その力を育てる方法の一つとして「意図的な車輪の再発明」も選択肢になり得るのではないでしょうか。
「再発明の過程で得た経験が、未来の自分を支える資産になる。」
この視点を持ちながら、今日も一つ、小さな車輪を作り直してみませんか?
少なくとも「車輪の再発明」を経験したから今の私がいます。
あなたのエンジニア寿命はいつですか?
株式会社hacomonoでは一緒に働く仲間を募集しています。
エンジニア採用サイトや採用ウィッシュリストもぜひご覧ください!