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