見出し画像

大企業からスタートアップに転職して1年経った中堅エンジニアの振り返り

メガベンチャーからスタートアップへの転職をしてからちょうど1年が経ちました。
そこで、この1年間でできるようになったこと、まだできていないことについて、俯瞰的に振り返っておきます。

今回の記事の主目的は自分のための振り返り用です。

半年ほど前に所属企業の入社エントリとしてこの手の記事を書きましたが、今回は個人記事として良いことも悪いことも、脚色せずにドラスティックにまとめていきます(一応読み物として最低限の体裁は整えます)。

背景

まずはなぜ転職に至ったのかだけ、簡単にポイントをおさらいします。

  • マネジメントメインからエンジニアリングメインに立ち返りたい

    • 年齢的にも30代に突入し、修行するなら今を逃したくない

  • 世の中のデファクトなTech Standardを身に付けたい

    • 特に個人的に経験の浅いデータストアやパブリッククラウドなどのインフラ周りの運用に詳しくなりたい

※詳しい動機や自己紹介、どこからどこに転職したかなど気になる方は前回のnoteをご覧ください

転職前の技術スタック

当時、社会人歴は約7年という位置におりました。
いわゆる中堅エンジニアというやつです。

キャリアの根源となったiOSは世の中にあるようなユーティリティ系のアプリであればスクラッチしつつ集団開発のスケーリングなども考慮でき、サーバーサイドはJVM系なら簡単なデータストアやキャッシュ戦略を用いてCRUDを行えるAPIをスクラッチでき保守運用もできるといったレベル感かなと思います。
この2つの領域に関してはあくまで主観ですが、業界でいうところのミドル〜シニアレベルに相当していたと思います。

Webフロントエンドに関しては、実務経験も数ヶ月と浅く、基礎だけはあるというレベルで、他に比べるとかなり劣ります。

これ以外に、チームリード(プロジェクトマネジメントとテックマネジメント)やエンジニアリングマネージャー(ピープルマネジメント)などのプレイングマネージャー経験が直近の1~2年間という状態でした。

# iOS(業務歴: 約4年)
- Language: Swift / Objective-C
- UI: UIKit (Interface Builder) / SwiftUI
- Framework: Foundation, Combine, CoreData, etc…
- CI / CD: Fastlane, Bitrise
- MBaaS: Firebase
- Testing: XCTest, XCUITest

# サーバーサイド(業務歴: 3年)
- Language: Java / Kotlin / PHP / TypeScript
- Framework: Spring Boot, Slim, Node.js, Express
- Datastore: MySQL, Cassandra, Amazon S3, etc…
- Compute: Private Cloud
- Testing: JUnit, PHPUnit, Jest

# フロントエンド (業務歴: 2〜3ヶ月)
- Language: TypeScript
- UI: React (Class Component)
- Framework: Node.js, Express, Redux, Webpack, etc…
- Compute: Private Cloud
- Testing: Storybook, Jest

転職前までの技術スタック

転職1年後の技術スタック

新しく増えたものだけを書きます。

# フロントエンド
- UI: Modern React (Functional Component), CSS
- Framework: Next.js, Tailwind CSS, Apollo Client, …
- CI / CD: GitHub Actions, Cloud Build, Vercel
- Compute: Vercel

# サーバーサイド(BFF)
- Framework: Apollo Server, grpc-web
- CI / CD: GitHub Actions
- Compute: Cloud Run

# サーバーサイド(BE)
- Language: Go
- Framework: grpc-go, yo, Google Cloud SDK, NestJS, Ktor
- Datastore: Cloud Firestore, Cloud Spanner
- CI / CD: GitHub Actions
- Compute: Cloud Run (& jobs), Cloud Functions, Cloud Pub/Sub, Cloud Workflows, etc…
- Testing: go/testing
- Other: その他GCP全般, Docker, Blockchain基礎 (go-ethereum, Alchemy, etc…)

# 業務外で習得したスタック
- Certified Scrum Master
- App
 - Language: Dart
 - Framework: Swift Concurrency, WidgetKit, App Intents, Flutter, Riverpod, freezed, etc…
 - CI / CD: Xcode Cloud

転職後に習得した技術スタック

雑感

マネジメントレイヤーがメインだった従来の業務から、今一度技術にコミットし直すことで、たった1年でしたがかなり広範のスタックを短期間で習得でき、転職前に抱いていた目標は現時点で割とほぼ達成できました。

今までのキャリアや働き方の感覚からは2,3年くらいかかるだろうと考えていたし、35歳くらいまでの修行と心の中では銘打ってました。
概念的な理解は元々のスタックである程度カバーできて応用しやすかった点や、定時外や休日も業務内外にかなりコミットしたことで結果的に巻くことができたのかなと思います。

明らかにエンジニアリングをしている時間は増えたものの、割と好きでやれているので特に心身的なコンディションも悪くないです。

好きなことで、生きていく」はやはり大事ですね

また、やってる人は普段からどのくらいコミットしてるのかを肌で感じられたのは大きく、大袈裟ですがプロ野球からメジャーリーグにいったみたいな一段レベルアップした感覚がありました。
(職種関係なくめちゃくちゃハードワークする人が多いなと感じますがそれと同時に体調崩す人も多い印象…)

でも熱量に勝るものはないなと改めて思います。
これだけでも、スタートアップを経験するという意義があるのではないかと感じます。
聞いた話と体験した事実とではやっぱり違います。

さらに、不確実性に対して過度にコンプレックスがあった入社当初の状態から比べるとFrontend  (Web / App) から Infrastructure まで近年のトレンドであれば「まぁどうにかなるっしょ」というマインド・スタンスに変化できたかなと思います。

新たに習得できた分野においてはそれぞれの技術スタックで深いレベルとまではいかないものの、おそらく壁にぶつかりつつも突破できるのではないかという肌感です。
プライベートクラウドを運用してきた身からすると、パブリッククラウド(GCP)周りの知見が得られたことは本当に大きく、業務内外でコンピューティングするためのベストプラクティスを肌で体感できていることは大きなステップアップといえるでしょう。

もちろんプロフェッショナルな方に比べると質が低いのは否めないものの、基礎がついたので応用できる自走力不確実性に対する耐性という2つのマインドセットが身についたことが最も大きいです。
できない/質が低いのは経験がないだけなので、経験をデザインしていけば良いだけではあります。

1年という期間では十分すぎるくらいの成果を得ることができました。
これが一定のお給料をもらいながら達成できるのは本当にこの職業の特権かなと思います(後述しますがある程度のバリューは発揮してる前提です)。

一方、やりたかったけどできなかったことも挙げておきます。
Blockchain / Web3領域までは詳しくなることはできませんでした。

一時期、NFT関連の業務をさせていただく経験があり、簡単なContractに対する知識とToken, Mintなどの仕組みを業務を通じてある程度理解できるようにはなりましたが、まだまだ自走はできるレベルではありません。
自分でトレンドを追従する能力や学習機会の創出自体も欠如していると感じます。
社内の勉強会で行われているコアな話もほとんど理解できないので、もっと基礎的なことからインプットするべきだと思ってますがそれすらやれていない現状です。。。(無限に時間欲しい)

この辺りは、そういった業界や企業に飛び込んだからといって勝手に身に付くようなものではないということが改めてよくわかります。
結局自分でどれだけ追っていけるかや業務の機会をいかに創出できるかが大事ということです。
※現状、業務でそうした知見が求められること自体ほぼない状態のため、学習の優先度が下がっています(もっと自分が解決すべき課題が他にもある)

そんな間にも、世間にはAIやLLMの波もやってきています。
会社の中でもこの分野を深く掘るチームが出てきています。
本当に時代の波は激しいですが、こういった未知の領域に対してもしっかりインプットしてついていける土壌を構築しなければいけないという焦りが日に日に強くなっていますができていない現状です。
フォーカスしていきたいポイントの1つです。

自分の目標ばかりで組織に貢献できているの?

確かに目標にドンピシャでアプローチできましたが、それは結果論ですし、できなかったことも前述の通りありました。

マルチファンクショナルが求められるStream Alignedなチームの開発メンバーとして、少ない人数でもチーム開発が回るようにするために担当範囲を広げる動きをしていった結果、次第にスタックが増えたに過ぎません。
ある程度八方塞がりを自ら強いて何を担当しても目標になんらかアプローチできる状況を作ったところがこの結果に最も起因しているなとは思います。

ただ、Tech面での劇的な組織貢献ができたかというと正直薄いです。
スタックの親和性がない組織にジョインしたという面では前職での知見をベースに価値提供が出来ないというところも起因はしていそうです。
なのでたらればですが、iOS界隈の会社に入っていたとしたら、それなりに貢献できたでしょう。

経験を積んで余裕が生まれて来れば勝手に広い範囲を見れるようになるとは思うので特に憂いがあったりすることもありませんし、実際に余裕は徐々に生まれてきており、染み出していくこともできています(事実、チーム外のコラボレーションも直近加速しています)。

技術的に優秀なメンバーが非常に多いので、組織の中ではまだまだ見習いレベルのエンジニアであることに疑いの余地はなく、日々成長していかなければなりません。
歴の浅い2軍選手が経験豊富な1軍選手に勝つには練習の質と量を増やさないといけないわけです。

一方で、ハードスキル以外の面、例えば主体性やメンタリング、コーチング、サーバントリーダーシップなどのバリューは相対的にも発揮できていると自負しています。
特に過去の経験や自身の適性・ソフトスキルを活かしながらチーム内のプロセスの健全化や改善などを行い、他チームと単純比較しても目に見えてPDCAサイクルが回ったかなと思います(測れてないですがチーム内のエンゲージメントレベルも低くないのかなと思います)。

その改善内容が他チームへ波及した例も少なくなく、結果的にこちらは組織全体に貢献できているという面もあるのではと思っています。

この辺りのソフトスキルは正直、意識的に振る舞っているわけでもなく、経験やそれによって培われた適性がベースとなっているので、消費カロリーは少なめです。
逆にいうと、伸ばしていきたいわけでもなく、ここがフォーカスされすぎると徐々に自分のエンジニアリングリソースは削られていく構造なので割とセンシティブな問題として捉えています。
省エネでもインパクトがある・一定評価してもらえる武器があること自体はとてもポジティブですし、それでチームが改善して結果的に自分に見返りがあるのであればやるべきだと思っているスタンスです。

この先何がしたいの?次の目標は?

直近は良いアイデアが生まれた時にすぐに具現化できる武器を研ぎ続けることにフォーカスしています。
ここは社会人になった当時から変わっておらず、エンジニアとしての座右の銘は「手に職を付ける」です。

実際、本業以外で開発したりしているものもありますし、そのおかげで新たに習得できた技術スタックもありました。
良いアイデアに関しては、一人のソフトウェアクラフトマンとして常に思考を巡らせておかないとと考えています。

ある程度経験を積ませていただいた1年だったので、次は会社に恩返しするべくコミットをしっかりしたいですし、まだまだ技術的にも深さが足りないので業務を通して深くしていくところにフォーカスしていこうと思います。
雇い手と雇われ手は常にGive and Takeであるべきですし、どちらかに偏りが生じた時はアンフェアだし何かしらの問題が生じる時だと考えます。

1年で自分は成長しましたが、会社のプロダクトはほとんど成長できていないなぁとも感じるのでそこは冷静に見つつも、同時に変革を迎えているフェーズでそこに開発者として携われているという部分では楽しみな面もあります。

次の1年後にどうなっているか、もしかしたら転職してるかもしれないしニートになってるかもしれないし、自分も何もわかりませんがまた振り返りでどんなことを書けるのか楽しみにしながら、日々精進していきたいと思います。

以上です。

P.S.

この1年のGitHubの草は2,504でした(前職まではGitHub Enterpriseだったりしたこともあり、外に出せませんでしたが少なくとも過去イチのContributionsのはずです)。
もっと草生やしたい。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?