エンジニアの転職、業務での使用経験があるかを問われるので、趣味で一人で作ってました~ってのは見向きもされない。企業の人事どころか、転職エージェントにすらバッサリ切られて対象外の案件は紹介すらしてもらえない。
ところが実際には、大手下請けプログラマの仕事は通常ぬるいので、ブログラム関連のスキルは趣味で一人で作ったものじゃないと転職先で使えない。
双方損をしないためには嘘も方便である。業務使用していなくても、使えるスキルは使えると言って良いんじゃないか。
そこで、ここまでできればハッタリでも文句はないやろという範囲をメモしておく。
・プログラミング言語(募集対象の言語固有の記法で)
基本構文と標準関数
標準関数はキリがないが、配列操作、文字列操作くらいはできたい。
エラー除去
コンパイル不可レベルの誤字脱字系にハマらない
見やすさ
メソッド化、ファイル分割、コメントなど
ファイル操作
データベース入出力
言語に付随する個別機能
Cならポインタ、web系ならsessionとかcookieとか
例外処理
デバッグ
メジャーなデバッガとか、テスト用スタブの実装ができる
クラス
修飾子とコンテナ化、抽象メソッドとポリモーフィズム
起動
Cならmakefileの準備からコンパイル、web系ならHTMLからPOSTとか
・データベース
インストールからテーブル構築
簡単なテーブル設計
第三正規化くらい?でいいよね?
SQL
適当なカラムで絞るselectくらいは空で書けること、複雑なのも練れること
バックアップとリストア
内容次第だが、DB、インフラ寄りなら必要かも。
・ネットワークとサーバー、インフラ系
LAMP環境構築
多少ググるくらいセーフでは?ただし完全コピペじゃなく環境にあわせて改変できること
IP周りの知識
ブラウザからURL叩いて表示されるまでを説明できるか。7層とパケット、自分が使える(orこれから使う)言語やミドルがどの層でどんな作業を担当するかも説明できる感じに。
セキュリティ
ノーガードのとこに簡単なルール設定ができればいいよね?
CUIコマンド
Linuxだとcd, ls, cp, mv, chmod, grep, w, df, du, 簡単なvi編集あたり?
・その他
エディタやIDEの選定、設定
バージョン管理
苦手です!誰か助けて!
ここまでできると、一人でアプリを作ってリリースまでこぎつけられる感じ。
上ほど優先度は高く、やる気と作りたいモノさえあれば完全未経験から数か月で一通り経験できるかな?という感じ。しっかり理解するとか、呼吸レベルに慣れるなら3~5年くらいか。
この辺は会社組織に所属して業務としてやったかどうかなんて一切関係ないと思う。ハッタリが効く範囲はここまで。
・中級者向け
以下はリリースしたアプリがバズったり、利益を上げたりしはじめないと独学では難しそうなポイント。逆に会社組織でやってれば馬鹿でも経験だけはできる。実務経験が関わってくるのはこれ以降。面接時はこの辺を得意分野としてアピールするために、実際にやった時のエピソードを用意しておく。
エピソード用
アプリ担当なら、遅いシステムのデータを取りボトルネック究明ができるとか。
アプリ … ロックの取り合いや無駄なループ、キューとスタック
DB(SQL実行計画、インデックス、アクセス頻度)とかインフラ(サーバー性能、サーバー台数、負荷分散)の思想を理解したコードになっているか。
DB担当なら、大規模システムのテーブル設計、インデックスチューニングとか。
インフラ担当なら、アクセス数を予測して、運用コストと利益、性能のバランスを取れる?ネットワーク構成とかも?やったことないからわからん。
レビュア
バグが起こりやすい危険なコードのパターンを知っていて、出くわしたら問題ないか精査できること。デッドロックとか、スレッドセーフとか、解放漏れとか。
私はこれらの方法で転職活動に大成功……していません。これから動こうという際に、できる事、できない事を整理したいがための記事でした。