- Published on
【読者質問 10】ソフトウェアエンジニアとして職を得るためのレベルと注意すべきこと
- Authors
- ジャバ・ザ・ハットリ
ご質問ありがとうございます。
いつもブログを楽しく拝見しています。ソフトウェアエンジニアとして職を得るために、どれくらいのレベルかを教えてもらえるでしょうか?例えば、このレベルのコードはプログラミングできるなどあれば、教えて欲しいです。
ほとんど同じようなご質問を以前にいただいて回答しましたのでこちらも参考にしていただければ、と。
【読者質問 04】「まともなコードが書けるエンジニア」はどんなレベル?
ご質問に「ソフトウェアエンジニアとして職を得るために」とあるが、これは様々なレベルと会社があって、初級レベルの技術にはそれ用の職が、上級エンジニアにはそれ用の職がある。初級レベルのエンジニアなら職名はインターンやジュニア・デベロッパーとなり、上級レベルになると CTO とかリードエンジニアになっていく。なので「職を得るために」という答えは「箸にも棒にもかからないレベルでなければ Ok です」となってしまう。
「例えば、このレベルのコードはプログラミングできるなど」って???んんんー。それは「coding interview <自分のプログラミング言語>」とかでググって調べてください。たくさん出てくるから。
しかしそのおっしゃっている「職」が海外の職の場合、注意が必要になる。
すごくよくデキる人はあまり気にしなくても、その持ち前の技術を面接なんかで披露してお好きな会社に行けばいい。本当の意味で注意が必要なのは初級レベルのエンジニアになる。
日本でも海外でもスタートアップといえども本当にクソなスタートアップがある。そういうのに捕まるとロクなことが無い。そんなクソに引っかからないようにするためにはできるだけ技術力を付けて、またそれを正当に評価してもらうことになる。
転職の技術面談なんかで次から次に難しい問題を出してきて、しかも長期間に渡って5次面談、7次面談とかやられるとさすがに疲弊してくる。「もうええかげん面談ばっかりしてねーでオファー出せよ」という気持ちになってくる。ただそこはいい事として受け取った方がいい。その後オファーが出たら「あそこまで技術的にチェックしまくって採用しているのなら、他の同僚達も同じ選考を経てきていることになる。会社としても技術に対する理解があって、エンジニア待遇は間違いなくいい」と考えられるからだ。
「自分にはあまり技術力が無いので面談で技術チェックはしないで欲しい。なるべく聞かないでくれー」と思ってたら本当にあまり技術チェックをせずにオファーが出た、となったら危険信号だと思うべし。そういう会社は技術の理解が無いし、技術を評価できてないし、あなたという人材を安く買い叩いてくる可能性が高いからだ。
仮にあなたの技術力が100点満点中50点であったとしたら、何度も何度もちゃんと技術面談をしてその50点をそのまま評価できる会社の方が実は良かったりするのだ。
これまで何度も英語圏での転職を繰り返してきたが、これでもかというぐらいにガンガン技術面談をしてくる会社はひとつの例外もなく全て「いい会社」だった。いい会社の定義は様々ではあるが、ここで言っているのは「エンジニアにとってのいい会社」だ。
海外で就労すると外国人であることからその国に暮らすためのビザが必要だし、立場の弱い外国人を守ってくれるのは自分の技術力でしかない。技術力があれば、雑に扱われることは無いし、もしその会社が気に入らなくてもカンタンに職を変えることだってできる。
海外に住んでいたものの日本への帰国を余儀なくされた方も多く居る。状況によってはクビも強制帰国もあるのが海外での就労だし、脳天気になんでも「海外に行けばー」とおすすめする訳にもいかない。ブログで海外転職をおすすめしながらも「たまたま私は海外に出て、いまだに生き残っているから文章に生存者バイアスがかかってないか?」と自問することがある。
基本的にエンジニアには海外転職をおすすめしているがそれは「英語と技術がある方」に向けている。レベルは様々でいい。ただ最初はエントリーレベルで入社したとしても、最終的には「英語と技術力」が確立されなければ、海外では苦労する。
そして「海外は大変です!」「海外ではなかなか生き残れない!」「やたら海外移住をすすめる人には気をつけてネ!」みたいな人に言いたい。
それって本当にそんなに大変か?と。
もし求められるものが100も200もあったら「えー?そんなに?」となるが本当に必要となるのはたった2つ「英語と技術」だけ。すごい天才でなくても普通に勉強した人が普通に手に入れているモノだ。ギャーギャー騒いで危険だぁー!と警告するよりも、英語と技術があれば Ok、無ければ勉強して習得すべし、とした方がよほど人のためになると思うのだが、どうだろうか。
以上がソフトウェアエンジニアとして職を得るためのレベルに対する回答でした。読み物としてまったく面白くない回答だが、真面目に答えるとこうなる。