最近は仕事上、他業界から転職してITエンジニアを目指している人の話を聞くことが多い。未経験も含めて激安条件でSESに入るというのでなければ、やはり一定水準以上のスキルが求められる。応用情報技術者試験やOracle Master GOLDなり「最低限の知識やスキル」を証明するための資格は存在するが、あくまでも最低限であってスキルをアピールするには心許ない。
AtCoderなどプロコンやPaizaスキルチェックなど実装力をアピールするものもあるが、通常のエンジニアの場合は、そこまで高度なアルゴリズムを組む力が求められるわけではないので、この辺りは程々で良い。
寧ろアピールに必要なのは、フロントエンドからバックエンドまで一通りシステムを開発し、その成果を見せることである。
言語や案件によるが、Javaなど多くの場合でSpringなどフレームワークを使うことが多い。言語に応じてよく使われるフレームワークを用いて、
- 画面でのフォーム入力
- 入力チェック
- サーバーへのリクエスト
- ウェブアプリケーションでの処理
- データベースの更新系処理(新規登録・更新・削除など)
- 結果を元に画面遷移
まで、データベース更新を伴うシステムを一通り作ることである。この時、決して凝った画面やシステムである必要は無いが、
- ユーザー登録(クッキー、セション管理などを伴うもの)
- データベース更新
- 入力チェック
が含まれているものが良いと思われる。
そしてシステムができたら、
- ソースコードをGitHubで公開しておく
- サーバー上にデプロイしてシステムを利用できるようにする
- システムの仕様書を公開しておく
の3つが重要である。
技術のアピールの為にGitHubにソースコードを公開するまでは誰でも思いつく。しかし、企業にGitHubのURLを送りつけたところで、なかなか読みに来てくれないだろう。そうすると、動くようにしておくことが重要になる。寧ろ、ソースコードの公開は「システムを自分で作った」という証拠の提示という意味合いで考えた方が良い。
そして一番重要なのはシステムの仕様書である。これはシステムの機能一覧や画面遷移図など、システムの概要が分かる仕様書である。実務経験が無いことを考慮すれば、そこまでしっかりとしたものでなくても良いかもしれないが、「短時間でシステムの概要を伝えられる」ということが重要である。
これは、システム開発においてドキュメントが非常に重要であるのみならず、文書や対話によるコミュニケーションが非常に重要になるからだ。中には「コードだけ打っていてくれ」というような技術特化のエンジニアも存在しなくはないが、大抵は「客先に出せない」理由で社内から出られないケースの方が多く、客に対して説明を求められるケースの方が多い。
そういうわけで、作りっぱなしではなく、そのシステムの概要を他者に分かりやすく伝える事にも力を割くのが良いだろう。