これは私が長い間考えてきたジレンマです。
私は大学院生で、関心のあるトピックはプログラミング言語の設計、コード分析、コンパイルなどです。これまでのところ、この分野は非常に興味深く、やりがいのあるものでした。それを専門にしています。いつのまにか時代遅れになることのない、比較的堅実なフィールドだと思います。私はいつも、そのような複雑な分野では、専門家が話していることを表面的に理解している別の男よりも、本当の専門家である方が良いと考えていました。
一方、この方法に特化することで、将来の選択肢を本当に制限していると感じています。私は常に問題への学際的なアプローチを強く信じてきました。多分私は他の分野で経験を積むことができる一般的なプログラミングの仕事を探しに行くべきであると同時に問題を解決するために私の好きな分野を時々適用するべきです。 1つまたは2つの分野のみに特化すると、枠の外で考えることができなくなり、停滞を引き起こす可能性があります。
この選択についてもっと意見を聞きたいです。実は私はすでに選択肢の1つに傾いているので、基本的な心理学は私の心を変えるものは何もないと言いますが、それでもいくつかのフィードバックを聞きたいです。
お楽しみいただければ特化
ご存知のように、専門とすると、他のテクノロジーをすぐに利用できなくなるという機会費用が自動的に発生します(例:Javaプログラマーは、コンパイラーの最適化のためにすぐに受け入れられないことがよくありますただし、これは、選択した分野に固有の複雑さへの愛情とバランスを取る必要があります。
あなたはあなたが専門家になりたいと言います-さあ、先に進んで、あなたの選んだ分野を学ぶために時間をかけてください。私たちはコミュニティとして常に新しい専門家を必要としています。ただし、私のアドバイスは、実用的なプログラマーの推奨である"毎年新しい言語を学ぶ"に従うことです。このようにして、アルゴリズムエンコーディングの深い字句解析を行っている間、興味のある小さなiPhoneアプリを作成することもできます。あなたは決して知りません、異なるパラダイムの異種交配はあなたにあなたの専門を新しい領域に拡張するいくつかの洞察を引き起こすかもしれません。
それはあなたがあなたのキャリアに求めているものに依存すると思います...
技術レベルで:すべての取引のジャックであることは、非常に専門的な人よりもさまざまな役割に応募できることを意味します。順応性があり、動き回り、特定のニッチに縛られたくない場合、これはおそらくそれほど悪くはありません。ただし、短所は、特定の領域をより深く掘り下げない限り、おそらく比較的ジュニア/中間レベルの役割に制限されることです。
特定の分野に特化することは、上記とは正反対です。あなたはより高い地位と収入を命じることができるでしょう(もちろん、あなたが高い需要で良いニッチにいる場合)、しかしあなたはその専門にかなりの程度まで入り込むでしょう。
したがって、広い意味では、これら2つは技術レベルでの選択肢です。
政治的レベルで:管理職に昇進するなどの点で「キャリアの進歩」について話している場合、技術的に何をしているかは一般的に重要ではありません。プログラマーの役割から管理職に昇格した私が知っている事実上誰もが、組織内の人々とビジネスプロセスを非常によく知ることでそうしました。一部はスペシャリストであり、一部はジェネラリストでした(彼らが使用したテクノロジーに関して)-すべては組織に非常に深く根付いており、人々とプロセスをよく知っていて、基本的に彼らがそれらの責任を持ち始めることが論理的になりました。
したがって、基本的な意味で、管理階層を上に移動するという点でキャリアを伸ばしたいのであれば、それはすべて政治を行うことです。ジェネラリストであることとスペシャリストであることはそれほど重要ではありません(おそらく、管理するプロセスとテクノロジーのスペシャリストになるだけです)。
まず、求人情報は、多くの場合、必要な専門分野の量を誇張しています。求人情報に「私たちは何も知らないので、Javascriptについて少し知っている人が必要だ」という会社はありません。彼らは「Javascriptエキスパート」をそこに置いています。なぜなら、他のすべてが同等であり、彼らは実際にはエキスパートである誰かを得たいと思っているからです。それは必ずしも、その会社がJavascriptで実行する必要があるすべてのことに対して専門家だけが適格であることを意味するわけではありません(そして、彼らがどれほど頻繁に彼らが何をする必要があるのかさえ知らないことに驚くでしょう)。したがって、「専門家」であることをあまり気にしないでください。宣伝されているスキルに精通している仕事に応募し、面接でどのように進むかを確認します。仕事が上手になるということは、何年も[言語を挿入]を何年も続けてきたというだけではありません。そして、仕事がやりがいのある人なら、自分が専門家になるかもしれません。
それは仕事を「得る」ことです。仕事を「続ける」という意味で、JOATであることは素晴らしいことです。あなたの会社がさまざまな言語とプラットフォームの探索を始めれば、あなたはゲームの先を行くでしょう。あなたのMSベースの会社が何かのために突然UNIXの人を必要とするなら、あなたは彼らの頼りになるでしょう(その人になるか、または「専門家」の採用を処理することになります)。仕事を続けることは、何が起こっても必要不可欠であることであり、JOATはその人になるための良い方法です。
さらに、会社が非常に容易になったときに新しい仕事を得ることができます:)
はい、そうです。問題は、あなたがロックスターになることは決してないということです。 Cで他の誰もできないことをできる人には決してなれないでしょう。あなたの集中力の欠如はその種の卓越性を排除します。
一方、管理者が大量のプログラマーを買う余裕がないと決定した場合、彼らはあなたを解雇せず彼を維持します。柔軟性には利点があります。
私はジャックです。私の部門では、過去4年間で80%の削減が見られました。まだここにいます。それは、私がほとんどの人よりも集中力がないためです。私like何も知らないタスクを渡され、上司は「確かに!」彼らが思いついた奇妙なお尻のたわごとに関係なく。そして、全体像を理解すると、それはほとんどの専門家が決して達成できない一種のロックスターダムであり、それは有利になる可能性があります。
したがって、ロックスターになりたい場合は、焦点を絞る必要があります。ただし、安定性を求める場合は柔軟性を選択してください。
それはあなたのキャリアが何であるかに依存します。ゼネラルコンサルタントになりたい、自分のビジネスを始めたい、中小企業で働いている、またはそのような柔軟性が認められている資産であるその他の状況にいるなら、それはあなたのキャリアに役立つと思います。私は.NET/C#/ SQL/ASPの専門分野を追求していますが、同じ状況にあり、現在コンサルタントとして働いています。
同じように、特定のテクノロジーに特化していなくても、幅広い技術(浅いですが)を経験しながら、テクノロジーを多目的に使用してキャリアを構築することはできますか?
はい、専門分野ごとに人を雇えない中小企業を探すか、コンサルタントになることができると思います。
(あなたがより一般的なスキルを維持することに加えて、あなたが意志専門とする分野を選ぶことも悪い考えではありません。)
Generalist vs. Specialist はCIO.comの記事ですが、一方が他方よりも優れているかどうかを確認しようとしている人々の同様の記事またはブログ投稿がおそらく数十あります。それぞれに長所と短所があります。一方が他方を完全に打ち負かしたいと言いたい人は、ある程度偏っているかもしれません。
選択の両側に幻想が存在する可能性があることを忘れないでください。専門分野として見ているものには、さまざまな味があるかもしれません。たとえば、Web開発者全体をスペシャリストまたはジェネラリストと見なしますか?一部の人々は、専門化としてそれを見るかもしれませんし、他の人たちはそれが最近では多くのウェブベースのアプリケーションがある程度異なる専門知識を必要とする可能性があるあらゆる種類のコンポーネントを持つことができるので、それがかなり広いとまだ見るかもしれません。
あなたがリストに挙げた分野は、あなたがソフトウェア会社で働きたいと思わせるかもしれませんが、ある意味で同様のスキルを使用できる情報技術の一部があるかもしれません。さまざまな既製のソフトウェアでどれだけのカスタマイズが行われて機能するかを知ることができます。これは、ほとんどの企業が既製の例を示すためにどれだけの投資になるかです。
一方、この方法に特化することで、将来の選択肢を本当に制限していると感じています。
覚えておいてください。あなたの未来は何十年にもわたって広がります。
現在の技術は、新しい機会が発生するにつれて大幅に衰退するでしょう。
専門化はまったく害はありません。
私はCOBOLプログラムを作成するために紙のカードをパンチすることに特化して始めました。今私はPython=と書き、何十年もの間パンチされた紙のカードに触れていません。
テクノロジーは行き来します。あなたが今専門とするものは何でも10年でなくなり、何か他のものを専門とするでしょう。またはあなたは時代遅れになるでしょう。
「他分野での経験」を心配するのは時間の無駄です。あなたがしたいかどうかにかかわらず、あなたはその経験を得るでしょう。
私は開発者を雇うとき、私が探している特定のスキルの強さと経験を持つ人々に偏っています。採用担当者はそのバイアスを大幅に拡大します。つまり、私はあなたを雇うかもしれません(そして私は幅広いスキルと基礎知識があり、学ぶことができる人が好きです)とは決して話さないでしょう。
私自身は、常に何でも屋であり、同じ会社でさまざまな役職を歴任してきました。それでも、私は仕事を探す必要があるという見通しを恐れています。現在の給与で別の仕事を簡単に見つけることはできないと思います(これで十分ですが、ここの人々は私を知っています)。
いつものように...
それはあなたが「キャリア」によって何を意味するかによる。要は、それはあなたが「キャリア」によって何を意味するかを考えるに依存します。
最近、私はWebアプリケーションで多くの仕事をしています。私がこのキャリアを始めたとき、ワールドワイドウェブは存在しませんでした。そのため、@ Satanicpuppyの答えは非常に適切です。
Jack-of-all-trades(JOT)テリトリーには4つの利点があります。
主な欠点は次のとおりです。Excelにかかる時間ははるかに長くなります。これは、学習曲線を複数の面で押し進めているためです。
私は、15年間それ以外に何もしなかったいくつかの友人と同じくらいDBAが良いのでしょうかもちろん違います。 2週間では想像もできないような解決策をすぐに見ることができますか?はい。
最高のアドバイスは、とても魅力的な何かが見つかるまでJOTであり続けることであり、それがやりたいと思わせて、それが最後までそれだけになることです。その「それ」があなたの専門となります。
私は、新しい困難な問題を解決し、平凡なものを倒すための革新を模索し、継続的に学習するのが好きです。それが私の「それ」であり、それがI.T.
ジェネラリストであることは私のキャリアです。
企業が注目し、専門家を重視する理由の1つは、 漏れやすい抽象化 に戻ると思います。問題は、過去30年ほどの間に、ソフトウェアエンジニアがアブストラクションレイヤーの数を指数関数的に増やし、副作用がないことを確認したい限り、常に発生することです。そして、それはあなたを得る傾向がある文書化されていない特異性です。
仕様とオンラインの例を読むことで新しいテクノロジーをすぐに使い始めることができるかもしれませんが、何か新しいことを始めるとき、機能のコードの20%を費やし、最も奇妙なバグを探すのに80%の時間を費やしていることに気づいたことはありませんか見たことある?ある分野の専門家になると、この比率は特に20/80から95/5に変わります(数値を算出していますが、一般的にはおそらく近いです)。つまり、作業をはるかに迅速に実行し、落とし穴や一般的なバグが発生する前に回避することができます。たとえば、今日の初めに、私たちのシニアエンジニア(チーム/製品の初心者)が半日以上かけてスタック破損の問題を探しました。これはたまたま私の家の芝生だったため、5分で特定できました。
あなたがあなたの分野の専門家になるにつれて、あなたはより目に見えるようになり、経営者にとって貴重になります。私は他の会社については知りませんが、私が働いた会社では、あなたの報酬(少なくとも部分的に)はあなたの責任の重要性に依存します。 JOATには通常、恒久的な責任はありません。代わりに、マネージャーはそれらを移動可能/交換可能なリソースとして使用し(VP呼び出しはスイスアーミーナイフです)、要求に応じて1つのチームから別のチームに移動できます。したがって、10年間会社に留まることができます。振り返ってみると、単一の責任を獲得したことはありません。私はそのような役割にタイプキャストされた非常に良い友人(彼は優れたC++/C#開発者でもありますが、彼は仕事をするので、非常に良いJOATでもあります)を持っています。私は非常に大きくて楽しい製品の塊を私の遊び場として持っているので、彼は幸せではないことを知っています。彼は主に誰かの土地の一時的なゲストです。しかし、今、彼はそれから抜け出すことができません。
そうは言っても、JOATのスキルを持つことも同様に重要です。私は必ずしも自分をJOATとして位置づけようとするわけではありませんが、テクノロジーは変化し、たとえあなたであっても、新しいことを読んだり、勉強したり、学び続けたりすることが重要だと思います。今日はエキスパートですが、明日はまったく違う何かのエキスパートになる必要があるかもしれません。
絶対に言っておきます。
しかし、あなたは外に出てそれを手に入れる必要があります、それは新聞やオンライン求人に現れることはありません(可能性は少ないです)。したがって、専門的な仕事ではなく、さまざまな強みを発揮する仕事を探す必要があります。 「やや上手くいく」は主観的なもので、多分あなたは自分自身に厳しすぎ、控えめすぎるかもしれませんが、それは良いことです(-:
また、あなたの経験と専門知識は重要ですが、雇用主はあなたが結果を出す能力にもっと関心があります。自問してみてください:この会社の収益を向上させるさまざまな知識と経験で何ができますか?履歴書を見ていないので、頭の中で思い浮かぶのは、ソリューションエンジニア、アーキテクト(ネットワーク、アプリケーションなど)、またはCTOです。
最後に、私のアドバイスはあなたが楽しむもののキャリアを作ることです。あなたは何年にもわたって1日8時間以上それをしなければならないでしょう、そしてあなたは好きそのレートでやっていること( -;
HTH、そして最高の願い、
KM
ほとんどの求人情報は、具体的すぎたり、要求が厳しすぎたりするため、彼らと対立しています。それらは広告のように書かれていますが(おそらく他の強力さを示すため)、質問で述べた理由により、いくつかの優れたプロファイルを適用できません。
これが私が使用する求人情報です:
仕事と人の説明
.NET Frameworkに関する4年以上の経験。特定のテクノロジーの知識は必要ありません。候補者は迅速な学習者であり、新しいことを学ぶ熱意を示すことができなければなりません。私たちは次のような人を求めています:
- デジタルメディアに興味がある
- 困難を機会ととらえる
- 物事を成し遂げ、CV駆動ではない
- のビジネス面に興味がある
- 彼らの仕事にはスタートアップ精神があります言語:フランス語OR英語
スキル(必須ではありませんが、それぞれが資産になります):
- .NET Framework 4.0
- nHibernateまたはEntity Framework
- DevExpressコンポーネント
- LINQ
- WCF
- HTML/CSS/Javascript
- ExtJs
.NETの全体的な経験を除いてわかるように、他の知識は実際には必要ありません。しかし、必要なのは新しいものを傾ける能力です。
あなたは会社が彼らの仕事の説明をどのように書くかを制御することができないので、あなたは彼らを学習の機会として見るべきです。
非常に厳しい求人情報を見ると、それを新しいことを学ぶ機会だと思います。インタビュー中に(もし私がそれを手に入れたら)、私のモチベーションは物事を学び、成し遂げることなので、上に挙げたテクノロジーのいずれかでの経験の不足の影響をあまり受けないと思います。
実際、それは私が非常に速く学んだ方法です:厳しい仕事を選ぶことによって。