最近「就職説明会」に行ったところ、候補者たちが慣れ親しんでいるプログラミング言語を職場がいかに重視しているかに驚いた。
私の(確かに限られた)経験から、プログラミング言語を本当に習得するには数年かかる場合がありますが、それを合理的なレベルに習得することは、すでに他の言語の経験があり、雇用主が通常割り当てる時間枠内に間違いなく収まる人にとってはかなり簡単なことです。最初のランプアップ。
雇用者は、私が現在習熟している特定のテクノロジーとは対照的に、私がよく知っている言語/パラダイムの数、または私のアルゴリズム/ソフトウェア設計の経験についてもっと気になると思います。
Java、C++、Smalltalk、およびPrologをすでに知っているとしましょう。Objective-Cに依存している職場では、その言語の経験がないため、本当に資格がないと見なすべきですか?これは採用方法の欠陥ですか?ある場合、Objective-Cの経験の不足が問題ではないことをその職場に納得させるにはどうすればよいですか?私は、前述のプログラミング言語について具体的にではなく、仮説的に尋ねています。
または、私の経験は限られていて、何かが足りないかもしれません。プログラミング言語の以前の経験は、私が思っているよりも重要ですか?ジュニアでもシニアでも違いはありますか? すべきそれは違いを生むのか?
プレスリリースとは対照的に、それは現在雇用者の市場です。
つまり、彼らは自分の要件が何であるかについて単にうるさいことができます。これは、3.5の経験だけでなく.NET 4.0の経験も要求できることを意味します... Pylonsなどだけでなく、Djangoの経験も要求できることを意味します...
確かに、あなたはRubyについて数週間で知る必要があるすべてを学ぶことができ、Railsは推測するだけで数ヶ月かかるかもしれません)に堪能...
しかし、雇用主は人々の履歴書を選択することができますすでに Ruby&Rails。
TL; DR:Econ 101 ...プログラマー不足についての誇大宣伝を信じないでください。
主な問題は、優れたプログラマを雇う方法を誰も本当に知らないということです。第二の問題は、プログラミングの仕事が多くの応募者を引き付けることです。
履歴書が大量にある場合、それらをくまなく調べて優れたプログラマーを選べるのは非常にすばらしいことですが、その方法は誰にもわかりません。ほとんどの企業が機能する方法では、最初のソートは通常人事によって行われます。人事担当者は、「C++ AND Smalltalk-この人はObjective-Cで問題はない」と考えるソフトウェア担当者とは異なり、要件リストにリストされている場合を除いて、SmalltalkまたはC++について何も知りません。
スタックが採用担当マネージャーに渡ったとしても、誰にでも面接するには多すぎる可能性が高いため、採用マネージャーは何らかの理由で履歴書を破棄しなければなりません。それがC++の仕事であり、マネージャーが面接するのに実用的であると考えるよりも5年以上長いC++の人がいる場合、マネージャーはC++のない履歴書をすべて投げる可能性があります。最高の人材を手に入れる方法ではありませんが、最高の人材を雇う方法は誰にもわかりません。履歴書に基づいて意思決定が制限されている場合、C++の経験がある人は少なくとも少しは優れています。賭け。
裏返してみましょう-Objective Cを知っているなら、C++プログラマーとしての使用はありますか?言語はあまりにも違います。 Cのような単純な言語でも、誰かを雇う前に6か月の経験をC++で数年間見たいと思います。
数年前、私はPHPを独学しました。それが上手くなり、ライブラリーの周りに自分の道を見つけ、一般的なイディオムを理解できるようになるまで数ヶ月だったと思います。そして、私はたくさんの言語をすでに知っていました。
コンテキストのさまざまな側面に依存しています。役割のレベルだけでなく、プロジェクトと会社の状態も。
最も単純なレベルでは、中括弧の命令型言語は他の言語とほとんど同じです。
命令型でコーディングできる場合は、命令型でコーディングできます。それがJava、C#、C、C++、あるいはJavaScriptであっても。きちんとした参考書(そしておそらく少し定型文)があれば、午後に他のプログラムの小さなプログラムをノックアウトできるはずです。
履歴が何であれ、ループのブランチと関数について知っており、構文はそれらすべてでほぼ同じです。履歴がOOの場合、オブジェクト、クラス、インターフェースについても知っています。
しかし、宣言型または関数型の言語で単純なプログラムを書くのに苦労している命令型のみのプログラマーが多すぎるのを見てきました。私がErlangショップを運営している場合、C++を使用している人よりも、Erlangを使用している人、または少なくともPrologの経験を強くお勧めします。
役割のレベルによって異なります:
ジュニアロールの採用:
C++ジョブのプログラマーを選んでいた場合、候補者が回避できることをかなり確実にしたい特定の落とし穴があります。たとえば、メモリや配列の長さに注意を払う必要があるためです。自分(と私)を足で撃たないでください。彼らがCまたはC++を行ったことがない場合は、インタビューで解決する必要があります。
そして上級職の場合:
効率的にプログラミングするための鍵の1つは、自分で書いてはいけないことを知ることです。その鍵は、標準(および事実上の標準)ライブラリです。その鍵は経験です。 「Teach your Java」で1週間座るだけで、10年のC++プログラマーから10年のJavaプログラマーにすぐに身を変えることはできません。
プロジェクト/会社の状態によって異なります
ほぼ白紙のJavaプロジェクトを考えると、私は新入社員にJavaエコシステムについて多くの知識を持たせ、利用可能なさまざまなテクノロジーについて助言してもらいたいと思います。
成熟したJavaプロジェクトを考えると、上級JavaロールのJava経験がほとんどまたはまったくない、経験豊富なC++開発者を喜んで検討します。エコシステムの決定のほとんどはすでに解決されており、新しい採用者はJavaライブラリの経験を積むことができ、会社はOOソフトウェア開発におけるプログラマーの経験を活用できます。
職場によって異なります。彼らが非常に忙しい場合は、Objective-Cで機能できるようになるまで待つ時間がない可能性があります。
一部の職場では、他の言語に精通していること、強力な基礎知識、ビジネスドメインの知識を持っていることがわかった場合に、リスクを冒してもかまいません。それは、彼らがどれほどオープンであるか、そして採用担当者にそのリスクをとるように説得する上でどれだけ優れているかに本当に依存します。
採用は難しいです。良い人を雇うことはさらに難しいです。 500を超える履歴書のスタックに直面した場合は、採用を完了しました。いい加減に、スタックをリーズナブルなサイズにしたかったので、経験が最も少ない人々を除外しました。たぶんその言語を知らない、たぶん知らない優秀な候補者にとって、それは公平なことです。しかし、私が探している資格を持っている100人を見つけることができれば、実際には、どれほど優秀であっても、そうでない400人に多くの時間を費やすことはありません。
現在採用中の要件の長いリストがあるかもしれませんが、通常は1つまたは2つだけが取引ブレーカーです。そして、あなたがインタビューしたい資格の最初のリストを持っている人が見つからない場合(または後ですべてが私が見たインタビューに失敗した場合)、通常、彼らは戻っていくつかを欠いている人々を調べますそれほど重要ではない資格や、似ているが同じではない人々のそれらのケースでは、多くの場合、すべての技術的資格を持つ人よりも、自分の仕事に適した人の経験について何かを探しています。たとえば、別のエンタープライズデータベースの経験を持つデータアナリストが私のビジネスドメインでの経験がある場合は、そのデータアナリストを検討します(実際、すべての履歴書を見れば、その人がおそらく最初のカットを行うでしょう)。 C#やJavaなどでも同じことが言えます。その人が同様のレベルの複雑さの作業を行っている場合、特に同様のビジネスドメインで、他の言語を使用している場合でも、彼らは非常に良い候補者である可能性があります。
ただし、入門レベルの人々を対象としたかなり正式なトレーニングプログラムがない限り、言語の最低限のスキルセットを満たしていない人々を採用する可能性は低くなります。そして、私が求めていたもののどれも持っていなかったグループからはほとんど決して。経験のない人は、相殺する資格や、どの言語でもプロレベルの仕事ができることを証明する実績が少ないという点で、表に出す必要が少なくなります。彼らは、私たちが使用する最も重要な言語をある程度理解せずに、最初のプロのギグで学ぶのに十分です。そして、彼らを雇うことは、あなたが彼らから有用な仕事を得ることができるようになるまでに何ヶ月もかかるかもしれないというより大きなリスクです。
採用担当者がチームを新しいテクノロジーに移行させる場合は、さらに重要なポイントが生じます。チームの誰も真にテクノロジーの専門家ではなく、私も新しい人を雇わなければならない場合、私はそのテクノロジーで見つけられる限りの専門知識を持つ人を雇うと考えます。 "回避します。
最後に、指定された要件をすべて満たしていない場合でも、興味のある仕事に応募してください(ただし、いくつかの条件を満たしてみてください。採用担当者は、決して採用されない人に時間を浪費したくありません)。あなたは、あなたが仕事のためにどのような競争をしようとしているのか、履歴書を上映したりインタビューをしたりする人々に最も印象を与えるものは決して知りません。 A社で面接を受ける可能性があるのは、紙面で同様の要件がある場合でも、B社で面接を受けるのを妨げる正確な理由かもしれません。さらに、彼らはまだ宣伝していないあなたの資格をよりよく満たす仕事をしているかもしれません。しかし、彼らがあなたのことを知らなければ、あなたはその仕事について考慮されることは決してないでしょう。
すべきそれ?いいえするそれですか?はい、残念です。これは「紫リス」症候群です。会社は、ケーキを手に入れて食べて、必要な、または必要な可能性のある太陽の下ですべてを実行できる候補者を取得したいと考えています。多くの場合、ただし必ずしもそうとは限りません。理由は、A)実際に必要な開発の手がかりがなく、基準のすべてを満たす誰かが仕事をすることができると仮定するだけです。彼らはH-1B /グリーンカード/プロモートを内部から提出する予定ですが、実際の仕事を宣伝しているように見せなければなりません。
「Java、C++、Smalltalk、Prologをすでに知っているとしましょう... Objective-Cに依存している職場では、その言語の経験がないため、本当に資格がないと見なすべきですか?」
Objective-Cと同様の機能を備えた3または4言語で20年以上の経験がある場合、おそらくObjective-Cを採用して、6〜8週間で生産的になることを期待します。 (これは、数年前のObjective-Cの学習に関する個人的な経験に基づいています)。
学校を出てすぐに環境に優しく、実際に具体的な実務経験がない場合は、まったく慣れていないことをするために雇われることはないでしょう。
ここではObjective-Cは興味深いストローマンです。 Cを十分に理解している必要があります。オブジェクト指向の分析と設計を十分に理解している必要があります。ほとんどの場合、C++を知っている必要があります。おそらくインターフェイスしたいC++ライブラリがあるので、取るに足らない範囲です。
手動のメモリ管理、および自動メモリ管理/ガベージコレクションの仕組みと、同じプログラムで各手法を使用するタイミングを理解する必要があります。
Objective-Cは、Apple環境以外では役に立たず、Cocoaを知る必要があるため、実用的な目的では、CocoaとPOSIXを知る必要があるだけではありません。同じように。
また、Cocoaが失敗した場合、Cocoaラッパーで希望どおりの処理を実行できない場合に使用するPOSIX APIを知る必要があります。
また、Unixについても重要な程度に知っておく必要があることも意味しています。
言語/個人によって異なります。
私がC#の場所で、Java/J2EEの経験がある人が応募した場合、私は試してみます。 C#と&Javaの間の構文は違いありません。コーディングはコーディングであり、違いに慣れれば問題ないと思います。
Java-> C#からも同じです。
さて、あなたがC#の人でC++の仕事に応募した場合、経験を見てみたいと思います。違いが多すぎます。
ええ、それは状況に依存します
OPは、多くのパラダイムで経験を積んだプログラマーが簡単にもう1つ追加できる方法については行き詰まっていると思いますが、すべては雇用主のリスク嫌いに帰着します。ツールに慣れていない潜在的な採用者はワイルドカードです。彼らは本当に素晴らしいかもしれませんが、フロップになることもあり、インタビュアーが使用するテクノロジーについて詳細に質問できない場合、インタビュアーが違いを伝えるのは通常より困難になります。
これが正しい見方だとは言っていませんが、一部の雇用主はそうしています。賢い人はこれを利用してC++で30年の経験を持つ素晴らしいプログラマーをすくい上げますが、愚かな人たちは15年のRuby on Railsの経験です。プログラマーは、情報が不足している雇用主との雇用を避けることで、これを利用することもできます。結局のところ、体系的に悪い採用決定を下す場所で働きたいのは誰ですか?
一部には、人事が実際に役割を理解していないため、HRが流行語を職務記述に投げ込むことについてです。そのため、6か月間しか存在しなかったテクノロジでの3年の経験を示す職務記述のコミカルな状況に遭遇することがあります。
すべきが違いを生むかどうかについては、実際には役割と個人に依存します。採用を行うほぼすべてのマネージャー(確かにすべてが優秀なマネージャー)は、仕事の説明に1つまたは2つの箇条書きが不足している場合でも、ほとんどの領域で多くの強みを持つ候補者を渡すようにHRに指示します。しかし、それは一般的に最近の卒業生には当てはまりません。私は、クライアントとのやり取りや、主要なチームなどとやり取りした、素晴らしい仕事の経験がたくさんある人のように話しています。
雇用者は、私が現在習熟している特定のテクノロジーとは対照的に、私がよく知っている言語/パラダイムの数、または私のアルゴリズム/ソフトウェア設計の経験についてもっと気になると思います。
開発スタックを構成するすべての要素を見たことがありますか?たとえば、ソフトウェアの作成に誰かが使用する環境を構成するIDE、テストフレームワーク、継続的インテグレーション、バージョン管理、開発方法論、およびコードパラダイム。これは、一部の企業がゼロからピックアップするのではなく、誰かにすでに知ってもらいたいツールの数になる可能性があります。雇用者の市場についてのironcodeのポイントは、ポジションをめぐる競争が激しく、企業が空を狙って獲得できる可能性があるため、別の要因です。
その環境についてより具体的な例を示すために、私が作業する場所を以下に示します。VisualStudio 2008は、C#をほとんど使用してASP.Netを実行し、nUnit、Cruise Control.Net、Subversion、Agile/Scrum、手続き型、OO 、どこを見ているかに応じて機能します。私がJavaに切り替えたい場合、これは雇用主がその役割で私を雇うコストとして吸収したくないものであるかもしれないこれらの機能の多くのための新しいツールに慣れることを意味するかもしれません。また、そのバージョンでの経験がある人は他の人よりもよく知っているかもしれませんし、そうでなければ誰かが「なぜそれをそのように構築したのですか?」