これは「Happiness Chain Advent Calendar 2023」の1日目の記事です。
https://adventar.org/calendars/9414/
こんにちは。プログラミングスクールHappiness Chainでメンターをしているryoです。
今回は、僕が未経験から転職してからの2年間に、とても濃密な実務経験をしてきましたので、時系列を追って話していければと思います。
エンジニア1ヶ月目
僕は未経験から、SaaSの自社開発企業に転職しました。フェーズとしては10->100ですが、エンジニアの人数が少なく、チームを作っている段階でした。その時点では、ビジネスサイドから上がってきた新機能やエラーを、エンジニアリーダーがメンバーに割り振る形で、進めていました。
入社当初、僕は全く別の職種からの転職なので、どのように仕事を進めるのか想像もつかず不安がありましたが、複数回のMTGにて十分に説明いただいたので、不安が解消され無事に最初のタスクを終えることができました。
入社から2週間後、大規模な新機能開発を僕1人に任せてもらえることになりました。
エンジニア2~6ヶ月目
エンジニア2ヶ月目の時に、副業を始めました。副業を始めた経緯としては、転職活動をしていた際に0->1のスタートアップ企業を受けていて、面談の際に「流石に1人目のエンジニアに未経験の人を採用するのは怖いので、落ち着いたらまた話しましょう」ということで、再度面談をした際に副業で働くこととなりました。
副業先は、正社員のリードエンジニアが1人と僕の2人で、僕はフロントエンドをサポートする形になりました。フロントエンドは独学の際に、重点的に勉強していて自信はあったので、まずは1ページをお試しで任されましたが、そちらを短期間で作成できたので、その後全てのページを任されるようになりました。
ただこの時、本業の方も新機能開発のタスクを進めていて、土日も含めて毎日のように稼働していましたが、楽しんでいる自分もいました。
そして6ヶ月目の時に、自分が開発していた新機能をリリースすることができました。この開発は今でも印象に残っています。
1つ目は、1PRで7000行の変更を行なった点で、commitを汚くしてしまったことと、レビュワーに負担をかけてしまったことで、非常に申し訳なかったと思います。
2つ目に、フロントエンドがReactなのですが、クラスコンポーネントで記載されていて、かなりロジックが複雑で、変更を加えるのが難しいため、ファンクショナルコンポーネントに修正してから、ロジックを修正したのが、とても大変でしたし、とても勉強になりました。
エンジニア7ヶ月目〜1年
新機能をリリースした後は、中小規模の新機能開発を進めつつ、一部新機能のマネジメントも任されるようになりました。
ビジネスから上がってきた要件から、タスクを切って割り振り、週次で進捗を確認し、必要に応じてヘルプに入る等の作業をするようになりました。
また、副業に関しては稼働時間が確保できず、この期間はお休みしてました。
エンジニア1年~1年8ヶ月目
この時点でエンジニアの人数も多くなり、開発スピードを上げていくために、各人の役割を明確に分けるようにチームを作る流れになりました。僕は新機能のマネジメントを順調にこなしていたので、PdMとしてやっていくことになりました。
僕はPdMに関しては、知見がなかったので、カンファレンスに行ったり、本を読んで体系的に学習しました。当初はただ各プロジェクト全体の進捗を管理するものだと思ってましたが、もっと上流から考えて管理するものだということが分かり、これが完遂できたらサービスをより成長させられると思い、とても面白さを感じました。
しかし実際にPdMとして働いてみると、学習した内容と異なる部分が多いため教科書通りに進めていくのが難しく、またビジネスサイドのPdMの認識が異なっており、PdMとして役割を全うすることができませんでした。
また、副業に関しては徐々に再開していたのですが、正社員のエンジニアの方がやめてしまい、僕の方でリリース最終段階に向けてシステム全般の調整を一通り行なっていました。
そんな時に、副業の方から正社員のオファーをいただきました。
この時、僕は正直PdMを続けていく自信がなかったので、転職しようと決意しました。
エンジニア1年7ヶ月目~2年
副業の方に正社員として転職して、正社員は僕だけなのでシステム周り全てを僕が見ることになり、様々な経験をしてきました。経験した内容は以下の通りです。
- インフラをAWSからVercel、Renderへの移行
- staging、demo環境の作成
- PapertrailとSentryの導入
- エラーがあった際のslack通知を実現
- メール送信の際とバウンスした際のslack通知を実現
- パッチ処理実現のためのサーバー構築
- バックエンドにてformatterを導入
- バックエンドにてviewのテストを導入
- バックエンドの一部テーブル設計の変更(正規化やカラム名の変更)
- フロントエンドにてテストを導入(jest、cypress)
- バックエンド、フロントエンドのrefactor
- 数百社ほどの提携先企業サービスページ量産のためのインフラ整備
- slackからnotionへの自動タスク化
- Google Analyticsの導入
- ChatGPTの導入
- ドキュメント整備
これらの経験は、前職の経験があったからこそ、完遂できたと思いますし、
実際にこういった経験は貴重だと思いますので、転職してよかったと思ってます。
こちらのサービスは僕がエンジニア歴2年になるタイミングにてリリースされ、大きなエラーはなく無事にサービスが続いています。
最後に
いかがだったでしょうか?
自分的にこの2年間が、エンジニアとして1番成長できた期間だったと思います。
転職前までは、2年目でスタートアップ企業のシステム全般を見るようになるとは想像もしていませんでした。
これだけの経験が積ませてくれた2つの企業の皆様には大変感謝しております。