みなさんこんにちは。まだまだ初心者エンジニアの小幡ですが、初心を忘れ始めたので少し振りかえってみたいと思います。
今回の記事では、html, css, javascript, phpのフロント側しか触ったことがなく、さらにグループワークを全くしたことがない(gitなどでコードのやり取り経験ゼロ)という状況から、python主体のグループワークに移行した時に苦労したことを中心に、苦労話をまとめてみたいとおもいます。
未経験からエンジニア転職というと、未経験という状態が人によって想像するところが様々だと思いますが、今回のイメージでは自己紹介サイトをポートフォリオとして作成し、それをとりあえずgithubで見られるような状況にしたIT業界未経験者というような感じで、絶賛就職活動中の人というイメージだと思います。その人がいざ会社に入って仕事をしてみると様々な壁にぶつかる事かと思いますが、私が実際にぶつかった壁などを紹介できればと考えています。
これから未経験からエンジニア転職を目指す人にとって、この記事が少しでも参考になれば幸いです。
私としては、「わからない事がわかってきた」という状況です。
カタカナ用語がわからない、そして多い
会社で使われているカタカナ用語の意味がわからず苦労したような気がします。
あらためてどんな言葉なのかと聞かれると、しっかりと身になっていない事が多々ありますが、それ以前に初めて聞くような言葉がたくさんあったような気がします。もはや聞き返すのが辛くなるほどに多かったかなぁと。
しかしこういう事はどんな業界に行っても、様々な業界用語があるように仕方のないことだと感じます。
仕事をする以前に、相手が何を言っているのかわからない、自分が何をしたら良いのかわからないことほど辛いことはないなぁと思っています。
工業系、工学系の高校や大学で学んでいるとそういうことも無かったりするのでしょうか?
そういう意味では大学生のうちに、インターンとして会社を経験できることは素晴らしいことだなぁと思っていたりします。スムーズに社員として働ける、インターンとしてスムーズに向かい入れられるというだけでも大学に行く価値はあるのかなぁと思っていますが、未経験エンジニアがインターンとして社員を経験するのは難しいと思うので、働ていてみて、その現場で頑張って慣れていくしかないのかなぁと思います。
ネットには様々なサービスがあるので、そういった現場で辛いときにサポートをしてくれたりするサービスの活用なども検討してみても良いかもしれません。私の場合は先輩のサポートで何とか乗り越える事が出来たのかなぁと思っていますが、初めて仕事をし始めたときにわからなかった言葉が、今ではそれが何だったかすらわからない現状です。日々の努力は必要だと思いますが、1日で全ての言葉を覚えられるとは思えないのでじっくり時間をかけて慣れていく必要があるのかなぁと。
イメージ画像を探していて思い出したのですが、「リクエスト」と「レスポンス」の意味もよくわかっていなかったと思います。Web関連の知識の話になってしまいますが、「パラメータ」とか「ヘッダー」などもそうですね。
今でも完璧な答えを正確に答えることは難しいことですが、当時は、「レスポンスのアトリビュートにログインIDを追加して」が全く理解できませんでした。そもそも「レスポンス」とはどういう状況?場所?なのか、アトリビュートは属性って何?どこに追加?ログインIDってどれ?そもそもどこにあるの?という「?」の連続でした。
今でも少し新しいことに触れると同じことが起きますが、大体それはここにあるという様な予想ができるのでパニックになりませんし、見つからなかったら単純に見つかりにくい場所にある可能性が高いので聞いてみた方が早いかもなと思えるようになりました。
学ぶ必要がありそうなスキルが山ほどある
フロントエンドにしろ、サーバーサイドにしろ、1つの言語だけ使いこなされば良いという状況はありえないような気がしています。会社組織のメンバーとして、出来なければならないことは、プログラミングだけでなく、その業界で使われている事の全てをまずは浅く広く知る必要があるなぁと感じました。そしてそのスキルの数が想像以上だったような気がします。
仕事を始める前に、まだまだ出来てない事が多いなぁと思っていたことの10倍くらいは学ぶ必要がありそうなスキルはるイメージです。
このスキルの山に押しつぶされそうになる事もあると思います。
つい先日、初めて見たエンジニアとしてロードマップ的なものがまとめられているサイトがあったのでリンクを以下に貼っておきます。(バックエンド)
「HTTPとはなんですか?」と聞かれて、即答できる未経験エンジニアがいるとは思えませんので、1から全部学ぶ必要はないと思います。学んでも使う機会が少ない言葉の方が多いと思いますが、知らないと会話についていけないこともあるよな気がするのでバランスが大事なのかなぁと思っています。
どこかのエンジニア啓発本で見た気がしますが、言語であれば1年に1つの言語を習得してみるというスピード感で良いと書いてあったかと思います。無理して色んなものを最速で覚えようとせず、長期的に見て学習することを決めていくのが良いのかなぁと感じています。
地道にコツコツと積み上げていくことが、大きな知識の山ができあがるのかもしれません。
使われている環境の知識がほぼゼロからスタートする
例えば、独学でWebページが作れるようになり、それをポートフォリオとして提出して採用された場合、そのWebページを作った言語やスキルをそのまま活かせる可能性は低いのかなぁと思いました。
実体験で言うと、当時まだ未経験で何も知らなかった私は、「とりあえずWebフレームワークを使えるようになっておいた方が良いに違いない!」と考えてLaravelの学習に張り切っていて、Webサイトを作りポートフォリオとして掲載していました。
確かに採用面接でWebフレームワークを使ったことがあります!と説明すると、なんとなく良い印象を与える事が出来て否たのかなぁと思いますが、実際問題仕事でLaravelを使ったことはありません。
「何か仕事に役立つかもしれない!」と思って勉強していたフロントエンド側の知識とは裏腹に、サーバーサイド的な仕事をさせて貰っていますので、全く関係ないといえば、そうとも言えます。
確かに世の中的にも「エンジニア不足」と言われているので、仕事はたくさんあるのかもしれませんが、その仕事のほとんどがまったく違う環境で現場が成り立っていると考えています。つまり仕事の数だけ、環境があるということで、自分が持っているほんの少しのスキルと仕事がマッチングする可能性はとても低いというイメージです。
さらに言ってしまえば、未経験エンジニアとして転職できたという方にそれなりに話を聞く機会がありましたが、私のように「Python触ってみたいなぁ」と思っていたところにPythonの仕事が回ってくるのは奇跡的のようなイメージでした。
Javaを勉強していたけれど、データベースの仕事になったのでSQLを勉強しているという人や、特にモバイルに興味があったわけではないけれどAndroidアプリ開発をしていたりと、そのエピソードは未経験エンジニアの数だけあるのかなぁと思っています。
ただの推測ですが、先ほどのLaravelの話で、「じゃあ誰がLaravelの仕事をしているのか?」と考えると、Laravelのスペシャリストが仕事をしている、ということなのかもしれません。高いスキル保持者が優先的にその仕事を選択する権利があるのは、クライアント側からの視点からしても妥当なことだと思いますので。
さらに付け加えると、私の場合は仕事でmacを触ることになったのですが、大学時代にフォトショップが入ったPCがたまたまmacだったという奇跡で、なんとか環境に慣れる事ができたのかなぁと考えています。先日もmacのストレージ容量の見方がわからなかったので、ネットで調べたりしましたが、本当に環境の事でわからないことは多いです。Windowsだったらわかるのか?と聞かれたら、Windowsの事もわからないと答えてしまいそうな気持ですが。
パソコン、インターネットがわからないという事
普段からネットサーフィンなどをするタイプでしたが、それを仕事にするとなるとパソコンやインターネットの表面しか見たことがなく、深い知識、仕事として使う知識がほとんどないという事がわかりました。知っているようで、まったく知らなかった、パソコンとインターネットの世界がそこにはありました。
先ほども紹介しましたエンジニアロードマップにもありますが、バックエンドの最初の知識としてインターネットがあげられているほど、仕事としてのWebは知らない事が多い印象でした。
パソコン、インターネットがわからないというのは、これから仕事として何かを作っていくというときに、机と椅子の使い方がわからないというようなイメージでしょうか。つまり、まず席につけていません。机と椅子でこんなことができるんだ・・・という少し衝撃的な再認識がそこにはあったかと思います。
パソコンの話で言うと、Pythonを触っていると標準ライブラリのosを使う事がありますが、これを使うときには、パソコンについて深く理解していないと扱えない事がよくあります。環境変数などがこれにあたるものかもしれません。「環境変数とはなんぞや?」
インターネットの話で言うと、HTTPStatusをよく見かけるのですが、ネットサーフィンでもたまに見かける「404 not found」などの話です。どこでどんな通信を行っているのか?そしてその結果どういうことになっているのか?その概要を掴まずに仕事をすることはできなかったイメージです。
パソコンとインターネットの事がわからないと、さらにその先にある概念はもっとわからないものになっていきますよね・・・・。
私の場合gitがそんなイメージでしょうか。リモートとローカルという概念は今では少しは理解できているつもりですが、そのリモートとローカルとは何か?そこで何が行われているのか?その通信の結果どうなるのか・・・?オリジンって何?とわからないことが、増えていく恐ろしい世界だったようなイメージです。
仕事としてスキルを捉えると果てしない・・・。
未だにコマンドラインでしか入出力ができない世界があったとか、パンチカードで穴をあけて0と1などの操作を行っていたとか、そういう事が信じられませんが、そういった経緯を知ることも重要だと感じています。
つまり、わからないことだらけである。ポジティブに。
圧倒的に分かっていることが少ない!わからないことだらけです。
ネットサーフィンのように簡単には仕事はできませんでした。
なので、ある意味開き直ってポジティブに捉える様にしていました。
最初のほうに書いた通り、わからないことだらけで精神的に辛い事もあったかと思いますが、私はたまたまこうして元気にお仕事をさせているわけです、
今は少しでもメンバーとして力になれるように努力しているつもりですが、まだまだ未熟だなと思う事の方が多いです。出来ている事の方が少ないというイメージでしょうか。
わからないと嘆いていると、周囲に悪い影響を与えてしまうと考えています。わからない時はポジティブにわからないことを宣言した方が良いと思っています。もちろん1度で全て理解できる頭脳があることに越したことはないのですが。
そしてエンジニア業界だけでなく、未経験として転職することにリスクはつきものですし、「エンジニア不足」だからと言って、楽にエンジニアになれるわけではないと考えています。どんな仕事、業界でもまずは目の前にあるタスクに全力で取り掛かることが重要だと思います。
何かの話で、「今、頂いている仕事を全力で出来ないのに、なぜエンジニアでは上手く行くと思ったのか?」という話がありました。エンジニア業界の話ではなかったと思いますが。なんとなく今の仕事が嫌なので未経験エンジニア転職を目指している人などがいれば、私はあまり転職をお薦めしません。なかなか辛い業界だと思いますので。
私の場合は、仕事でプログラミングができて、趣味でもプログラミングが出来て、本当に幸せものだなぁと感じています。もっと早くからこの仕事を知っていれば良かったなぁ、もっと早くにチャレンジしていれば良かったなぁと思います。
まとめ
最後までお読み頂きありがとうございました。本日は私が経験した未経験エンジニア転職の話を書いてみましたが、いかがだったでしょうか?
未経験エンジニア転職は想像よりも大変だったかもなぁという印象です。現在も絶賛わからない事だらけに囲まれて、体をブルブル震わせているので以前の事をあまり深く思い出せないのが正直なところですが。
コロナの影響もありちょっとしたエンジニア転職ブームという話を聞きますが、そういった事を考えている人の参考になれば幸いです。
それではまた次回、皆さんにお会いできることを楽しみにしております。