エンジニアにジョブチェンジし4ヶ月経った振り返り
こんにちは、うえのです。
12月でエンジニアにジョブチェンジで転職し4ヶ月経ち、2020年の年末を迎えたので年内中に振り返りをしておこうと思います。
簡単な経歴
大手ビール会社に新卒入社。都内飲食店、法人企業向けに酒類営業の新規店開拓に励んだり、社内メディアを立ち上げ、最新トレンド・工夫している営業事例を全国に発信したりしてました。その後、IT業界へ。
EC物流サービスの事業開発や新規検討サービス のPOを担当。
自分で作ることに興味がわき、開発側へジョブチェンジ。
4ヶ月でやった実装
- 音声プラットフォームのTOPページのUI改善
- 上記プロダクトのAPI開発
- ビジネスチームの業務支援機能の開発
1つ1つ振り返る
・音声プラットフォームのTOPページのUI改善
入社以来早々に任せていただいたのが新規サービスのTOPページのUI変更に伴う詳細設計とAPI開発。言語はNode×TypeScript。
まずここで2つの疑問が浮かぶ。
1つ目はフロントエンドエンジニアとして入社したが、最初に任されたのがバックエンドだった。今でも覚えているメンターとの会話。
- メンター「詳細設計おつかれ。決めた仕様に沿ってAPIを開発しよう。」
- 僕「APIって開発するんですか?取得するのではなくてですか?」
- メンター「そうだよ、開発。僕たちがAPI作ってアプリチームに取得してもらうねんで。」
- 僕「うん?それってつまりバックエンドということですか?」
- メンター「せやで。アプリチームに基本フロント部分も任せてて、僕たちのチームは基本バックエンドやで。」
これが入社して3週目位の会話だったと思う。
実務に入る前はフロントエンドしか学習をしておらず、
恥ずかしくも API = 取得 するものと思っていたので
これは驚きを隠せなかった。
今振り返ると恐ろしいが、Web APIの基礎やMVC、HTTPメソッドってどんなもの?レベルで実務に入ったので、「バックエンドとは何をする仕事なのか」さえも知識としてままならなかった。
2つめの疑問、使用技術の問題。
Vueを使ったフロントエンドをまずやって、そこで開発全般に慣れてきたら入社半年後にバックエンドを行うものと思っていたので(入社前面談より)、メインの使用言語であるTypeScriptも触ったこともなかった。
バックエンドも初、使用言語も初、挙句の果てには現在フロントエンド開発で普及しているTypeScript&Node.jsをバックエンドで使用している企業も少ない(めちゃくちゃ便利なのだが)ので参考書やチュートリアルで自主学習することも中々できなず、フルリモート勤務なので簡単にが先輩エンジニアに聞けない、このクアドラプルコンボが揃った現実を知った入社3週目は精神的に苦労した。
ただその後はかなり勉強し、
この攻撃力0から2週間後に最初のPRを出し、
3ヶ月目でリリース、3ヶ月目半ばで独り立ちまで持ってこれた。
・ビジネスチームの業務支援機能の開発
これはビジネスサイドの業務効率化として開発している社内向けのプロダクト。上記のUI改善同様、最初はバックエンドでAPIの開発をメインに行なっていたが、一通り必須機能が開発できたところで、
「フロントエンドやりたい人いる?」
とMTGで言われたので、やりたいと伝えたらすんなりアサインされた。
しかし、これらのフレームも触ったことがなかったので、
学習期間も考慮頂き入社4ヶ月目でVueやNuxtを中心としたフロントエンドの開発業務を担当させて頂いた。こちらは年明けにリリース。
使用した技術
- バックエンド:Node.js、Express、TypeScript
- フロントエンド:Vue.js、Nuxt.js
- インフラ:Firebase
ジョブチェンジ入社で意識したこと
現在の会社は創立十数年のベンチャーで、入社後のマネジャーの会話で初めて知ったのが、僕が創立以来初めての異業種からのエンジニア入社だったということ。
なので他職種であれば研修の仕組みは整っているが、未経験エンジニアの研修の仕組みなどは整っていなかった。
またコロナ禍と重なり、初日からフルリモート勤務だったので、
職種に馴染むだけでなく会社に馴染むのも一苦労した。
現在もフルリモート勤務で出社したのは社内での予防注射とオフィス見学のみで、社内"勤務"はしていないに近しい。
この環境下なのでオフラインコミュニケーションではなく、
オンラインコミュニケーション意識したことは
- アウトプット(毎日日報とAsanaを活用)
- メンターとZoomをフル活用
- 自分のキャリアビジョンを言語化し、毎月1on1で伝える
- ビジネス面のキャリア経験を活かす
振り返ってみる。
・進捗アウトプット(毎日日報とAsanaを活用)
社内ではSlackで毎日日報を書く習慣があるのだが、基本的には進捗を記載する感じ。そこで僕はデフォルトのフォーマットにプラスα、日々細かいエンジニアとしての「学び」を【Good】と【More】で毎日書きまくっている。
一部抜粋したものがこちら
日々学びを継続すると、上司などから
「ここは、こんな風にコード書いた方がいいよ」
とレビュー頂く回数が増えたり、直接仕事していないエンジニアの先輩からも進捗を把握して頂きアドバイスを増える回数が増えた。
またチームではAsanaを導入しているので、自ら「マイオンボーディング」とプロジェクトを自身で作り、研修時には毎日アウトプットし、学びをマネジャーに共有した。
メンターとZoomをフル活用
入社して最初の3ヶ月はわからないこともわからず状態で、不明点を言語化するのも難しかった。だからこそメンターに掛け合い、業務中の8~10時間は休憩除いてZoomを繋ぎっぱなしでペアプログラミングの形で既存コードの理解や1行でも不明点があれば確認する形を提案し、承諾頂いた。
ここでコードの理解だけでなく、エンジニアとしての基礎を叩き込んで頂いた。これがなければ、今でもエンジニアとしての知識だけでなく、社内状況も含めて今ほど理解ができていなかったと思うので、時間を共有頂いたメンターには本当に感謝しかない。。
自分のキャリアビジョンを言語化し、毎月1on1で伝える
毎月マネジャーとの1on1があるので、これまでに自身をKPTで振り返り、①今月自分ができるようになり、今後も継続したいこと②課題としていること、気になっていること③来月トライしたいことをすり合わせしている。
僕は2年先くらいまではキャリアの言語化をしているので、キャリアを共有した上でマイルストーンとして「目標に対して今月がここができるようになった」「ここが課題で、焦りを感じている。仮説としてはここが理解できていないからこの課題が克服できていない」など話す。するとマネジャーも「エンジニアでここまで言語化している人も珍しいので、応援するよ!」や「来季はこんなプロジェクトを将来的に作りたいから、キャリアにも合うと思うし、入ってよ!それまでに今はここが足りていないから、この課題を克服しよう」みたいな議論生まれる。
例えば実際にあった話だと、来季は新規プロダクトを立ち上げる時にPOとビジネスに明るいエンジニアとデザイナーで最小チームを組んでプロトタイプの仮説検証を繰り返すプロジェクトを作りたいから、そこに入ってもらいたいから今何が足りないか要素分解して話そう、とか。
ビジネス面のバックグラウンドを活かす
これは過去2社でセールスからBizDev、PdMやカスタマーサクセスなど幅広い職種をしてきた強みを活かし、サービスを成功させるために、技術に理解があるだけでなく、収益モデルの見直しや、優先度が高い機能・SNSマーケティングなど幅広く担当しているプロダクト以外にもMTGで意見を出した。そこで所属しているエンジニアチームだけでなく、POからの信頼も高めていき、ビジネス面でも壁打ちさせて頂けるようになった。
苦労したこと
・仕様、既存コードの理解&現場で使用している技術のキャッチアップ
実務につくとぶち当たる壁がここだと思う。現在も苦労はしているが、独学時に学習していたフロントエンドではなく、バックエンドであったこと、使用しているNode×TypeScriptがバックエンドとして使われているドキュメントが少なかったので理解に相当時間を要した。
しかし、既存コードを1行1行理解する意気込みで平日だけでなく土日などの休日もコードを読んで、不明数をリストアップし週明けにメンターに確認できるサイクルでだいぶ知識は深まった。めちゃくちゃコードジャンプしまくった...
4ヶ月を振り返ってみて心境の変化
- (前) エンジニアは開発理解のキャリアステップの一部
→ (今) 開発をもっと深堀りたい
- (前) フロントエンドが主軸
→(今) バックエンドの方が楽しいし、主軸にしたい
結論、エンジニアにここまで没頭できると思ってなかった。
僕を知ってる人は皆知っているのだが、僕の苦手なことが「見えないモノを概念的に理解する」なので、ネットワークやサイエンス的な専門分野が大の苦手である。そもそもエンジニアに適しているのかも怪しい。笑
なので、エンジニアの1年間~2年間くらいで知識を薄く広く得たらビジネスサイドに戻って、開発業務とビジネスサイドを横断できるキャリアを歩むつもりであった。
ただ、学習すればする程業務にハマり込んで、毎日があっという間で、
キャリア5年間の中で最も早く感じられた4ヶ月であった。
なので、上記キャリアは今でも検討しているが、暫くはまだまだ半人前のエンジニア領域を深ぼっていきたいと考えている。
「理解ができないことを戦略を組んで得意分野にすることが得意」でもあるので、今後はより深く体系的な知識を得て、計算量の感覚が身につき、効率的なプログラムも身につけていきたいな〜だったり、コンピューターサイエンス(CS
)の基礎やアルゴリズムを勉強したい。
このような心境の変化が生まれたのは、間違いなく最初の4ヶ月で小さいけれど成功体験をいくつか積めたからだと思う。
来年に達成したいこと
業務内
- 社内でトップクラスに詳しい技術分野を作る
- 特定プロダクトの主担当者(基本設計〜リリース)
- プロトタイプの開発手札を増やす
業務外
- 基本情報、応用情報技術者等の取得
- CSの学習
- SQL
業務
現在の会社では、新規プロダクトをリーンに年何個も作るからこそプロトタイプの開発手札は増やせるようになりたい。
具体的には、立ち上げ時にビジネス側から求められる要件の提案に対しての技術選定や、どこまで自前で開発し、どこから他者サービスを併用しつつプロトタイプをリリースするかの技術的提案、実行。使っているプログラミング言語やフレームワークのバージョンなどを十分理解して、何が良くなったか、変わりに生まれているデメリットは何か。気をつけるべきことが増えているか?など。
これは誰かが決めてくれたアーキテクチャに従うものとは一段違った技術の理解度が必要になるので、時間は要するが来年には一通りの経験をしたい。
ビジネスサイドでは過去サービスをリリースするための企画から実行まで経験したからこそ、開発側も経験することで今後自分で技術目線とビジネス目線を組み合わせて何か作れると思うとワクワクする。
業務外
今までは業務で使う言語、フレームを覚えることに必死だったので、来年はベーススキルの底上げ、体系的に知識を理解するため基本情報・応用情報技術者をとっていきたい。とりわけ、実務に入るとプログラミング言語、フレーム=1つの手段であり、そのベースであるネットワーク、セキュリティなどがいかに大事か理解できた。
また現在はバックエンドを担当しつつも、SQLを実務では使ってないし独学でもほとんど触ってこなかった。とはいえ、SQLの知識は必須であり、今後PdMなどの職種に戻ってもデータ分析でも活かせるので学んでいきたい。
CSでは、データ構造、計算量(計算複雑性)、アルゴリズムなどの知識を得て、新技術ばっかり追いかけず、言語、フレームに関わらないCSの基礎をちゃんと学びたい。
将来的にはCSの大学院の社会人修士コースに入るのも検討している。
この記事が気に入ったらサポートをしてみませんか?