新しいWebプログラマーを雇う場合、そのスキルのベンチマークするためのコード仕様。
元ネタはSooeyさんという方のエントリー(今はページがなくなっている)ですが、私は独自のエッセンスを追加したものを使っています。

うちの会社は最近急激に自社内の案件が増えており、毎月のように協力会社から常駐の開発者を増員しているような状況です。そういう場合、スキルシートと面接でかなり精度を上げておかないと、あとでかなり痛いしっぺ返しを食らうことになります。そのノウハウもある程度わかりつつあるのですが、それは後日公開するとして、これはその面接でいい感じだと判断し、常駐してもらうことになった後に使う話。

下記のコードをまずその人の好きなスタイルのPHPスクリプトとして実装してもらい、XSSとかCSRFなどの脆弱性についての知識の有無やコーディングスタイル、その人のクセを理解する。これくらいであればPCのセットアップや環境構築も含めて1~2日くらいで仕上げてほしいところ。それが問題なくできたなら、今度はWebアプリケーションフレームワーク上で同じ仕組みを実現してもらう。今のところEthnaを使ってもらっている。

フレームワークを全く触ったことがない人だとさらに3日、他の言語も含めたWebアプリケーションフレームワークを使ったことがある人なら2日、Ethnaを使ったことがある人なら半日程度である程度のところまでは実現してほしいところ。

それをクリアできない人は、経験上大体業務ではもたない気がする。

[条件]

  • ファイル数・構成は無制限とする
  • Lunix, Apache, PHP5, PostgreSQL8 の環境で実現する
  • Pearパッケージおよび Smarty 使用可とする

[仕様]

  • 入力ページ、確認ページ、結果表示ページから成る
  • 入力ページでは郵便番号(7桁)の入力欄と送信ボタンを表示
  • 入力ページで送信ボタンを押した際、郵便番号欄の値を半角に変換してハイフンを除去
  • 郵便番号欄の値が「空文字列」または「7文字の半角数字以外」の場合は「郵便番号欄の値を保持」したまま入力ページを再表示
  • 入力ページを再表示する再、郵便番号欄の下に入力値に応じて「入力されていません」または「入力内容が正しくありません」と表示
  • 確認ページでは郵便番号、戻るボタン、次へボタンを表示
  • 確認ページで戻るボタンが押された場合は「郵便番号欄の値を保持したまま」入力ページを再表示
  • 確認ページで次へボタンが押された場合は結果表示ページに「入力された郵便番号はXXX-XXXXです」と表示
  • ページデザインは後で差し替えるのでスクリプトとは別ファイルにしておく
  • セッションは使わない