営業からエンジニアになるためにやったこと記録
2022-10-16
Photo Credit: Simon English
「未経験 エンジニア」で検索すると大量の検索結果がヒットしますが、どの情報が信頼できてどれが信頼できないのか見極める力も最初はないので、自分が勉強を始めようとした際にはだいぶこまった記憶があります。
毎年出されるDeveloper Roadmap (日本語訳も有志の方々が作ってくれていたりします)をみても、範囲が膨大&順番に進めても全体像が見えず、勉強を始めたての頃は何からどう手をつけていいのか分からなくなってしまっていました。
今開発者になってしばらく経ってから考えると、確かにどの要素もそれが何を指していて、なんのためにあるものなのかぐらいは知っておくべきではあるのですが、知識量には濃淡があるのが普通です。
例えば、Backend のパートには Authentication のパートがありますが、自力で認証サーバーを作成することができるレベルの知識はなくても業務アプリケーションを作成することはできます。もちろん認証サーバーを提供するサービス事業者でアプリケーションのコア部分の開発をするのであればそう言った知識も必須になるかと思うのですが、なくてもできる仕事はあるし、これら全ての要素を深く 理解しようとすると 10 年単位で時間を要することになってしまいます。
ただ、初心者にとって辛いのは、「どのレベルまで個々の知識を持っていたら良いのか検討もつかない」ことかと思っており、残念ながらここは一定経験を積んだりしていくしかない部分もあります。
経験を積む段階に入る前に、あまり興味がない分野の技術を深掘りしすぎると難しすぎてつまらなくなり勉強が続かず、かといって必須部分の知識が抜けているとスタートラインに立てず経験を積むこともできません。個々の知識のレベル感を詳細に示すことは難しいので、今回はあくまでも異業種からエンジニアに転向した際の一例として参考にして頂けたら幸いです。
勉強を進める中で参考にさせていただいた記事や、私自身他の人の体験に勇気づけられた部分が沢山あったので、自分の経験も少しは還元できたらと思い自分の体験もシェアすることにしました。
*先日エンジニアになって初めての評価面談が完了し、少なくともお荷物にはなっていないということが確認できたのでこのタイミングで記事を公開することにしました。内容自体は半年前ぐらいに忘れないうちにと書き溜めていたのですが。。。
自分について
ざっくりエンジニアになる前の自分がどんな人だったか記載しておきます。
- プログラミングの勉強を始めたタイミングは 25 歳の冬
- 文系学部卒
- スタートアップで営業職として勤務
- 英語力は日常会話〜テーマによってはビジネスレベルも可ぐらい
- プログラミング経験は勉強開始時点で Progate を触ったことがあり、VBA でマクロを組んでたことがあるぐらい
決してすぐエンジニアに転向できる状態ではありませんでした。
現在に至るまでの経緯は後ほど詳細に記述しますが、最終的に私はエンジニアになるために転職したのではなく、社内転籍でエンジニアになりました。具体的には、営業 → 社内プロダクトとビジネスを繋ぐためのエンジニア(所属は Biz 組織のまま) → バックエンドエンジニア(所属も Tech 組織に移動)という経緯を辿り、現在は社内アプリケーションの開発に主にバックエンドエンジニアとして携わっています。これまでは主に TypeScript で開発を行なっていましたが、10 月から Rust での開発にも挑戦し始めたところでキャッチアップに必死です。
対象読者
この記事では、よくある「未経験から3ヶ月でエンジニアに!」のような内容は紹介していません。強いていうなら、「未経験から 1 年ぐらいでエンジニアに!」というような内容です。
Lilian さんの note「【転職エントリ】Google に入社します」に圧倒されて、全然参考にならなかった人でも十分参考になるレベル感かと思います。逆に、Lilian さんの note のペースでいける。という方にとっては、私のペース感は遅すぎて全然合わないかと思います。(にしても Lilian さんのペースは凄すぎる。。。紹介して下さっていた本は一通り買って読みましたが、読むことはできてもこのペースで中身を完全に理解して面接での質問にも答えられるレベルには到底自分は持っていけませんでした。。。)
また、私は「一定長期間(5-10 年)かけてキャリアを伸ばしていく前提でエンジニアになりたい」と考えて以下の行動を取ってきたので、とにかく最短でとにかく最短でエンジニアの職をゲットしたいという場合にはもっと早く職をゲットすることができる方法があるかも しれません。また、私自身「一定期間(5-10 年)かけてキャリアを伸ばしたエンジニア」ではまだないので、答え合わせはできていないことご了承下さい。
営業からエンジニアになるためにとった戦略
全体像
全体感としてとにかく「基礎体力をつける」ことを最も重要視して取り組んで来ました。
未経験から Web エンジニアになるには
- Docker
- AWS
- Go / Ruby
- React
- etc
といった要素を取り込んで”モダンなポートフォリオ”を作成するのが良い。というような発信を見て私も最初何もわからない頃は「そうなのかー」と思っていました。もちろん1つ1つの要素を切り取るとモダンですし、実際に企業でこういった要素技術を利用していることも多いでしょう。しかし、私は面倒な部分を隠蔽してくれる便利技術の裏側で動いている基礎から理解したかったので、
- ネットワーク
- DB
- データ構造
- ブラウザ
- etc
といった技術の勉強をすることに重きを置いて学習を進めてきました。
なぜこの戦略を取ることにしたのか
私は 10 年で一定力のあるエンジニアになりたいと考えていました。なぜ 10 年という時間軸に定量的な明確な理由はないのですが、周りのエンジニアとしてすごいなと思う人は、何だかんだ 10 年ぐらいの時間をエンジニアリングに投資してきているとみえる人が多かったからです。もちろん中には、3-5 年ぐらいでぶっちぎる人もいるのですが、その人は本当に天才的に頭がいいと思っていた人だったので参考にしませんでした。
10 年という期間で考えた際に、目先の年収やステータス、開発に利用するフレームワークや言語などはどうでも良く、とにかく強いエンジニアに揉まれることができる環境に入りつつ、今後数年の成長にレバレッジを大きくかけることができる状態になることが重要でした。
そのため、AWS / Docker / Go / TypeScript(React)などで転職活動のためのキラキラ?ポートフォリオを作りあげるということはせずに、土台となっている部分の勉強にフォーカスし、これらの技術スタックやより新しい技術スタックを使いこなす必要が生じた場合にもできるだけ早くキャッチアップが可能な状態を作り上げていくことを目指しました。
やはり基礎ができていることが大事で、数学でいったら一次方程式がわからない状態で二次方程式を解こうとしても解けないし、二次方程式が解けない状態で微分積分を理解し ようとしても理解できません。微分積分の公式、パターンを丸暗記して対応していくことで微分積分の一部の問題は解けるようになるかもしれませんが、その基礎となる単元の理解が疎かだと応用が効かないし、新しい概念を理解しようとした際にスピードが出ません。
コンピューターでも、基礎の上に乗ってきている最新の技術は基礎のわかりづらい部分、面倒臭い部分がいい感じにオブラートで包んで、扱いやすくしたものが多いので、一見時間がかかるように見えますがこの作戦が最も効率が良い作戦である。と自分は判断しました。
結果的に面接で聞かれた質問や、コーディング試験で問われた問題も基礎を問うものがほとんどであり、言語やフレームワーク、コンテナ、クラウド技術などの詳細については聞かれることはありませんでした。これは受けるポジションのレベルにもよるとは思うのですが、未経験からジュニアポジションで入る分には必要なさそうと言えるでしょう。
やったこと:全体像
勉強開始ー5ヶ月目
- 気合を入れるために 20 万で PC 購入
- JavaScript & TypeScript 触る
- 基本情報技術者試験の勉強&資格取得
- Udemy の適当な講座でアプリケーションを作った