私は、現在26歳のWebエンジニアです。これまでの技術に対する学び方と、これからの技術に対する学び方について、少し考えたいと思っています。
これまでの20代前半
新卒入社した当時の私は、業務上、PHP + MySQL on AWS の組み合わせでWebアプリケーション開発を学んでいました。 それとは別に、プライベートでは、Node.js + MongoDB on SAKURA レンタルサーバでWebアプリケーション開発もしていました。
当時、Webアプリケーション開発のフロントエンドとバックエンドをなんとなく動かせる程度で満足していたのですが、 先輩や同僚のエンジニアや、お勧めされた書籍から影響を受け、あらゆるものに興味を示しました。
- SQLや正規表現、文字コードといったエンジニアにとって欠かせない技術
- sedやawk, make といったshellscriptの扱い方
- 手続き型、オブジェクト指向、関数型といった考え方のパラダイムシフトを発生するような考え方
- MVC, MVVM, CleanArchtecture などのアプリケーション設計
- ユニットテストやE2Eテストなどを使ったTDD開発
- CI/CD を活用したDevOps開発
- インフラやミドルウェアの自動構築
- CloudNativeなアプリケーション開発
- SSRやSPA、SEOといったWeb設計
- インタプリタ言語やコンパイラ言語
- コンポーネントベースのフロントエンド開発
- Webゲーム開発
- ビッグデータを扱う技術
- 様々なクラウドサービス技術
- 強化学習
- Bot開発やスクレイプ技術、GASなどの業務改善
Webアプリケーションに関する幅広い領域をあらゆる角度で学んでいったのかなと思います。
これからの20代後半
これからも、興味を持った分野を見つけて、手あたり次第学んでいくのも1つのキャリアだと思います。 ただ、自信過剰という訳じゃないですが、多分やればある程度できるようになれると自負しています。
しかし、私としては、そろそろ広く浅くから、狭く深く学ぶ領域(専門性)を見つけたいと思っています。 どういった領域を突き詰めたいか、考える時がきたのかもしれません。
何を突き詰めたいか
単純にソフトウェア技術を突き詰め、テックリードを目指すか、 プロジェクトマネージャーやエンジニアリングマネージャーといった管理職を目指すか。 それでいうと、前者を目指したい。具体的には、Webに関わる専門性を突き詰めたいなと。 また、アーキテクトのような職業に憧れています。
VueやReactなど言語は違えど、Webアプリケーションの成果物はそう変わりません。 だとすると、あまり似たようなベクトルの言語を学んだところで、面白みが薄いのではと思っています。
それよりも、どのレイヤーにどういう役割を持たせるか、クラスをどのように設計するか、レスポンス速度をより早くするためにはどのようなシステム構成にすべきなのか、そういった視点を考える方が楽しいと最近感じています。
また、アーキテクト的な視点以外に、WebのNative(標準)部分の話やブラウザの話、W3Cの動向など、これからのWebについてキャッチアップし続けることにも、力を注ぎたいと思っています。
それらを踏まえると、『Webの専門性が高いアーキテクト』のような立ち位置を目指したいと思います。
最後に
ポエムみたいな話になってしまいました。以上、最近の悩み事でした。