持ち帰り課題(テイクホーム)とは:最初に見られるところ
持ち帰り課題とは、面接の代わりに自宅で取り組むコーディング課題のことです。リポジトリを渡されるか要件だけを渡され、数日の期限で提出します。ライブコーディングと違い、時間をかけて考えられる一方で、評価のされ方はまったく異なります。
誰も言わない非対称性
候補者は週末を使います。レビュアーは十五分で読みます。しかも同じ日に他の提出物を六件抱えていることが珍しくありません。この差が、良し悪しのほとんどを決めます。
つまり評価されているのは「どれだけ作り込んだか」ではなく、短時間で読み取れる形になっているかです。時間をかけた形跡そのものは加点になりません。
開かれる順番
レビュアーの動きはだいたい決まっています。READMEを開き、動かし方を探し、実際に起動してみて、テストがあるか確認し、それから主要なファイルを一つか二つ読みます。
この順番のどこかで詰まると、その先は読まれません。手順どおりに起動しない提出物は、中身がどれだけ良くても評価が止まります。提出前に、まっさらな環境でREADMEの手順だけをなぞって動かしてください。
作り込みすぎがいちばん多い失敗
落ちる理由として多いのは、実装が足りないことではなく、余計なものが多いことです。要件にないキャッシュ層、抽象化のためだけのインターフェース、使われていない設定ファイル。これらは「判断ができない人」という読まれ方をします。
要件に書かれたことを、必要な分だけ。足りないと感じた部分は、コードで解決せずREADMEに一行書けば済みます。「本番なら接続プールを入れるが、今回の範囲では省いた」と書けるほうが、実際に入れるより評価されます。
READMEは自分がいない前提で書く
説明する機会はありません。READMEがその代わりです。含めるべきは四つだけです。動かし方、何を作ったかの一段落、意図的に省いたこととその理由、そしてかけた時間。
省いた理由を書くことには、見落としと判断を区別させる効果があります。書かなければ、同じ欠落が単なる見落としとして読まれます。
範囲と時間
「四時間程度」と言われたら、それは上限ではなく期待値です。十二時間かけた提出物は、往々にしてそれと分かりますし、良い印象にはなりません。他の候補者との比較が公平でなくなるからです。
時間内に終わらない場合は、終わらせないまま出して構いません。ただしREADMEに、どこまでやったか、残りをどうするつもりかを書いてください。
提出後の面談が本番
多くの会社は、課題そのものより提出後の面談を重視します。聞かれるのは決まって同じ形です。なぜこの設計にしたか、データ量が十倍になったら何が壊れるか、もう一度やるならどこを変えるか。
ここで答えられないと、コードの出来は意味を失います。逆に、粗い実装でも判断を説明できれば通ります。自分で書き、自分で説明できる範囲に留めることが、結局いちばん確実です。
FAQ
持ち帰り課題とは何ですか?
面接の一部として自宅で取り組むコーディング課題です。要件やリポジトリを渡され、数日の期限で提出します。ライブコーディングと違って時間はありますが、評価は「どれだけ作ったか」ではなく、短時間で読み取れる形になっているかで決まります。
持ち帰り課題にどれくらい時間をかけるべきですか?
指定された時間を目安にしてください。「四時間程度」は上限ではなく期待値です。大幅に超えた提出物は見れば分かりますし、他の候補者との比較が公平でなくなるため、良い印象にはなりません。
作り込みすぎは不利になりますか?
不利になります。要件にないキャッシュや抽象化は、判断ができない兆候として読まれます。必要だと考えた機能は、実装せずREADMEに「今回の範囲では省いた」と一行書くほうが評価されます。
提出後の面談では何を聞かれますか?
なぜこの設計にしたか、規模が十倍になったら何が壊れるか、やり直すならどこを変えるか。ほぼこの三つです。ここで説明できなければコードの出来は意味を失うので、自分で説明できる範囲に留めてください。