Googleでエンジニアが稼ぐ為に必要な11スキル

google-485611_960_720

以前はてなのトップエントリーでGoogleで1400万円以上稼ぐエンジニアになるためにマスターすべき11のスキルという記事が紹介されていた。

とてつもない技術レベルが要求されるのでは?と思っていたが、日本で働く一般のエンジニアでもマスターしているかもと思える技術が幾つかあった。

これからもエンジニアとして生きていこうとお考えの方には、今の自分がどれだけエンジニアとして技術力があるか振り返るキッカケになるかもしれない。

ちなみにGoogleで働くエンジニアの良さについて、高い技術力を有したエンジニアの多い環境で働けることは幸せだが、圧倒的な高額収入も魅力の一つ。

最初のインターン期間で7万ドル(約850万円)〜9万ドル(約1100万円)が支給されるそうだ。正式なソフトウェアエンジニアとして採用されると年間11万8000ドル(約1400万円)を稼げるらしい。

スポンサーリンク

基礎の習得 〜 コンピューターサイエンスの基礎

motherboard-1219352_960_720

かなりざっくりと書かれていたが、コンピュータサイエンスの基礎知識とは主に以下のような事だと思われる。これら分野に書かれた参考書は難しい言葉が並んでおり、頭が痛くなるものばかりだ。

  • OSについて(プロセス、スレッド、CPUスケジューリング)
  • 計算理論(オートマトン、正規表現、文脈自由文法、チューリングマシン)
  • ハードウェア(メモリ、CPU、キャッシュなど)
  • 情報論理
  • データベース

挙げればキリがないが、エンジニアであればデータベースは常日頃から触っても、残りは新人教育時代に少しかじった程度。私にはここらへの知識がごっそり抜けているのでエンジニアとしての基礎知識は抜けている。

本当の意味でエンジニアとして生きていきたいなら、多くの方が嫌う基礎分野も学習する必要があるかな。職業プログラマとして生きていくと割りきっているならば勉強しなくても生きていけないことはないかも…

少なくともひとつ、オブジェクト指向の言語を学ぶ

C++/Java/Pythonなどのオブジェクト指向プログラミング言語を少なくとも一つ以上習得とあるが、一応業務で使っていても何を持ってマスターと言えるかも。

業務経験が何年とか、これが出来ればとか、こんなものが作れるレベルならと基準が…

ちなみに代表的な言語には以下のものが挙げられていた。

  • C言語系(C/C++/C#)
  • Java言語
  • P言語系(PHP/Perl/Python)
  • Ruby
  • Swift

オブジェクト志向言語をしっかりと一つ学べば応用は効くのでJavaを勉強していると潰しが効く。ただしGoogleの求めるレベルはかなり高水準だと思われます。最低限オライリーの参考書は知っておくべきかもしれない。

その他のプログラミング言語HTML/CSS/JavaScript

graffiti-569265_960_720

デザイナー寄りの技術習得について書かれていたが、大手SIerで大規模システム開発など役割分担が進んでいる現場にずっと常駐していると基礎知識すらままならない方が意外に多い。

本当の意味で出来るエンジニアを目指すならば、サーバーサイド業務が中心でもフロント側の基礎知識くらいは習得すべきだろう。

やはり自分一人で何かサイトやサービスを一から作ってみることが大切!!

ここらへの知識は日々進化しており、Googleがどこまでの水準を求めているか微妙ですがスマホ対応も求められるのかも。

自分のコードをテストする

quality-787663_960_720

Googleはバグを発見するためにテストを行い、自分のコードを壊せる人材を求めているそうだ。テストも奥が深く、昨今ではテストのみを行う会社すらあるくらい。

テストと聞かされると、つまらない面倒な作業である印象が拭えないが、設計・開発に比べて単価も安く軽んじられる傾向にある。

若いエンジニアの多くが単に手を動かすだけがテストを思い込んでいる節があるが、何故この試験をやるかや試験の観点を理解したり、検証漏れがないか、煩雑な試験の簡略化など求められる技量は挙げればキリがない。

本当の意味で深くコンピュータサイエンスを理解していなければ、自分が作ったプログラムを壊すことは出来ないのかもしれない。

理論数学の予備知識

geometry-1453829_960_720

コンピュータサイエンスに似通っているが私は完全に抜けている。もう三十路になるとここら辺の勉強をする気が全く起こらない。

アルゴリズムとデータ構造への理解能力

data-1188512_960_720

Googleではスタックキューなどの基本的なデータタイプの学習と、クイックソートマージソートヒープソートなどのソートのアルゴリズムについて基礎知識を求めているとか。

新人時代に基本情報技術者試験の学習をしていれば多少は勉強するが数年働けば忘れてしまう。正直コンピュータサイエンスやアルゴリズムの知識が求められない案件も多く、その事が手伝ってか一度勉強しても使う事なく記憶から消えていく。

オペレーションシステム(OS)に対する知識

android-604356_960_720

OSの知識と言われても何を求められるのか。

業務ではLinux系サーバーを触る事が多くターミナル作業には慣れていたが、恐らくもっと深い部分について求められるはず。

昨今ではWEB業界でもスマホアプリ開発やWebサイトのスマホ対応化の案件が幾つかあるが、Windows、Linux、MacOS、Andorid、iOSなど本質的なことは知らずとも触れておく事は大事かも。

AI 〜 人工知能への精通

tokyo-1079524_960_720

最近はディープラーニングやらAI関連の話で持ちきりだが、Googleは自動運転に本気で乗り出している。なかなか個人レベルでは関わり合いの少ないカテゴリだが、最新のニュース記事を読んでおくことくらいは必要なのかもしれない。

コンパイラー作成の習得

mobile-phone-426559_960_720

まあ余程プログラミングが好きな方やプログラムマニアでもない限り、自分で一からコンパイラを作るなんてことはしないだろう。ネットで「コンパイラ 作成」とかで検索してみると個人レベルでコンパイラを作成している方がちらほらいるようだ。

ちなみに典型的なコンパイラは以下の段階を踏むみたいだよ↓↓↓

  • 字句解析
  • 構文解析
  • 中間コード生成
  • 最適化
  • コード生成

JavaやPHPの参考書でも内部的にどのように字句解析されているか等の説明は記載されているが、自分で手を動かして作ればより理解も深まる。私は絶対にやらないけど。

暗号化の手法

home-589068_960_720

暗号化含め、セキュリティー周りは日々進化している分野。

Googleレベルとまでは行かずとも、基本情報に頻出される公開鍵方式やSSHの仕組みくらいは理解しておくべきだろう。これも一般IT企業で働いていれば、そこまで求められない気がする。

並行プログラミング

programming-942487_960_720

この分野も余程のマニアか、研究職の方でなければやらないんじゃなかろうか。

DeNAのエンジニアがやっているみたいなことを何かのニュースで読んたが、三流エンジニアの私には一生関わることのない分野かも。やはりGoogleに入社するようなエンジニアは技術自体が好きで突き詰められる、そして幅広い分野に精通していなければ厳しいみたいだ。

スポンサーリンク
スポンサーリンク