回答:
はい。
あなたは両方をする必要があると私は言うでしょう。すぐに見返りが得られる#1から始めてください。これは非常に長い間行われていません。ただし、#2と#3のいくつかを実行する必要があります。
人々が私にキャリアアドバイスを求めるとき、あなたの質問は私が彼らに最初に尋ねる質問の1つです。誰もがこの質問に答えられるとは思いません。自分のキャリアの目標を達成するために、深さや幅に焦点を当てることがより可能性が高いかどうかを自分で決定する必要があると思います。
最後にチームを変更したとき、XBOX開発者ツールチームで作業するか、C#コンパイラチームで作業するという2つの機会がありました。私はそれが幅と深さの関係にあることに気づきました。XBOXチームでは、ある日セキュリティシステム、次のオーディオシステム、ビデオ、ネットワーキング、ハードウェアインターフェイスに取り組むことができます。確かに、一部の人々は専門家ですが、誰もがすべてについて少し知っている必要があります。C#コンパイラチームでは、1つの言語と1つのコンパイラに飛び込んで、すべてを深く理解することができました。
多くのことを考え、私は一時的に、多くの場合、好奇心旺盛ではなく、1つのことに精通しているほうが適していると判断しました。それは私には良い選択でしたが、あなたには向かないかもしれません。一部の人々は、すべてを少しだけ知って大成功しています。
したがって、私のアドバイスは、問題を逆転させることです。あなたがどのような人かを理解し、あなたの会社にあなたのような人のための機会があるかどうかを確認してください。そうでない場合は、そうするものを見つけてください。
専門家であることはあなたをより高価にすることができます。しかし、その高いレベルを必要とする雇用機会は、その数と地理的な両方の点で制限されます。
ジェネラリストであることは、おそらくより少ないお金を払うが、おそらく世界中であなたに多種多様な仕事の機会を開きます。
また、より高いレベルの管理職の場合は、さまざまなこと、技術、および技術を経験した人がいることが望まれます。エッジを知り、全体像を見ることができることは、貴重な資産になります。
あなたの開発段階では、ある程度の奥行きをつけることが最優先だと思います。たくさんのことを少しは知っているが、すべての知識がエントリーレベルであるため、エントリーレベルの仕事をこなすことができない人が多すぎます。
私がスペシャリストになりたいのであれば、明らかに、深さを作ることが一番の第一選択です。
ジェネラリストになりたい場合は、まず1つのスタックで深度を構築し(少なくとも中間レベルに到達)、次に他の言語に分岐します。最初にある程度の深さを構築すると、より多くの概念が利用可能になり、何を学びたいのかを知っているので、複数の言語で深さを構築する方が簡単な場合があります。それから私は少し他のものに分岐します。その後、戻って高度なレベルに深みを作り、次に再び分岐して、すでに知っているものとは非常に異なる多くのことを学びます。次に、別の領域のその深さを中間レベルに拡張し、別のことをもう一度学びます。
警告-私は特別なので、明らかに知識の深さを支持します
どちらのオプションにも代わりがあります。会社で使用されている開発スタックに焦点を当てることは、あなたの仕事であなたを助けるでしょうが、他のテクノロジーについて学ぶことはあなたのキャリアであなたを助けるでしょう。
1990年代後半には、2000年に向けてソフトウェアを準備する必要のある企業からCOBOLスキルの需要が高まりました。しかし、今日でもCOBOLだけを知っている人は、仕事を見つけるのがはるかに困難になります。
同様に、今日のテクノロジーは、ほとんどの人が引退する準備ができるかなり前に時代遅れになるため、新しいスキルやテクノロジーを学ぶことが不可欠です。
HaskellやLispのようなものを学びましょう。関数型言語を学ぶには、コードを分離する必要があるため、全体的なデバッグが簡単になります。発生する可能性がある唯一の問題は、戻りたくないということです。