どんな業界でもキャリアを始めるときには、期待に胸が膨らむ一方で、先行きの不安が立ちこめるものです。与えられた仕事をひたすら頑張ればいいのだろうか? それとも、将来有望なプロジェクトに狙いを定めて動くべき? 今回は、ひとりのソフトウェア開発者として、私が経験から学んだことをシェアしたいと思います。

以下に、私の経験と観察に基づく、いくつかのアドバイスを紹介します。もちろん、これがすべてではありません。経験は人それぞれユニークなものですからね。でも参考までに。

1. 仕事中に学ぶことを恐れない

寂しいことに、多くの職場にある本棚はただの飾りにすぎません。本を手に取る人はめったにいません。忙しいコアタイムならなおさらです。でも、今はコンピューターの時代。あらゆる記事や書籍が電子媒体で読めるのです。だから読んでください。与えられた仕事だけをしていても、学べることは限られます。退屈な仕事を少しばかり多くこなしたって、たいした進歩は望めません。ペースダウンして、重要な基礎を学ぶ時間に充ててください。機械学習のようなイケてる分野の専門知識を身につけたい? 一日一日着実に進めましょう。

2. キャリアを主体的にマネジメントする。自己教育と自己成長に責任を持つ

世の中の10人に1人は(もっと少ないかも)、自分を導いてくれるメンターを見つけています。メンターがいればキャリアの階段を登りつめたり、輝かしいプロジェクトにつくことも夢ではありません。残念ながらあなたが残りの9人で、今後もそうであるなら、誰もあなたをケアしてくれないということです。ならば、自分で自分をケアしてください。よりよい仕事をくれる人以外からは、仕事をもらわないように気をつけます。キャリアや学びにならない仕事は最低限に抑えてください。もっとも、キャリアに役に立たないような仕事は、あなたが少しばかり手を抜いても誰も気にもしないでしょう。少なくとも誰かの邪魔をしないかぎりは大丈夫です。また、3年後に自分が成長している姿が想像できないなら、外部への昇進(つまり転職)も視野に入れてください。

3. 過小パフォーマンスと過大パフォーマンスを認識し、どちらも避ける

あまり仕事をしないのに雇用され続けている人が大勢います。ずっとそこで働くつもりならその戦略も悪くないでしょう。もっとも私はそこまでパフォーマンスを下げるつもりはありませんが。とはいえ、パフォーマンスが低いという理由で解雇されるのは、周囲の仕事を増やしてしまうほど仕事ができない人だけです。目立たずただ手を抜いているだけの人は敵を作らないもの。一方、過大パフォーマンスにも注意が必要です。ここは会社です。教授に異議を唱えても、論旨さえ明確であれば「A」がもらえた大学とは違います。過大パフォーマンスの人は、上司や同僚に余分な仕事をつくってしまい、煙たがられます。実際、「パフォーマンス」のせいで解雇になるのは、過小パフォーマンスではなく、過大パフォーマンスの社員なのです。(企業におけるパフォーマンス管理の98%は政治です) 私は別に、一生懸命働くな、良い仕事をするな、できるだけ学ぶな、と言っているのではありません。ただ、過大パフォーマンスの必要はないと言っているだけです。私の経験でも、過大パフォーマンスは、過小パフォーマンスよりずっと危険なものでした。ヘタをすると解雇になる可能性もあります。あなたが思うよりずっと早くです。もし、どちらかを選ばざるをえない状況になったら、過小パフォーマンスへと退きましょう。

4. よっぽどのことがない限り、上司に許可を求めてはいけない

一週間かけて自主的に調査したいことがある? 許可を求めてはいけません。きっと許可は下りません。それに、許可を求めても上司は喜ばないでしょう。上司から見れば、あなたは、プロジェクトの結果が出なかったときに責任をなすりつけようとしているだけに映ります。また、たとえ許可をもらっていたとしても、上司に責任転嫁することは不可能です。上司はあなたより権限があるのですから。つまり、許可をとっても何ら得することはないのです。ということは、そもそも許可を求める意味はないということ。もちろん、事業に深刻な損害を与えるリスクがあったり、許可を仰ぐことが当然求められるケースなら、そうしてください。失敗しても損害が小さく、自分で責任をとれる範囲のリスクしかないなら、許可など求める必要はありません(もっとも、プログラミングの仕事で、数日から数週間程度の時間を自由に使えないようなら、そこにいる価値はありません)。だから、許可は求めてはいけません。ただ、実行し、やりとげてください。

5. 自主的なプロジェクトが失敗しても謝らないこと。自分の時間を使わないこと

自主的に取り組んだプロジェクトや調査がうまくいかなかったとき、失敗を認めるのは悪いことではありません。たとえそれが探求の良い訓練になったのだとしてもです。ただし、自主的なプロジェクトが失敗したことを、絶対に上司に謝らないでください。そんなことをすれば、要注意人物としてマークされるだけです。また、取り組んでいたプロジェクトについて説明したあとで、絶対こんな事を言うはめにならないように。「心配しないでください、ちゃんと休日を使ってやりましたから」 勤務時間中に自主的なプロジェクトに取り組めないような企業なら、彼らのためにあなたが自分の腹を痛める必要などありません。自分の時間を尊重してください。あなた以外にそうしてくれる人は誰もいないのですから。

6. CS666(ソフトウェア開発の政治学)を学べば、政治から解放される。学ばなければ、いつまでも政治に悩むことになる

年齢を重ねるにつれ、汎用的で移転可能なスキルに価値を見出すようになります。Spring/Hibernateよりも関数プログラミングを、quirksやJava 1.4レガシー・システムよりもアルゴリズムが大切だとわかってきます。確かに、CS666は美しいものではありません。しかし、それは業界を超えて移転可能なスキルなのです。プログラミング言語はそれほどの汎用性はありません。私は別に、政治家になれとか、政治を好きになれと言っているのではありません。そんなことには意味はありません。ただ、政治にあまりにも無知ではうまくやっていけないと忠告しているのです。また、どこへ行っても政治はあります。避けては通れない道です。人間とその振る舞いについて、早めに学び始めることをお勧めします。たとえあなたが政治に参加する気がなくてもです(若いうちは政治と無縁でいられるものですが)。Hadoopクラスタを導入するか否か、技術的な決定権を誰が持つのか、ずっと懸念材料だった問題がある機能を凍結するか否か、あなたがどのプロジェクトにアサインされるのか...。これらはすべて政治です。良くも悪くも、能力主義はソフトウェアエンジニアの見果てぬ夢に過ぎません。現実の世界では、「メリット」を定義し、その測り方を設計する側にいるほうが得をします。CS666を学んでおけば、「少しは」息をついて仕事に専念する時間が得られます。もし学ばなければ、あなたのキャリアは政治に長けた者によって支配されてしまうでしょう。

7. 無謀なことはやめろ。上司の間違いを証明してやろうなんて思わないこと

若いエンジニアはよく、自分のアイデアのほうが上司のアイデアより優れているのにそれが正当に扱われていないと感じると、膨大な時間をつぎ込んで、無謀な賭けに出ようとします。「ボスたちが間違っていることを証明してやろうぜ。俺たちがプライベートの時間を潰してがんばれば、連中も認めてくれるさ!」 残念ながらそうはなりません。プロジェクトを立ち上げるのに週末を犠牲にしなければならない状況なら(本当の緊急事態を除いて)、上司はあなたのプロジェクトにほとんど関心すら示さないでしょう。そうでなければ、そもそもあなたは十分な時間とリソースを与えられていたはず。無謀な考えに取り憑かれることもなかったでしょう。クリケットの棒でホームランを打とうとするかわりに、ゲームのなりゆきに任せましょう。また、信頼していない部下から恥をかかされたとしたら、上司はその部下が昇進したり昇給するのを黙って許したりはしません。上司は、自分が持つあなたへの悪い印象を正当化する方法を探そうとします(そして、あなたの熱意がアダとなる)。たとえ成功しても、あなたは負けます。きっと上司はこう言うことでしょう。「彼は良い仕事をしたと思うよ、その件については。でも、アサインした仕事には力を入れてくれなかった。だから、この先、彼を信頼できないと思う。彼を前例にしてはまずいと思う。それが私の考えだ」

8. 他人のケンカに口をださない

あなたがまだ若く経験が浅いなら、本当の力は持っていないでしょう。知性があれば信用されるとは限りません。他人の争いに口をはさんだり、不当な扱いを受けた誰かのために立ち上がっても、打ち負かされるだけです。『Mad Men』や『The Wire』や『Breaking Bad』(いずれも海外ドラマ)を見たことがあれば、利害が絡むと人がどうなるかご存じでしょう。自分のエネルギーは自分の戦いのためにとっておくこと。企業社会は、社会正義がまかり通る場所ではありません。ほとんどの人はストライキなど起こさず、ただ立ち去っていきます。十字軍の仲間は見つかりません。一方、自分のために戦ったのなら、たとえ敗れたとしても、必ず評価してくれる人は現れます(それは将来の財産となる)。他人のために戦っても、ルールを知らない傲慢な若者だと思われるのがオチです。

9. 何でも「善」と「悪」で考えない。どちらもうまく使い分けること

若者は、とくにテック業界では、この罠に陥りがちです。仕事や企業に「善」か「悪」かのラベルを貼り、ひどく感情的になり、大人げない反応を示します。例えばこんなふうに。「一所懸命働くなんてごめんだね。今日、上司がサムに怒鳴ってて、俺は腹が立ってるんだ」「健康もキャリアもいらない、週に90時間働いたってかまわない。だってここは超すごいスタートアップで、俺たちは世界を変えているんだからね!」

くそ喰らえです! どんな組織にも光と影があります。どこにいようと、それをうまく利用してください。上司がよく怒鳴る? だったら、その上司はあなたのキャリアの障害にはなりません。きっと彼はその上のボスから信頼されていないでしょうから。退屈なプロジェクトにアサインされた? だったらそのプロジェクトはマネージャにとっても退屈に違いありません。部下に対する監視の目もゆるむはず。週に何時間か自習の時間を確保して、次の仕事のためにスキルを学んでください。会社の雰囲気が最悪? もしあなたがそれに耐えられて、他の人が耐えられないとしたら、あなたはその企業にとって価値ある社員になります。また、その体験を学びのチャンスにもできます。何でも「善」か「悪」かで考えるのではなく、さまざまな角度から観察し、どう振る舞うべきかを判断してください。これは、年齢を重ねるにつれて磨かれていくスキルでもあります。企業のような複雑な存在物に対して、「善」と「悪」の2元論をあてはめるのは止めて、ありのままを受け入れ、うまく立ち回ってください。

10. ファウンダーになるのでなければ、絶対に年収を下げてはいけない。逆に言えば、年収が下がるなら、ファウンダーとして扱われるべきである

10%程度の収入ダウンは、業界を変えるなら許されるでしょう(金融業界からバイオテック業界へ転職など)。あるいは、生活コストの低い地域に引っ越した場合もまあOKです。ただし、ずっとそこに住むならですが...。ほとんどの人は、他人の仕事の良し悪しを評価するのが本当に苦手です。なので、とくに民間部門なら、あなたが今もらっている報酬が、あなたの実力を表す一番の指標となります。また、今もらっている年収が、今後の交渉の基準となります。年収が下がるなら、それに見合う正当な理由が必要です。かなり高い地位が約束されてしかるべきでしょう。スタートアップ企業へ移るとしても同じことです(株は計算に入れないこと!)。もしあなたが、15万ドルもらっていたヘッジファンドを辞めて、9万ドル+株(どれくらい?0.05%?)という条件でスタートアップに転職したとします。おめでとう! あなたは単なる年収9万ドルのプログラマーになったのです。この数字も決して悪くはありません。生活コストの低い地域に移住するのであれば。また、移籍先が理想主義的な企業なら(クリーンエネルギーとか)、それもありでしょう。あなたが優れたネゴシエーターであったなら、後で元の地位に戻ることも不可能ではありません。しかし、こうした正当な理由なく年収を下げるのは、まったくナンセンスな行為です。せっせと広告サービスのバグを直していても、世界は変えられないのですから。

11. エクササイズ

これは、健康、自信、セックスライフ、プライド、キャリアに関わることです。エクササイズに使った時間は、生産性の向上で補填されます。あなたが今まったく運動をしていないなら、膨大な時間を無駄にしています。そのツケは将来払わされることになります。

12. 長時間労働は、ときどきならOK、でも基本的には有害

6%の成長率と12%の成長率はたしかに違います。今あなたの年収が6万ドルだとすると、10年後には、成長率6%の場合で10万7451ドル、12%だと18万6351ドルになります。これは大きな違いです(給料の違いだけではありません。数字に応じて仕事のレベルも違っているはずです)。もしあなたの仕事が、やればやるほど指数関数的に収入がアップするような仕事なら、身を粉にして働くのもいいでしょう。そうではなく、長い目で見てもキャリアの足しにも学びにもならないとしたら、長時間労働はただの仕事中毒でしかありません。また、あなたが退屈な仕事にがんじがらめになっている間に、くそったれの上司が得をしていることに気づいてください。あなたはふたつの職務をこなしているのに、片方の報酬しか受け取っていないのです。クソ喰らえ! そんな会社はおさらばしましょう。実際、あなたが上司を必要としている以上に、上司があなたを必要としているのです。

13. 軽薄な流行を追いかけず、コアテクノロジーのトレンドを押さえるべし

「NoSQL」や「ビッグデータ」などのバズワードは、15年後には耳にしなくなるでしょう。一方、線形代数を完璧に理解したら、生涯役に立ってくれます。目下のところ、「データサイエンス」というバズワードが流行っていますが、実態があるのはごく一部だけ。「NoSQL」というかっこいいワードも流行っていますが、普通に「リレーショナルでないデータベース」と言うほうが適切です。長い目でみたときに、本当に学ぶ価値があるコアテクノロジーはどれで(例えば関数プログラミング)、ただの流行りモノはどれかを見抜くのは、あなたの仕事です(若いうちはがんばって推測してください)。流行りモノも確かに役には立ちますが(今すぐ仕事が欲しいときなど)、それに時間を使い過ぎないでください。バズワードばかりを追いかけて、基礎がなっていないプログラマーは、出来の悪いコードしか書けないもの。それに、せかっく身につけたガラクタが時代遅れになったら、また新しいガラクタを追いかけねばなりません。

14. 最後に。できるかぎり多くを学ぶこと。すごく大変なことだけどね

繰り返しになりますが、政治を十分に学んだら、やはり技術のレベルアップが重要です。あたたがもう学生ではなく、大学に戻るつもりもないなら、学び続けることは簡単ではありません。本当に頭のいい人たちだって、最新の論文を読みこなすのは難しいと言っています(そもそも論文がうまく書けていないという問題もあるけど、それはまた別の話)。複雑な数式を見てすぐに理解できる人など滅多にいません。世界の偉大な頭脳たちが何百年もかけて発見したものでも、ひとたび発見されれば、一般の人が理解できるくらいには簡単なものになります。とはいえ、依然として難しいことには変わりありません。優れたプログラマーになりたいなら、あなたはひとりの大人として、学部生の95%(そして、おそらくは大学院生の65%)よりもハードに勉強しなければならないでしょう!

What do software developers age 30 and over know now that they wish they had known in their 20s?|Quora

Michael O. Church(原文/訳:伊藤貴之)

Image adapted from Family Business and isak55 (Shutterstock).