多種多様な基準から見るプログラマの市場価値

私は毎日、Teamed.ioで働くことに興味のあるプログラマから何通かメールをもらいます。彼らへの最初の質問は「あなたのレートは?」(当社は時給ベースで給与を計算します)ということです。何より驚かされるのは、2つの方向性で、誤った試算をしているプログラマが多く見られるということです。

時給5ドルから500ドル(600円から60,000円)まで答えはさまざまです。決して否定はしませんが、私自身で代案を出してみます。このブログ記事では、どういった要素を計算に入れるか、または入れないかを述べたいと思います。私の個人的なキャリアもありますが、これが業界のスタンダードとは思わないでください。あくまで客観的で論理的だと思っていますが。それでは説明しましょう。

オープンソースへのコントリビューション

badge

ソフトウェア開発者にとってまずポイントとなり、かつ重要となる特性です。あなたはオープンソースプロジェクトに貢献しましたか? 複数のチームで共有するオープンソースライブラリを所有していますか? 一般に入手可能、あるいは使用可能なコードを書きましたか?

もし上記のどれにも当てはまらないようであれば、3つの原因が考えられます。

まず1つ目に、あなたが自分のコードに自信がなくてシェアできないということです。明らかに良くない傾向です。コードの良しあしではなく、あなたが自分のコードができそこないであるという事実に向き合い、改善する勇気を持てないことが問題なのです。当社では、コードの質に良く注意を払いますから、新しくチームに加わったメンバーはいかにチームの求めるレベルが高いかに驚きます。あなたも驚くに違いありません。問題はあなたが、その質に適応できるか、あるいは改善していくことができるか、または、諦めてやめてしまうか、どちらになるかということです。もし自分のコードをシェアしたことがなかったり、否定的なフィードバックに対処したことがなかったりしたら、私たちのプロジェクトでは居心地の悪い思いをするでしょう。求められる質がとても高いですからね。

2つ目に考えられる原因は、あなたが情熱を持たずに、食べるためだけに働き、定時で帰ってはいないか、ということです。実際、誰も公言してはいませんが、実のところ私はこんなことをよく耳にします。「うちの会社はオープンソースへの貢献度に応じた支払いをしないんだ。家ではもっと家族と時間を過ごしたいよ」。最近のソフトウェア開発業界では、扱っているコードのほとんどがオープンソース、例えばライブラリ、フレームワーク、ツール、インスツルメンツなどです。あなたが商業的なプロジェクトで使用しているものの大部分がオープンソースでしょう。給与を支払うことで、あなたの雇用者は既に、オープンソース製品に投資をしていることになるのです。なぜならあなた自身がオープンソース製品のアクティブユーザだからです。問題なのは、あなたが、コントリビューションに関して、積極的な姿勢を持たないことです。私は、それを情熱やセルフモチベーションの欠如とみなしています。あなたは、私たちのプロジェクトで有用な開発者になれるでしょうか? 無理でしょうね。というのも当社の全ての管理モデルがセルフモチベーションに頼っているからです。

3つ目に考えられる原因は、あなたがどんなコードを書くべきか、どこに対して貢献すればよいか分からないということです。つまり創造性が欠如しているということです。ここまで述べてきたように、いまや私たちの使用している製品のほとんどが、オープンソースです。これらのツールにはバグやまだ実装できない機能がたくさんあります。それなのに、あなたは改善が必要な分野が見えていないのではないのですか? より良くするにはどうしたらいいか分からないんですね? あなたが毎日使っているオープンソース製品のバグを見つけ、報告し、修正することさえできないのですか? 何を意味するかというと、あなたの問題を発見する創造性に頼っていては、私たちのプロジェクトで改善すべき分野が見つけられないということです。

よって、もしあなたのGitHubアカウント情報が真っさらで、履歴書に“Linuxカーネルに対しアクティブなコントリビュータ”と書いていなければ(するべきですよ)、私はあなたへの興味をすぐさまなくすでしょう。一方で、あなたのGitHubアカウントに100の星が付いたプロジェクトを見つけたら、興奮してより高いレートであなたにオファーをするでしょう。

地理的要因

一般的に、物価の高い地域に住んでいるプログラマには高いレートで給与が支払われています。サンフランシスコ在住のプログラマからレジュメを受け取ると、彼らのレートは時給70ドル(8,400円)以上です。同じスキルや経験値でも、カラチでは15から20ドル(1,800円から2,400円)です。この差の理由は生活費です。パキスタンよりもアメリカの方が、物価が高いからです。

しかしながら、この理由は私には論理的とは思えません。もしあなたが高級車に乗っていたら、私たちは高い給与を支払わなければいけませんか? 住んでいる場所においても同じことが言えると思うのです。あなたはどの国に住むかを選択したのです。先進国のあらゆる恩恵を受け、その対価を支払っています。あなたが選んだことです。自分で人生の質を上げるために、より多くのお金を費やすことを決めたのです。それが私にどう関係しますか?

ランチに30ドル(3,600円)かけたいですか? それなら優れたエンジニアになればいいのです。それまでは、数ドルのホットドックを買えばいいのです。ただ「すでにランチに30ドル(3,600円)かけている」というのが、ここでの議論の焦点ではないのであしからず。

つまり、物価の高い所に住むほど、懐は寂しくなるということです。私たちにとって、これは、カラチに住むプログラマが100ドル(12,000円)に対して抱くモチベーションの方が、同じ100ドル(12,000円)でサンフランシスコに住むプログラマが抱くモチベーションよりも強いということを意味します。よってコストの低い人物と働くことを私たちは優先します。その方が、投資金が効果的に使えるからです。

StackOverflow.comにおける評価

誰もがStackOverflowが有用であると知っていますが、積極的にコントリビューションしている人はほとんどいません(驚くほど少ないのです)。もしStackOverflowの履歴がゼロならば(またはアカウントを持っていないとしたら)次のことが分かります。(1)質問することが何もない。(2)答えることが何もない。

(1)についてですが、StackOverflowで何も質問していないということは、あなたは成長していないということです。あなたの教育的な成長過程は、過去のある時点、たぶん就職した直後に止まっています。または、恥ずかしくて質問できないのかもしれません。もしくは、正確なフォーマットに沿った形式で質問できないのかもしれません。あるいは、あなたの疑問はすべて回答済みなのかもしれません。いずれにせよ残念なことです。

(2)についてですが、何も回答していないということは、発言すべきことが何もないということです。大抵の場合こういう人は、複雑でありふれていない問題を解決する、という体験をしていません。すでによく知られたコンポーネントをコーディングして給与をもらっているに過ぎません。

職場で隣の同僚に聞けばほとんどの疑問は解決する、という話をよく聞きます。自分のチームはどんな疑問も内部で解決できるくらい優秀なので、単にStackOverflow(または、もしあったとしてそれと同様のリソース)は必要ないと言うのです。チームにとっては素晴らしいことですが、あなたにとっては残念なことです。なぜでしょう? それは、あなたが重要なスキルを身につけられないからです。それはインターネットという公の場で疑問を解消するスキルです。私たちのプロジェクトでは、同僚のプログラマが互いにコミュニケーションを取ることを推奨していないので、困っても誰も助けてはくれません。職場の恩着せがましい先輩に頼ることに慣れていると、いざとなって自力で解決しようとしてもうまくいかないでしょう。

StackOverflowは、あなたがいかに頭が良くて、「プログラマ向けジョーク」でどれだけ評価ポイントを得ているかについての指標になるだけではありません。知らない人たちとコミュニケーションを取りながら、疑問を解決する能力があることの証明になります。それはとても重要なスキルです。

経験年数

badge

「私はJavaのコーディングを10年もしています」。それが一体何だというのですか? この数字は私にとっては次の意味しかありません。つまり、ある職場であなたが10年間何とか生き残ったということです。または複数の職場かもしれませんね。10年間、職場のいすを温めているあなたに対して、給与を払わなければと誰かに何とか思わせることができたということです。それは、あなたが有益なコーディングをしてきたということを意味しますか? 書いたコードが完璧だったということを意味しますか? そうではありません。

経験年数は誤った指標です。前述した他の指標を組み合わせれば、実際には意味があるかもしれません。もし履歴書にプログラミング経験はほんの2年とあり、GitHubやStackOverflowのアカウントに何も履歴がないとしたら、進歩の余地はまだあります。あなたはキャリアをスタートさせたばかりです。しかし、もし履歴書に「10年の経験を持つ設計者」とあるのに、オープンソースに何のコントリビューションもしていないとしたら、それは10年間ぼんやりしていたか、設計者として役立たずだということです。

つまり、「経験年数」に関する議論は慎重に行うべきだということです。経験年数に言及する場合は、他に何か実績がある場合に限るべきです。そうでなければ、自分の胸にしまっておきましょう。

認定資格

badge

Oracle、Zend、Amazon、IBM、MySQL等の認定資格に関する話です。この認定資格を取得するには試験に合格しなければいけません。簡単なものではなく、オンラインで受けられるものでもありません。認定センターで受ける本当の試験で、コンピュータの前に数時間座り、本の持ち込みもインターネットへのアクセスもできない状況で質問に回答します。立派なソフトウェア開発者にとってはかなり屈辱的な体験ですね。実に屈辱的です。しかも不合格となる可能性が高く、落ちたらとても恥ずかしいですね。

この体験を何とかくぐり抜けたとすれば、それはとても有効な証明になります。何度か経験したことがあれば、さらに良いでしょう。しかし、もし今までのキャリアにおいて一度も認定資格を取得したことがないとしたら、その理由は以下のどれかに当たります。

1つ目は、あなたは失敗を恐れています。本格的な認定資格は、数百ドルの費用が(私はSCEAの取得に700ドル(84,000円)以上支払いました)かかる上に、不合格になっても払い戻しはありません。失敗を恐れるということは、戦いを恐れるということです。そんな人は、実生活で解決しなければならない複雑な問題に直面しても、おじけづいてしまうでしょう。

2つ目は、自分の経歴に対して投資をしていないということです。これは多くの場合、転職したくないからであり、いつまでもいられる今の平和な職場が好きだということです。以前、友人にかけた言葉を思い出します。「この認定試験に合格したら、履歴書に箔が付くね」。すると彼は微笑みながらこう言いました。「もう二度と履歴書を使う必要がなければいいと思うよ。今の会社が気に入っているからね」。この態度は、あなたが勤める会社にとっては都合が良くても、あなた自身にとっては間違いなくマイナスです。

私の経験から言えば、最高のチームプレーヤーとは、自分自身のために働く人です。健全な個人主義は成功の鍵です。もしあなたの優先目標が自分のために稼ぐこと(お金、評価、技術、または知識)であれば、当社で実力を発揮できるでしょう。履歴書の認定資格は、私たちが求める健全な個人主義の指標となります。

スキルの多様性

より多くの技術やプログラム言語を知っているほど、あなたの市場価値は安くなります。同時に多くのことに精通するのが不可能だと言うことではありません。もちろん可能です。しかしここには、競争という実際的な理由があります。「Java7のプログラマ」は市場に山ほどいるので、雇用するのはたやすいことです。一方、世間にはそれほど「Hadoopのプログラマ」や「XSLTの設計ができる人」は多くありません。

もし専門エリアに集中してその分野のエキスパートになれば、仕事を見つける機会は減るでしょうが賃金は高くなります。ニッチな分野のスペシャリストの給与は高くなる傾向にあるからで、他に選択肢がないからというのが主な理由です。もし当社のプロジェクトにLuceneのエキスパートが必要なら、適切な人材を探し採用できるよう最善を尽くします。最善というのは大抵の場合、給与を引き上げるということを意味します。

ですから、もし「MySQL、PostgreSQL、OracleとSqliteの経験がある」と言えば、あなたのデータベースに関する知識は非常に低いだろうと判断されてしまいます。

講演やブログ

badge

ブログ(プログラミングについて。あなたの好きなネコについてではありませんよ)を持っていれば非常に好材料だと思います。もっといいのはカンファレンスや会合などで時々講演しているということです。ブログの場合、記事についたコメントの量を見ます。カンファレンスでは、その講演でスピーカーになることがどのくらい難易度が高いかということが、最も重要な基準になります。

ブログ記事やカンファレンスでの発表はどちらも専門家としての価値を高めます。あなたの仕事と才能が人の目にさらされていたことになるからです。ただ1人の雇い主の見解ではなく、他数のプログラマやエンジニアが評価をしているというところに意味があります。つまりあなたの意見は信頼に足るということです。

それに、定期的にブログを書き講演をするということは、大変重要な才能を備えていることを意味します。自分のアイデアを“他人が理解できるように”表現できるということです。当社のプロジェクトでは非公式なコミュニケーションを推奨せず、代わりにチケット管理システムを使っています。アイデアや質問、また懸念事項などはチケット上できちんと説明し、他のみんなが理解できるようにしなくてはなりません。十分な表現能力がなければ、プロジェクトで生き抜いていくことはできません。

ところで、ソフトウェア開発者の中には自分の名前で特許を取得している人もいます。あなたにもできるんじゃないですか?

職歴

私は通常、履歴書のこの項目にあまり気に留めません。当社の経営モデルは他社とは全く違うため、あなたが何度解雇されたとか、正社員としてどれだけ高い職位にあったか、などということはあまり関係ないのです。たとえあなたの肩書が「Twitter社のCTO(最高技術責任者)」であったとしても、私にとっては意味がありません。

私の経験から言わせてもらえば、企業が大きくなり、そこでの地位が高くなればなるほど、ソースコードや実際の技術的な判断からは遠く離れていくものです。VP(副社長)やCTOはマネージャミーティングや社内の権力闘争にほとんどの時間を費やしています。

あなたがここ数年何を為したかということに興味があるのであって、どこにいたかとか、そこにいる間何と呼ばれていたか、というところにはありません。

学歴

IT分野での学士、修士、博士号… 重要でしょうか? いいえ、大して重視していません。学歴は、上述した「職歴」と非常に似通っています。高校を卒業した後の5年間をどこで過ごしたかということはあまり関係ありません。そこであなたが何を為したか、ということが大切です。大学名以外に大学時代での活動については言うことがないだなんて、まさかですよね。

えーと、もちろん、スタンフォードやMITなら、話は違います。それらの学校の卒業基準を満たしたということ、そこで学ぶための学費を捻出できたということが判断できます。それは有能な人材としての見込みが高いということであり、時給を上げる明確な要因になるでしょう。しかし(私が卒業した大学のような)無名の大学なら、特に書くこともないでしょう。

レート

時給100ドル(約12,000円)以上を喜んで支払うには、以下の条件が挙げられます。人気のあるオープンソース製品の所有権を複数持つエキスパートであること、StackOverflowでのスコアが2万以上、認定資格の所有、ブログ記事を書いている、プレゼンの経験、また特許を持っている場合などもあてはまります。

時給50ドル(約6,000円)以上の条件は、オープンソースプロジェクトの所有権を持っているか、積極的にコントリビューションしているプロのプログラマであることです。またStackOVerflowのスコアが5,000以上、ソフトウェア開発についてのブログを所有、いくつかの認定資格を所有している、なども挙げられます。

時給30ドル(約3,600円)以上の条件は、オープンソースコードに継続的にコントリビューションしているプログラマであることです。StackOverflowでの存在感や、認定資格の所有なども含まれます。

最低基準額は時給15ドル(約1,800円)です。

これを見て気を悪くしないでください。時給の相場は、職業のレベルを計測可能な値として表したもので、人間的な価値を表すものではありません。それに、このレベルは固定的なものではなく日々変化します。そしてその変化を起こすのはあなた自身なのです。

皆さんの成長を促すモチベーションになればと思いこの記事を書きました。

この金額はチームに参加した当初に適用される時給の基準です。いったんコードを書き始めれば成果によって査定しますから、それによって金額は一変します。時給はどのように算定されるのかを読んでみてください。

本文中のイラストはAndreea Mironiucによるものです。