エンジニアになって2年経ったので棚卸しをする


モチベーション

エンジニアという職責でお金をもらうようになって2年が経ちました。
良いタイミングだと思ったので2年間を振り返りながらつけたスキルを棚卸しして
次のスキル獲得ややりたいことに対して足りないことなどを見つけていこうと思います。

1年目にしたこと

1年目はとにかく勉強の年でした。

まずは研修と言語の習得の為にJavaとPlayFrameworkで目標管理のための社内サービスをつくりました。
MySQLのクエリしか満足にかけなくてJavaとオブジェクト指向の習得に非常に苦戦しました。
はじめは同い年のエンジニアと2人で開発してたのですが、途中で彼が退社したため最後は一人で開発することになりました。リリースできて本当によかったし、今も現役で社内で動いてくれてて嬉しいです。

このあとOJTでJavaとPlayFrameworkで構成されたモノリスなアプリの開発に3件関わり
ドメイン知識やモダンなJavaの開発を学びました。

その後慌ただしく新規事業に異動しScalaとReactでアプリ開発をして
InstagramやTwitterの公式APIの取得を一人でしたり、管理画面のリリースをしました。

腰を落ちるける暇もなく色々なプロジェクトを転々としましたがそのおかげで
基本的な言語やフレームワークの習得のための学習方法や、チームごとの開発ルールへの適応能力がつきました。

2年目にしたこと

2年目はフロントエンドに力を入れた年でした。
1年目はReactこそ触っていたもののあまり好きになれず業務で使うから仕方なくという感じでした。

業務的には2年目からは主力事業の開発に関わることになりました。
また主力チーム事業の開発チームにはScalaを専門に扱う業務委託のエンジニアのおじさんや
Reactでのモダンフロントをつくれる業務委託エンジニアのおじさんがいたので
自分が関わりかたとしてはまずはReactに慣れつつ運用チームや営業とのコミュニケーションをとって小さい改修を自分でこなせるようにすることからスタートしました。

フロントエンド専門の業務委託の人に質問をしながらモダンフロントエンドの考え方や書き方を実際のissueをベースに勉強していきました。

ScalaとGoが個人的にはすきなんですが、ちょっと距離を置くことになりましたが
Reactやフロントエンド技術がついたことで実現したいことに対する技術的な幅がひろがりました。
この頃から外の勉強会で登壇したりQiitaを書くことが増えどちらかというとフロントエンドの人という感じの印象を持たれるようになりました。

スキルセット

ついたスキルやできるようになったいことをまとめていきます。

言語

- Java
- Scala
- Kotlin
- TypeScript
- Ruby
- JavaScript(ECMAScript)

ライブラリ

- React
- Redux(thunk saga)
- Angular
- NgRx
- ApatchPOI
- LogRocket

フレームワーク

- PlayFramework2.5
- Akka http
- Ruby on Rails
- Express.js
- koa
- Next.js

BD/スキーマ言語

- MySQL
- Redis
- FireStore
- GraphQL

インフラ

- AWS EC2でのサービス運用
- ECSでのバッチ開発
- Firebaseをつかった開発

サーバー開発

- Scalaを使ったCRUDアプリ作成
- 外部APIのつなぎこみ
- Scalaをつかったマイクロサービスの開発
- ScalaでのBfF開発
- GraphQLをつかったBfF開発

DB開発

- DBのコンテナ化
- DBの設計
- DBのパフォーマンスチューニング

フロントエンド

- Reactでのモダンフロント開発
- Reactをjs => TSへの移行
- Reduxでのデータバインディング
- Atomic Designに基づくコンポーネント開発

ソフトスキル

- 運用との開発キックオフ
- 媒体営業への同行とデータ分析
- 画面のデザインにおけるオブジェクト設計
- 改善サイクルの定点観測のためのメトリクス設計

マーケティング

- データベースの可視化
- 可視化データに基づくUIのABテスト
- ログ収集と分析によるAPIチューニング
- WEBフロントエンドのパフォーマンスチューニング
- アクセシビリティ強化

こんな感じです。かなり散らかってるなぁと思うんですが
サービスを自分一人で作れるという点ではこれくらいで最低限かとおもいます。

まとめ

こんな感じで雑にまとめてみましたが、いかがでしたでしょうか?
今後はサービスを作るスペシャリストになるべくもっと守備範囲を広げていきつつどこかに得意領域を作りたいと思います。
今はとにかく広くと領域を広げてきましたが、やはり僕のようにバランサー型のスキルセットは
中途半端になりがちなのでサービスをつくる上で60点くらいのスキルを早く獲得しつつ実務でスキルを熟成させるというサイクルを回してもっと利益をうむ開発をしていければとおもいます。

全然参考にならないロードマップだとは思いますが、人間その気になって業務や副業、勉強をするとこれくらいはできるようになるという参考になればいいなと思います。

またこの辺のスキル周りで副業やプロジェクトのお手伝いをさせていただけると嬉しいです。

自己研鑽にあてさせていただきます。