シリコンバレーのソフトウェアエンジニアは何が違うのか(1)
この釣りタイトルに辿り着いた皆さんの多くは、おそらく普段からコードを書かれているでしょう。
ではシリコンバレーで働くソフトウェアエンジニアは一体何が違うのでしょうか。
一言で言えば「品質の良いコードを書いているかどうか」です。
でもコードの話をする前に、文化やカルチャーについて比較してみましょう。
1.給与と社会的ステータス
まず一番違うのは「給与」と「社会的ステータス」です。アメリカでのシニア・ソフトウェアエンジニア(10年以上の経験者)の平均給与はLinkedInやIndeedなどで見ると、$100,000 - $200,000 ($1USD = 150円として、1500万円 - 3500万円)です。業種や場所、企業の規模などによって多少の上下はありますが、平均的にこのくらいです。シリコンバレーのソフトウェアエンジニアはこれに1.5倍したくらいです。
インフレ気味のアメリカの中でもソフトウェアエンジニア職というのは花形の1つであり、それなりに競争が激しいです。なのでソフトウェアエンジニアの人たちは、それなりにプライドを持っています。
2.品質の良いコードを書ける
当然のことながら高い給料を狙って、世界中からエンジニア職に対して応募があります。そうすると雇う方としてもなるべく高い能力の人物を雇いたいとなるので、熾烈な競争になります。過去の実績もそうですが、入社試験も給与が上がれば上がるほど難しくなっていくわけです。
ではその入社試験(多くの場合、ホワイトボードコーディングやGoogle Docsなどでのコーディング)のときに、分かりにくいコードを書いていたらどうでしょうか。
入社試験で何を見るかといったら「この人と一緒に仕事をしたいかどうか」ということです。
皆さんも他人のコードをレビューすると思いますが、きれいでないコード(通称:クソコード)を読むのは非常に疲れますよね。実行してみないと変数に何が入ってくるのか分からないコードというのは、頭の中でコードをシミュレートするのに疲れてしまいます。
きれいなコードというのは小説のように、上から下に読んでいくだけで流れが分かります。変数や関数の名前は目的を明確に表しており、その詳細が分からなくても何となく全体像がわかります。
なので品質の良いコードを書けるということが、1つの重要な指標になってくるわけです。
3.品質が悪いコードは、他人の時間を浪費する
例えばこんな状況を想定してみましょう。
・定時退社時刻15分前に社長からいきなり「〇〇さん、緊急で問題が発生した!何かわからないけどヤバい不具合が起きている。緊急に対応してほしい」
・今対応できるのは、あなたしかいません。
・しかもあなたはそのコードの言語を知りません
・緊急で対応をしないと被害が拡大します。
(Webエンジニアなのに、いきなりiOSアプリのデバッグを任されたと思ってください。※実話でありました)
あなたには相当のストレスが伸し掛かるでしょう。こんなときに「きれいでないコード」で書いてあったらどうでしょうか?キレますよね。
これがもし「きれいなコード」で書いてあったらどうでしょうか。あなたは普段からコーディングしていますから、全くの未知な言語でもある程度理解できるはずです。原因の特定ができれば、あとは修正するロジックをググるなり、生成AIに作ってもらうことで対応できるでしょう。
ここで言いたいのは「きれいなコードを書ける=他人の時間をセーブすることができる」ということです。この「他人」は「あなた」にもなりえます。あなたにも突然に火の粉が降り掛かってくるかもしれないのです。きれいなコードで書いてあれば火消しも簡単ですが、きれいでないコードだと火消しするのも大変なのです。
つまりきれいなコードが書けない人物は、地雷を埋め込むヤバい奴なのです。
そしてその誰かが書いた「ヤバいコード」を直すために、誰かが時間を浪費します。その人は仕事が遅れることになります。仕事が遅れれば、誰かにしわ寄せが発生するという悪循環になります。
そんな「ヤバいコードを書く人」は仲間に欲しくないですよね。
会社としても「アイツが書いたコードはバグりやすい」と分かったら、そんな人物はとっとと首にして、もっとまともなコードを書ける人を雇いたいわけです。そのために高い給料を出して、能力の高い人物を募集するわけです。
応募ポジションの給料が高いということは、それだけの責任を果たす必要があります。
Greek Alphabet Software Academyでは何を教えているのか
今回の投稿では、コードの品質についてだけ焦点を当てていますが、アルゴリズムやデータ構造、システム設計についても同様です。「私にはこれだけの力があります。だから大丈夫です!」と能力をインタビューで証明できる人物が高い給料のポジションについていきます。そしてそれを更に絞り込んだ集まりが、シリコンバレーで働いているソフトウェアエンジニアということになります。
次の投稿では「ビジネス面から見た高速開発の必要性」について触れていきたいと思います。
Greek Alphabet Software Academyでは、主に元Googleエンジニア達を講師陣に、シリコンバレー流のプロダクト開発というのを中心に教えています。アイディアの出し方、ドキュメントの書き方、高速で開発する方法、運用する方法、など、その内容は多岐に渡ります。
この記事を読んで興味を持っていただいた方は、ぜひご連絡ください
Discussion