前回のインタビューで、「0から10まで、プログラマーとしての自分をどのように評価しますか?」という質問がありました。
自分のスキルがどれだけ優れているかを測定するための指標を知らないため、答えるのが非常に難しい質問だと思いました。さらに、パフォーマンスがどれだけ優れているかを知ることは、より優れたプログラマーになるために何を改善する必要があるかを理解するのに役立ちます。
それで、あなたがあなたの仕事をどれだけうまくやっているかを知る方法はありますか?
以前の雇用主に電話して、古いコードをすべて継承した人と話してください。彼らはあなたがどれだけ優れたプログラマーであるかを教えてくれます。;)
それは難しい質問です。純粋に内省的な観点から、「優れたプログラマーシップ」の最良の指標の1つは、これだと思います。あなたは自分の技術をどれだけ楽しんでいますか?私はたくさんの開発者に会いましたが、そのうちのいくつかは非常に優れていますが、9-5の開発者であり、平凡な結果よりも優れたものを管理している人を知りませんでした。
もちろん、内向きに見ることは能力を測定する最良の方法ではありません。私はあなたの仲間のプログラマーがあなたにかなり堅実な答えを与えることができるだろうと思うべきです。そのような質問の言い回しには社会的なエチケットが含まれていますが、その可能性はまだあります。私の経験では、あなたが間違えた場合に混乱を片付けなければならないのは彼らであるという理由だけで、あなたが一緒に働いている人々はあなたがどれだけうまくやっているかを最もよく理解するでしょう。:-)
最後の一口:プログラミングは問題解決であり、純粋で単純です。やってくる難しい問題にどのように取り組むかを考えてください。まず、難しい挑戦にどのように感情的に反応しますか?次に、コードはどのようになりますか?ジャングルにたどり着くまで、盲目的にジャングルをハックしますか?ある種の結果ですか、それともあなたのアプローチは系統的で、よく測定され、(最も重要なことですが)徹底的に研究されていますか?本当に優れたプログラマーは、すべてを知っている人や、ダイクストラのアルゴリズムを8つの言語で実装できる人ではありません。彼らは、教科書やあいまいなブログに何時間も費やして、まさにそのようなアイデアの小さな塊を見つける人です。目前の問題に決定的に重要である。深い挑戦に取り組む忍耐力と情熱、そして他の人にアイデアを求める謙虚さを持っているなら、あなたはその「10」への道を順調に進んでいます。
10-あなたは本当に何も知らないことを知りません。
9-あなたは自慢しているだけで、おそらくあなたが思っているほど良くはありません。あなたが本当にこれほど優秀だとしても、「9」を選ぶことがあなたについて何を言っているかを知るための政治的スキルが不足しています。それ、またはあなたは業界でかなりよく知られている/崇拝されています(つまり、あなたは一度本を書き、それは「The ______ Book」のようなニックネーム、またはほとんどの開発者がすぐに認識する頭字語を持っています)、そして投げることを恐れませんあなたの名前。
8-あなたはとても上手で、それを知っていますが、9または10を選ぶことの柱頭を理解するのに十分賢いです。あなたはそれをバックアップすることができたほうがよいでしょう。
7-あなたはとても上手ですが、学ぶべきことがたくさんあることを知っています。
6-あなたは有能で、学ぶことがたくさんありますが、あなたの能力にはあまり自信がありません。あなたは7ではないのですか?
5-まともなジュニア開発者 あなたは学校を卒業したばかりで、実際のプログラミングについて何も知らないことに気付くほど賢いですが、コードを一緒にハックする方法は知っています。
4-平凡なジュニア開発者 あなたは学校を卒業したばかりですが、基本的なコーディングスキルにはまだまだ足りないものがあります。ほとんどのプログラミングクラスに合格するのに苦労しましたが、何らかの理由で、ソフトウェア開発のキャリアを追求したいと思ったのです。また、あなたは自分自身を本当に信じていないのに、なぜインタビュアーが必要なのでしょうか?
3以下-プログラミング能力にあまり自信がないのに、なぜプログラミングの仕事に応募するのですか?
したがって、面接対象の仕事の種類にもよりますが、「正解」はおそらく5〜7です。8は十分な経験を持っているので、彼女はこの質問をしません。
このインタビューの質問は、実際にはあなたが開発者としてどれほど優れているかについてではありません。それはあなたがどれだけの自己認識を持っているか、そしてあなたがどんな数字を提示したとしても(インタビュアーに)どれだけ正当化するかについてです。
インタビュー中にこの質問に答える正しい方法は(哲学的な答えとは対照的に)、最も強い分野を選択し、それらの特定の分野の開発者の上位X%にいることを示すいくつかの良い証拠を作成することです。
たとえば、信頼性の高いソフトウェアを作成する場合、それがあなたの専門分野の1つであるため、上位Y%にいると言うかもしれません。次に、いくつかの例を挙げます。あるいは、開発スキルを判断する合理的な方法は、どれだけのお金を稼ぐかということです。
あなたがすべきではないことは、文字通り質問をすることです。それは通常、インタビュアーが望んでいることではありません。
そのインタビューの質問を何年も使用した人を知っていました。最高のプログラマーは自分自身を 7 点前後で評価する傾向があると彼は言いました。しかし、一度も会ったことがない場合、彼らは誰から本当のスキルを学んだのでしょうか? もちろん、例外もあります。しかし、コミュニティに慣れている場合は、例外が誰であるかをおそらく知っているでしょう。
ちなみに、この現象はプログラミングに限ったことではありません。私はそれが多くの種類のことで真実であることを発見しました。10 点満点中 10 点で自己評価する人は、通常、あまり良くありません。X が非常に得意な人は、X が得意な他の人を見つけたので良い人です。そのため、自分自身をより困難な仲間のグループと比較し、一般的に 10 で自己評価することはありません。私はこれが真実であることを発見しました。卓球やチェスをするのと同じくらい遠く離れた X の値。
将来の開発者にインタビューする者として、この質問に対する最も安全な答えは 6 から 8 の間だと思います。平均的な回答は 7 前後だと思います。無能な人 (0 ~ 5) または無知な人 (9 ~ 10) を除外する方が実際には多いと思います。9+ に答えることにした場合は、それを証明する準備をしてください。
自分自身でこの質問に真剣に答えようとしているのであれば、プログラマー コンピテンシー マトリックスは、そのような評価が含むべき領域の優れた出発点であると言えます。
どのプログラミング言語にも3つのレベルの習熟度があるようです。
これは1->10のスケールに沿ってあなたを連れて行くと思います
ある言語の深い知識が別の言語の学習の妨げになる可能性があることは注目に値します。言語「A」の観点から考えると、言語「B」を学ぶために脳を再配線する必要があるからです。明らかに、これは完全に異なるタイプのプログラミング、たとえばC-> C ++、C#-> F#、Java-> Scalaなどに移行する場合にのみ当てはまります。したがって、抽象的には「完璧なプログラマー」になることは不可能だと思います。
あなたのプロジェクトのオイラー評価がヒントになるかもしれません (あなたのスキルではなく、最後まで諦めないというあなたの情熱):
「1 から 10 までの範囲で自分をどのように評価しますか?」に対する完全に有効なアプローチの 1 つです。自己評価に固有の問題を指摘することです。その魅力的な論文の実験結果を要約すると、次のようになります。
自己評価の 50% は嘘で、残りの 25% は間違っていると合理的に要約できます。したがって、ドローンがあなたの時間を無駄にしているのか、それともあなたを心理的に評価しているのかをインタビュードローンに尋ねることができます....
さらに、パフォーマンスがどれだけ優れているかを知ることは、より優れたプログラマーになるために何を改善する必要があるかを理解するのに役立ちます。
実際に何を改善する必要があるかを知ることは、あなたがどれだけうまく機能しているかを理解するために重要です。一緒に仕事をしている人や交流している人を見て、自分がもっと上手くやってほしいと思っている人たちについて考えてみてください。それはゆっくりとあなたがより良いプログラマーになるのを助けます。成長するにつれて、他のチームやソースコード(他のオープンソースプロジェクト)を調べて、自分自身をさらに向上させるのに役立ててください。
自分自身を評価するという質問に答えるより良い方法は、私が一緒に働いた他のすべての人に対して自分自身をxパーセンタイルで評価すると言うことだと思います。
簡単な答えは、あなたはあなたの仲間に対してあなた自身を測定するということです。つまり、何も知らない人を連れて0を割り当て、個人的に知っている最高のプログラマーを連れて10を割り当てます。この2人と比較して、自分自身をどのように考えていますか。最高に近い?それは8になります。ミドル?それは5になります。
0または10と答えないで、客観的になるようにしてください。質問のポイントは、プログラマーとしてあなたを評価することではなく、自己評価であなたのスキルを評価することです。あなたの洞察、つまり。
優れたプログラマーを測定する指標は 1 つだけです。LOC/hr です。他のすべてのメトリックは不要です:p
ここでかなり貴重な議論。楽しかった。私はインタビュー対象者として、次のように答えたいと思います。
最初に質問を分析したいと思います。
分析は、言語、フレームワーク、問題の性質など、いくつかのことに依存します(私はPHPとWordpressの人なので、答えはこのコンテキストにあります)1.プラグインパッチの作業、2。ゼロからの構築、3。apiの使用法
私の一般的なアプローチは(ほとんどの場合)1。機能の特定の(またはすでに構築された)範囲を理解する(現在の問題ステートメントと比較して)2。解決するための最良の方法の1つを検討する(時間…)3。コーディング4.リアルタイムシナリオでのテスト(パフォーマンスチューニング用)5。プログラマーの初期段階では、4つのステップすべてが最終的な解決策を得るまで再帰的ですが、経験が増えるにつれて、12ステップが再帰的になります。
あらゆる言語の基本的な哲学を理解する適性は重要です。残りは問題解決の態度です。
そしてPHPでは、私は6.5だと思います。
1分あたりの単語数。
いくつかのソフトウェアシステムが本番環境にあるときに、プレートに何もないと人々が不満を言った場合、それは単にシステムが適切に設計され、適切にコーディングされていることを意味し、他の企業コードモンキーズとは異なり、6-あなたを忙しくしているトラブルチケットの月の列。
このような場合は、背中を軽くたたいてください。あなたは良い仕事をします。
ソフトウェアはお金を稼ぐまで行われないことを忘れないでください。
面接担当者として、私はその質問をして、候補者が自分自身を表現するのにどれほど優れているかを確認します.
さらに、彼らがいかに自己批判的で、自分自身や同僚に対してどのような基準を設定しているかを示しています。
それは彼らが神/悪いプログラミングについてどれだけ知っているかを示すだけでなく、要件を抽出するためにクライアントとどれだけうまくやり取りできるか、そしてチームの他のメンバーとどれだけ一致しているかを示します.
実際のランク 0 ~ 10 はそれほど重要ではありません。
言語知識の重要性を過大評価しないことが重要だと思います。
プログラマーが持つことができる最大のスキルは、問題解決と設計の分野にあります。選択した言語を実際に使用するようになるまでには、ほとんどただのタイピングです。(問題解決と設計のスキルをうまく活用した領域の 1 つは、コードのレイアウトであり、読みやすさとメンテナンスの問題に対処することを認めます)
したがって、プログラマーの尺度は、特定の問題を解決するために、異なる範囲のアイデアや問題をどれだけうまくまとめることができるかです。より多くのスキルは、利用できる知識の領域を追加するだけである可能性があります。
もちろん、これはあなた自身のスキルを判断するための指標としては役に立ちませんが、他の人は、とにかくそれは測定不可能な質問であるとすでに言っています. :-)
回答に音声バイトが必要な場合:
プロとして仕事を始めたとき、私はおそらく 2 歳でした。今では 7 歳くらいだと思いますが、毎日 10 歳になるように取り組んでいます。
プログラマーであることには多くの「長所」があります。評価プロセスは、関心のあるプロセスによって異なります。いくつかのアイデアを次に示します。
私の意見では、これは難しい (そしてインタビューの文脈ではUNFAIRでさえある) 質問です! 私はこれまで3つの異なる会社で働いてきました。私が出会ったすべての場所で、少数の優れたプログラマー (私よりはるかに優れている) と、多くの優れたプログラマーと、より良い方向に変化する必要がある少数のプログラマーに会いました。しかし、それらを 0 から 10 までのカテゴリに分類することは不可能です。
100% のスケールを定義します。
100.0 マークを維持していると認識してください。
他の開発者の役職や IT の著名人を特定します。
あなたがどれだけ優れているかで計算してください。
私はその質問を数回尋ねられました。代表チームを卒業したばかりのとき、私は 7/8 と言った。数年間働いてきた今、私は 4 と答えていますが、今では無限に良くなっていると思います.
0-10 が直線グラフに見えません。私はそれを指数グラフとして見ています。確かに私はまだ 10 人中 4 人だと言っていますが、私はそこにいるコーダーの 90% より優れていると信じています。私は彼らの作品をいくつか見たことがありますが、それは私を怖がらせます。銀行系ソフトのSSLソフトに携わったことがありますが、実際に動くのが怖いです。つまり、私よりはるかに優れたコーダーが 10% いるのです。彼らに追いつくことができるかどうかはわかりません。私の意見では、4 に到達するのは簡単です。5に到達するのはかなり難しいです.5から6になるのは信じられないほど怖いです.
8、9、または 10 に値する優れたコーダー。
経験。経験の幅が広いほど、あなたは「より良く」なります。経験したことしかわかりません。
開発したシステムのサイズと複雑さ (または破損することなく正常に動作した)。