未経験からエンジニアになって3年経ちましたが、まだ生きてるよ〜
未経験エンジニア、生存報告途絶えがちですが、まだ頑張って生きてるので今年も書きました。
去年の記事はこちら hirovodka.hatenablog.jp
筆者のプロフィール
現在26歳
最終学歴は高専中退(3年生の時)
フィヨルドブートキャンプ(2020-01 〜 2020-9)→広告系ベンチャー企業のバックエンドエンジニア(2020-10 〜 2022-05)→メガベンチャー(多分)のバックエンドエンジニア(2022-06 〜 現在)
3年目を終えた時点のスキル
総括すると『Ruby のバックエンド担当としては使えるけど、フルスタック的な働きは期待できないJSON生成機』です。
Ruby on Rails 周り
基本的にずっと Ruby on Rails を使ったバックエンドの開発をメインにしていたので、それなりにスキルはついたなという感じです。
レベル感でいうと、いきなり知らないプロダクトに派遣されても仕様設計から実装、テスト、リリースまで一気通貫で行えるようなイメージで、実際に初見のプロダクトに派遣されたときでも、それなりに一人でキャッチアップして開発はできていました。
自分で自分のレベルについて把握するのは難しいんですが、個人的には『そこまで手もかからないし、いてくれると助かるな〜』くらいのレベルかなと思ってます。
テックリード的な感じではないけど、エンジニアとしては頭数に入れれるのでいてくれれば便利くらいの感じなのかな。。。
ちなみにフロント周りの開発はほとんど行ってなかったので弱くて、特に最新の Rails のフロント周りは全然キャッチアップできていないです。
DB 周り
超絶詳しくはないけど、業務では困らないレベルだと思います。
前職がかなりしんどい DB 設計だったので、クエリのパフォーマンス周りの知識は人並みくらいにはある気がしてます。
レスポンスの遅い API のクエリを実行計画を見つつチューニングするみたいなこともしたりしました。
あとは MySQL を使うことが多いので、DDL のロック周りとかは少し人よりも勉強しているかも。。。
テーブル設計は最近やる機会がないのでレベル感は不明。
いわゆる正規化とかアンチパターン的なことは人並みに勉強してきました。
フロント周り
前職とか副業で少しだけ React を触っていましたが、今の仕事では全く書かないのでよわよわです。
最近久々に JavaScript 書いたけど、めちゃくちゃ調べながらなら少し書けるくらいのレベルです。
インフラ周り
よわよわ。
今の現場はインフラチームが基盤周りを整備してくれているので、自分でインフラ周りを触ることが殆ど無いです。
一応、 k8s 基盤にデプロイするためにマニュフェストを書いてデプロイするみたいなことも最近しましたが、自分で 0 → 1 のインフラ環境の構築みたいなことができるレベルではないです。
その他
- GraphQL
- ちょっと触ったくらい
- Docker
- 分からない訳では無いが、深いところまで理解しているわけではない
- CircleCI
- ちょっとわかる
- GitHub Actions
- ちょっとわかる
(多分)メガベンチャーで働いてみて
メガベンチャーの正確な定義がわかってないので濁しますが、一応この記事にリストアップされていたのでメガベンチャーということで話を進めます。
変な謙遜を抜きにして、周りと比べて自分がめちゃくちゃ劣っているかと言われればそんなことはないと思ってます。
実際毎日業務はできていますし、人並みにアウトプットは出せてます。
ただ周りを見て飛び抜けてできる人みたいなのがそれなりにいるので、そういう人達とは比較にならないです。
Ruby を使っている企業としては知ってる人も多いと思うので、そういうところで人並みにアウトプットを出せてるのは自信に繋がりました。
3年目を終えた感想
去年の記事に『周りと比べないこと』みたいなのを書きましたが、3 年目は周りのすごいエンジニアに頑張って追いつきたいと思って頑張りました。
実際に自分が勉強していたフィヨルドブートキャンプの卒業生達が色々と活躍しているのを見て『すごいな〜』と思いつつ、『スタートラインは同じはずなのに、どこでこんな差がついたのか。。。』と落ち込んだりもしてました。
なので自分もそっち側で頑張りたいと思っていたのですが、自分では無理だなと実感した一年でした。
技術に対してのスタンスも違うし、そもそものモチベーションが自分とは全く違うなと。
自分はそもそもそこまでプログラミングが好きというわけでは無くて、どっちかというと仕事で評価されるために頑張って勉強しようみたいなモチベーションが根底にあります。
とはいえ自分が必要だと思ったことは業務後や休みの日にも勉強しますし、足りてない知識があると思えば技術書を買って読んだりはしてます。
ただ、それが好きでやっているのかと言われれば全然そんなことはなくて、あくまで仕事で評価されたいから頑張ってるに過ぎないのかなと。
あとは、自分が目指すキャリアみたいなものもあまり意識できていなくて、漠然とコードをあまり書かないマネージャーみたいな方向に進んでいきたいです。
ただ、それはエンジニアとして十分なアウトプットを出したあとの話だと思っているので、とにかく今は自分のエンジニアとしてできる領域を広げていきたいと思ってます。
正直 Ruby 周りに関しては、決して RubyKaigi に登壇できるようなレベルではないですが、業務で扱う分には十分だと思っているので、2024 年は違う言語やインフラ周りの知識をつけていこうと思います。あと英語も。
3年間で感じた未経験から生き残るために大事なこと
去年の記事では
一番大事なことは周りと自分を比べないことだと思ってます
みたいな綺麗事を言ってましたが、良くも悪くもこの業界に少しずつ染まってきたので別のお気持ち表明です。
未経験だろうがなんだろうが、結局社内では周りのエンジニアと同じ土俵で比べられるのでそういった人たちに勝つためには比べられながら努力するしかないと思ってます。
ただその中でどこまで目指すかは人によると思っていて、実際に業務外で自主的に勉強するエンジニアなんてそこまで多くないんじゃないかなと。
なので、エンジニアとして生き残るには少なくとも業務でアウトプットが出せる知識量が必要なだけで、そこから勝ち上がっていくためにはどこまで 個人の時間を使って勉強するかしないかでしかないと思います。
これを『プライベートを犠牲にする』と感じるのか『楽しい』と感じるのかは人によると思いますし、楽しめるならそれが一番良いんだろうな〜。。。
自分は『楽しい』と感じるわけではないですが、『犠牲にする』まではいかなくて、「そこまで苦ではないけど、めちゃくちゃ楽しいか聞かれればそんなことはないかな〜」くらいです。
ここは向き不向きがあると思うので、自分は割と向いていたほうなのかなと最近思うようになりました。
業務時間中に勉強できるのが一番いいですが、結局できる人たちはプライベートの時間も自己研鑽しているので、その人達と同じレースで走っている限り勉強することは辞めれないのかな〜と。
ただどのレースで競争するかは自分で選べると思っていて、それが社内の同僚なのか、カンファレンスで登壇しているエンジニアなのかは個人で選べば良いと思います。
そして早々にレースから降りるのも自由で、ゆるく働き続けるならそこまで頑張らなくても良いと思います。
まとめ
いつまでそのレースで走り続けるか、そもそもレースに参加しないかは人それぞれですが、少なくとも自分はまだ頑張りたいと思ってます。