エンジニアのためのオレオレジョエルテストシート

# エンジニアのためのオレオレジョエルテストシート

## 個人環境

* PCのスペック
    * 高スペックであることは作業スピードに直結
        * エンジニアに高スペックPCを配置できない企業に努めたいか？
    * ノートPCの場合はデスクでの拡張性も確認
        * ソフトウエア開発にはデスクトップ欲しいと思うんだけど。。。
    * メモリが少ないとあれこれ困る
    * キーボード、マウスの持ち込みが可能かどうか
    * ディスプレイのサイズ、枚数
* 開発ツール/IDE
    * 統一されているのか否か（自由なのかどうか）
    * 一部のメンバーだけが有償版、一部は無償版などになっていないか
    * ライセンスが支給されるか自前のIDEライセンスを持ち込めるか
    * 設定の共有、共通化は出来ているか
    * 登録辞書の準備はあるか
* デスクスペース
    * デスクのサイズ感
    * プライバシー（鍵付きの袖机の有無）
    * カスタマイズ（デスク上の写真、フィギュアｗなど）の可不可

## 言語・ツール

* 開発言語
    * 複数言語が採用されていて当然（なのでそれぞれ聞く）
    * 自分が（主に）担当するのはどの辺りか
    * 担当しないところには十分な戦力があるのか
    * 自分が（メインとは別に）貢献できそうな範囲があるか
* フレームワーク
    * コーディング規約も含めて
    * コードフォーマッタの使用有無
    * IDEのインスペクタの使用率、適用率も確認できるとベター
    * オレオレFWに注意
    * 内情について確認できるとベター
        * FW使ってます。中身めちゃくちゃだけど、、、はザラにある。。。
        * 技術的負債があると思うか、を聞くといいかもしれない
        * もちろん、それをどうやって返済していくつもりなのか、も聞くこと
    * 特殊なライブラリとその有無について
        * 決済関係
        * API（とそれを使うライブラリの整備状況）
        * その他特別な業務でしか使わないようなもの
        * 知っているものと知らないものを明確にしておく
* SCM（ソース管理）
    * 未採用の場合には採用予定の有無を確認（そもそも自分の転職意思を再確認したほうがｗ）
    * フローがきちんと確認できることが望ましい
* ITS（チケット管理）
* BTS（バグ管理）
* TMS（テスト管理）
    * SCM/ITS/BTS/TMS はセットパターン的なことが多い。
    * ＠トラシアン、自前赤マイン、その他SaaSの組み合わせ
    * この辺りをきちんと確認すると相手方のレベルやチームの状況がわかる
* CIツール
    * 自前かSaaSか
    * フックで自動化されていると便利
    * カバレッジは取得されているか
    * 自動テストは組み込まれているか
* デプロイ（ビルド）ツール
    * デプロイフローを確認しつつ技術スタックをチェック
    * デプロイがブラックボックス化してるところもザラにある。。。
    * エンジニアがデプロイをきちんと把握しているチームは高確率で良いチーム
* インフラ
    * オンプレ、プライベートクラウド、パブリッククラウド
    * リソースの使用制限など
    * サービスの提供先プラットフォームなど

## チーム、作業内容

* チームの人数、雰囲気、ルールなど
    * チーム構造がわかるとよい。ロールと権限、それぞれの人数など
    * 自分と同じ職能のメンバーが何人いるか
* 必要スキル、レベル
    * 開発手法について
    * リーダブルコードなど必読書が定義されているか（共通認識があるか）
    * SIerの多くには設計（開発）標準などがある
        * スタートアップやWeb系では必須だと思わないが代替する何かがあるか、またはその準備があるかどうか
* スケジュールの共有方法、作業単位など
    * イテレーション単位（週？２週？月？）
    * スケジュールの変更、差し込みやバグ対応による担当変更などを全員が把握できるようになっているか
    * 職能別の多重度など
        * １人で複数の案件をまわすとか
        * 五月雨になっているかとか
        * ボトルネックがないかとか
    * 就業時間の集中度、会議の量と質、平均的な残業量など
* 仕様書の有無
    * コードのドキュメントの有無（xxdocの有無）
* テスト方法（要は↑これらで１作業の流れ全体が確認できれば）
    * 自動テストの分割有無
    * どのくらいテストが書かれているか
    * 何分くらいかかっているかを確認するとよい
* マージ前後からデプロイまで
    * コードレビュー
    * テスト（自動テスト以降の）
    * デプロイ方法
* セキュリティ対策
    * 個人端末、アプリ、サーバなど状況ごと

## 就業環境

* 就業場所
    * 面談場所と執務室が違う建物なんてことはザラにある
    * 駅からの距離、周辺の様子など。
        * 弁当、ファストフードやコンビニなどの調達はエンジニアの生死を分け、、ないかｗ
* 執務室状況
    * トイレ
    * 喫煙所
    * 自動販売機
    * バックミュージック
    * エアコン（時々夏は暑くて冬は寒いとかあるからね。お局様がいるとかｗ。定時で切れちゃうとか）

* 就業状況
    * 自然災害時の出退勤対応（事前に十分な連絡があるか、先読みした対策ができているか）

## 企業情報

* 事前にできるだけ自分で調べておき、わからないことを確認させてもらう
* 四季報レベルの内容
    * IR
    * 事業全体
        * から見た自分たちの立ち位置
    * 従業員数
    * 直近数年の売上高、利益、株価
        * から見ての未来予想を”自分で”考えること（先のなさそうな会社を選択しないでいいように）
        * 連結決算等で必要な情報が集まらなかった時に、すんなりそれを教えてくれるかどうかで経営の透明性がわかる
        * 同時に採用可否の目安としてわかりやすいので聞いてみるといい（面接官の採用意思が高まっていれば普通概算値くらい教えてくれる）
    * 関連企業
    * 関連部署
        * いずれも関係の薄いところはどうでもいい
        * 関係の厚い部署と、その状況など
* 提供サービス
    * 担当するサービス
    * しないサービス
    * 関われること、関われないこと
* 福利厚生
    * 重要なものと重要でないものは自分でわける
* 社内行事
    * 参加が必須かどうか、頻度


## はじめに（という名のあとがき）

* エンジニアの採用面談等で相手の企業に確認しておくといいかもしれないことをチェックリスト形式にまとめてみる試み
    * 逆に言えば企業側にいつでも説明できる準備をしておいてもらいたいことと同じかもしれない
* [ジョエルテスト](http://japanese.joelonsoftware.com/Articles/TheJoelTest.html) を元に、[ジョエル･テストは（もはや若干）時代遅れ―今ならこう質問しよう](http://postd.cc/joel-test-scores-are-outdated-you-should-have-something-else/)という記事から、現代日本版にローカライズしてみた感じ
* 平たく言えば、何か質問はないですか、と言われたら埋まっていないところを埋めるためのシート
    * 事前に確認できることはしてしまうこと。外から調べてわかることをわざわざ聞くのは無能な証拠（言いすぎ）
    * 相手先企業のIRはもちろん、テックブログなどをチェックすること
    * エージェントに聞けることも先に聞いておくこと
* 印刷して使う時には、この部分（はじめに）は必要ないと思うので後に置いた
* 事前に譲れるところと譲れないところは考えておくこと。または変えてもらえるかを確認するとよい
* 最後に、こういうことも聞くといいとか、逆に聞くなとかのアドバイスがあればもらえるとうれしいです