インタビューで会社のコードサンプルを要求する[非公開]


69

求職者にいくつかのコードを見せるように頼むことは、ソフトウェア会社にとってかなり一般的な習慣です。しかし、候補者が面接担当者に、よく書かれていると思われる小さなコードを見せてもらうように頼むことは受け入れられるでしょうか?


14
私はむしろコーディング標準、コードレビューなどについて尋ねたいです
user16764

5
:同社は、「ジョエル・テスト」合格んjoelonsoftware.com/articles/fog0000000043.html
マーティンニューヨーク

2
@LokiAstari joelテストはコーディング文化に直接関係しません(作業環境のみ)。
サイモンベルゴ

8
@ user16764は、候補者に理論的な質問をするようなものです。最初のステップとしては良いのですが、実際に彼がこの知識をどのように応用するかは示していません。
サイモンベルゴ

2
Programmers.stackexchange.com/questions/160922/…この質問に似ています。
匿名

回答:


69

私は常にいくつかのコードを見たいと思っています。いくつかの理由があります。

  • 私は何に興味を持っているのか知りたいです。もちろん、完璧なソフトウェア会社はありませんし、誰もがいつも優雅さを驚かせることは期待していません(私もそうではありません)が、もし会社の最高のコードを求めたらサブパースパゲッティの混乱、私は悲惨な時間を過ごしていることを知っています。企業が表示できる最高のコードを調べると、そこでどのような品質が実現できるかという上限が決まります。すべてのコードがそのように見える可能性が低いとしても、それが彼らが努力しているものであることをあなたはまだ知っています。
  • コードサンプルを見ると、会社のコーディング文化について多くのことがわかります。彼らはドキュメンテーションコメントを使用していますか?それらはオブジェクト指向スタイルに傾いていますか、関数型プログラミングの傾向がありますか?彼らは保守的または進歩的ですか?一貫した命名、適切な書式設定とインデント、およびきちんとしたコード全般を重視していますか?コードは簡単ですか?彼らはプロジェクトをどのように構成していますか?自動テスト、エラー処理など、重要なことにどのようにアプローチしますか?コーディングスタイルはどの程度防御的ですか?
  • それらの既存のコードを見ると、それらの標準に対応できるかどうか判断できます。
  • 企業がコードサンプルのみを共有する意思があるという事実は、原則として良い兆候です。コードベースは最も価値のある資産の1つであるため、申請者である信頼を提供してくれることを意味します。また、彼らは彼らのコードを恥じていないことを意味し、彼らが私にコードを見せることは彼らと一緒に仕事をすることに興味を持つのに役立つと確信していることを意味します。
  • コードサンプルが表示されない場合、それは赤旗である必要はありませんが、両者が共有しない理由を尋ねるのが賢明です(おそらく、法的な理由で単にできない)。いくつかを見たい理由を説明します。あなたが礼儀正しく前向きに尋ねる限り、彼らのコードに興味を示すことは否定的な兆候とみなされるとは思わない。

そして、さらにいくつかの副作用があります:

あなたのコードを表示することに同意する企業は、明らかな理由で、コードベース全体の最新バージョンを含むソースファイルのtarballを私に送信することはほとんどありません。彼らが私にコードを見せたら、彼らは小さなデモンストレーションの形でそれを行います。それは素晴らしいことです。それは私が潜在的な仲間の一人と話をすることを意味します。コードベース、そして理想的には、スキルと知識を実証し、作業環境についてさらに学ぶことができる専門的な議論を始めるのに役立ちます。また、彼らが使用するツールを見ることができることも意味しますが、これは非常に洞察力に富んでいます-たとえば、彼らが私に見せているプロジェクトが特定のIDEに大きく依存している場合、これはすべての人がそれを使用することを意味します。そして最後に、


1
潜在的な雇用者が明らかに悪いコードを示している場合、それが彼らのコードとプロセスを改善するように導く機会である可能性があることを覚えておいてください。古いことわざにあるように、「私は完璧を台無しにすることしかできませんが、壊れたものを修正することができます!」。また、候補者に提示された、または候補者によって示されたコードは、おそらく他のコードよりもはるかに厳格でレビューを受けていたことを思い出してください。
アクトン

@akton悪いコードに対する私の態度です。しかし、「面倒なコードを修正する」クエストに一人でいる場合は役に立ちません。いくつかの良いコードを見るように頼むことは、あなたの将来のチームがSOLIDのようなものを大切にしていると感じるのに役立つかもしれません
Simon Bergot

1
「私は常にいくつかのコードを見るように頼みます」しかし、実際にはどのようにコードを表示していますか?事前に何かを準備するか、後で送ってもらうように頼んでいますか?あなたがそれをどのように見ても、それは非現実的です。
バーハンアリ

1
@BurhanAli:お願いします。多くは私に何も見せることを拒否し、通常彼らは私に正当な理由を与えます、それは結構です。同意する人は私に監督付きツアーを提供します。誰も私に完全なソースのセットを郵送してくれるとは思わないが、見ている間にIDEでプロジェクトをクリックすることはしばしば受け入れられる。
-tdammers

多くの場合、私が本当に見たいコードは、競争上の優位性として閉鎖されていると考えられるでしょう。それは私にとって最も重要なコードになります...しかし、彼らがあなたにコードを表示することに同意し、それが恐らくそれが彼らが良いコードを理解していない兆候であるなら、それは恐ろしいです。もし私がリードだったら、おそらく些細でない内部コードを見せないでしょう。ただ私だけ。
リグ

14

しかし、候補者が面接担当者に、よく書かれていると思われる小さなコードを見せてもらうように頼むことは受け入れられるでしょうか?

「インタビューは双方向」というマントラ全体に当てはまると思いますが、何も得られないでしょう。面接室にコンピューターがないという事実に続いて、知的財産の懸念は最も明白な問題であり、あなたを1つに連れてくることはちょっと厄介です。

さらに、彼らはできる限り見栄えが良く、最も意味のないコードを選択するだけです。最良のコードは実際には問題ではなく、最悪の問題です。候補者からコードサンプルを取得することはほとんど役に立たないのと同じ理由です。


10
彼らがあなたに見せるために良いコードを選ぶことができるかどうかを見るのはまだ有用です。悪いコードを扱うことの最もイライラする部分は、多くの場合、誰もそれが悪いと認識せず、修正する必要があるということです。
-JGワイスマン

5
また、インタビュアーの優れたコードのアイデアは、優れたコードのアイデアではないかもしれません。それを後よりも早く発見することが有益だと思います。
エリックキング

1
悲しいことに、「インタビューは双方向」のアプローチを使用しようとしたとき、ほとんどの雇用主が悩まされていました。私はまだコードを見せられたことはありません。
Antonio2011a

12

候補者が面接担当者に、よく書かれていると思われる小さなコードを見せるように頼むことは受け入れられるでしょうか?

あなたは何でも尋ねることができますが、:

  • あなたはおそらくそれを取得しません。

  • あなたがそれを取得した場合、それはあなたに有用な何かを教えてくれません。コードの10%が美しく、残りがスパゲッティである場合でも、ほとんどの場合スパゲッティを扱うことになります。

  • あなたは賢いズボンのように見えるでしょう。最終的にそこで働きたいと決心した場合、それは大きな助けにはなりません。

  • 貴重なインタビューの時間の無駄です。

  • あなたが知りたいことを見つけるより良い方法があります。次のような質問をします。

    • コード品質の最も重要な指標は何ですか?
    • ほとんどの場合、既存のコードを維持するか、新しいコードを作成しますか?
    • システムの仕組みを簡単に説明できますか?
    • コーディング標準文書はありますか?誰もがそれに従っていますか?

いい視点ね !悲しいことに「コード品質の最も重要な指標は何ですか?」などの質問をすることは、賢いズボンであると認識されることもあります。(私の観点からは、それは理にかなった質問ですが、多くの雇用者は潜在的な部下にクイズされているような気がしません)。
Antonio2011a

2
@ Antonio2011a正しい質問をすれば大丈夫です。おそらく「ここでどんなコード品質の指標を探すのですか?」あなたが彼らが物事をどのように行うかについてもっと学びたいことを明確にしてください。テストを管理するのではなく、それらについて学習しています。コードを要求する場合でも動作する可能性があります:「あなたのコードがどのように見えるかを見ることができますか?」「良いコードだと思うもののサンプルが欲しい」というよりも。
カレブ

3

まあ、それは依存します。どこで仕事をするのかを常に知りたいと思っていました。

就職の面接は双方向だと思います。会社はあなたについて知り、あなたは会社について知ります。コードを要求することは少し多いかもしれませんが、開発関連の質問をすることは問題ないはずです。

たとえば、会社がアジャイルテクニックやTDDを使用していない、またはそのような慣行を受け入れて奨励する予定のない仕事は受け入れません。また、企業が自社の製品とコードを誇りに思っていることも感謝しています。インタビュアーがあなたがそれを見るのを待っているように見えるので、彼は彼らが行うすべてのクールなことを説明する言い訳があります。


同意した。私は彼らが使用するツールを掘り下げようとしますか?多くの場所では手に入らない追加のツール(コンポーネント、ユーティリティ)に対して、管理者は支払いますか。オープンソースツールに対する態度も常に良いものです。
オズ

2

ハハ、それは面白い質問です。インタビュー中に誰かがコードサンプルを要求しても気になりませんが、事前に尋ねて慎重に計画する時間がない限り、おそらくコードも表示しません。

私はそのような質問をする意図を間違いなく理解しています。求職者として、私は以前にジョエル・テストにインタビュアーに尋ねました。彼らはそれが何であるかを知りませんでしたが、彼らは喜んで答えました。

一部の場所では、これらの種類の質問をすることでチャンスが向上する可能性がありますが、他の場所ではチャンスが損なわれる可能性があります。人生の美しさは、それがあなたのチャンスを改善するなら、それはあなたが働きたい場所のような場所であるということです。それがあなたのチャンスを傷つけるなら、とにかくあなたはその仕事を望んでいなかっただろう。

丁寧に尋ねて、なぜあなたがそれを見たいのかを説明できることで、失うものは何もありません。


「人生の美しさは、それがあなたのチャンスを改善するなら、それはあなたが働きたい場所のような場所であるということです。」+1
Spidey

2

この質問は、asp.net mvc3または4に移行する上級開発者がいると主張した2回のインタビューで、またはコメントの多いコードが必要だと言ったときに質問しました。実際のコード標準に関する知識がないため、両方の機会で拒否しました。私が見つけた唯一の標準は、それがコピーアンドペーストで動作し、動作するかどうかでした。新しいプロジェクトを行っている場合や、チームの他のメンバーから独立したコードを記述する必要がある場合、この質問はしません。既存のソフトウェアまたは機能を修正するために雇われている場合、私は間違いなくコードを見るでしょう、そして答えを知らない限り、私はイエスと言いません。あなたが尋ねないで、彼らが今日の日付から開始するように日付ピッカーを修正してくださいと言うと仮定します。レガシコードを見ると、jqueryまたはjquery uiではなく、すべての日付がxmlファイルに保存され、毎晩cronジョブが実行されてその月の更新が行われるカスタムメイドの日付ピッカーが表示されます。これを実現するためのコードはこの例の言葉よりも少ないため、頭痛の種になります。あなたが彼らのコードに取り組むつもりなら、それを見るよう頼んでください。頼まないということは、顧客が自分は小さいと言ったと信じて仕事を引用するようなものです。彼は20エーカーの土地を所有している可能性があり、1エーカーの園芸は彼にとっては小さいが、彼の小さな仕事がすべて50から始まるという理由だけで、ガードナーは50 quidを請求できない。


1

私は彼らの仕事の少なくとも一部がオープンソースである会社で働く傾向があるので、コードサンプルを見つけるのは簡単です。誰が会社で働いているかを把握し、次にオンラインハンドルを把握します。人々は何度も同じスクリーン名を使用する傾向があるため、コードをコミットした場所、Github、Bitbucket、または完全に別の場所にいたかどうかを簡単に見つけることができます。

私の現在の会社はGithubでホストされている大量のコードを持っているので、彼らが何を扱うのか、彼らのコードベースがどれだけ大きいのか、もう興味がないと思われるものは簡単にわかりました。

サンプルを要求することはありません。単に、彼らが持っている最高のコードを見せてくれるからです。これは、使用するコードではありません。おそらく、鍵のかかった部屋の鍵の入った部屋に収容されています。多くの人が混乱しなければならない厄介なコードで作業することになります。


0

あなたがそれを得ることができれば、これは素晴らしいです。NDA型の合意なしでは不可能な場合もありますが、試してみるのは良いことです。オッズを増やすには、面接担当者に事前に(数日前に)これを望んでいることを知らせてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.