- エンジニアのポートフォリオってどうやって作れば良い?
- 何を開発するのが良いの?
- 面接に良いポートフォリオ教えて
という悩みを解決する記事になります。
記事執筆者:オザック
Webエンジニア歴10年以上、年収1000万の現在フリーランスエンジニア、オザックです!
某有名R社に勤めていた過去があり、副業を含めて関わってきたプロジェクトは20以上。
エンジニアの書類選考、面接を100人以上してきた。
今回はエンジニアの面接官をしてきた実績もある僕が、ポートフォリオの作り方について解説します!
今回お話するポイントを抑えることで、基本的のどのエンジニア系の面接でも対応出来ますし、未経験でも出来ます!
この記事でわかること
- ポートフォリオを作るのに大事なポイント
- ポートフォリオ作成に不要なこと
- ポートフォリオを作るのにおすすめの方法
- ポートフォリオを作ったとの面接で大事なポイント
- ポートフォリオを開発するのに参考になるサイト
3分程度で読み終わるので、少しでもエンジニアとして大成したい方、ポートフォリオを作ってエンジニアになりたい方は、最後まで読んでみることをおすすめします!
プログラミングスクールと比べると数十万単位で安い金額です!
但し最低1つの言語を少しでもやってみたことがある人向けになります
目次
ポートフォリオで大事なことはコードの質
まず結論から言うと、ポートフォリオで大事なポイントはコードの質になります!
ポートフォリオのポイント
- どれだけちゃんと設計されているか
- 言語の特性を理解できているか
- 細部の実装まで考えてかけているか
になります。
逆に不要なことは
- 作った物のオリジナリティ・アイデア
- かっこいいUIデザイン
- ポートフォリオのユーザ数
です。
エンジニア面接をしていた立場から言うと、ほとんどポートフォリオのサービス自体を見てないです。
これらを踏まえて、ポートフォリオのポイントや不要なこと、作る方法について詳しく解説していきます!
なぜポートフォリオが必要なのか?2つの理由
まずポイントについて解説していく前に、なぜポートフォリオが必要なのかについて説明していきます。
理由は
- 昨今は未経験は採用されない
- エンジニアは需要過多だが、企業が欲しているのはできる人のみ
です。
昨今はエンジニア未経験の人は採用されない
エンジニアの需要も高まっていることもあり、昨今エンジニアになりたい人が増えています。
今までであればプログラミングスクールで学び、脱未経験としてエンジニア採用される方もいましたが、昨今ではそれも難しくなっています。
なのでエンジニアリングを完全未経験者でポートフォリオがないというのは、全く相手にされないです。
またプログラミングスクール上がりの人が採用されにくい理由としては、ポートフォリオの質が低いというのがあります。
プログラミングスクールでは脱未経験レベルのポートフォリオしか作成しないため、企業側が求めるレベルに達していないのです。
つまりポートフォリオを作るのは必須でありかつ、「質」というのが問われてきています。
エンジニアは需要過多だが、企業が欲しているのはスキルのある人
と思う方もいるかも知れません。
未経験レベルだと採用されない理由は以下になります
- 教育コストが高いから
- 採用しても挫折される可能性があるから
- エンジニアの在籍年数は大体3年程度だから
未経験レベルを採用しても教育コストが高く、育てるにはかなりの時間がかかり、その上エンジニアの平均在籍年数は3年程度と言われていて、育ててもすぐに辞められたら元を取れないためです。
そのため現場は未経験でも技術力はしっかりと見に付けてきたことを一番簡単にアピールできるポートフォリオが必要になってくるというわけです!
未経験からエンジニアになるためのポートフォリオ作りに関してはこのあと順番に説明していきます!
採用されるポートフォリオの作成方法については後ほど解説します。
ポートフォリオに必要なもの
ではまずポートフォリオ作成ではなにが必要なのか?みていきます。
ポートフォリオでは最低限以下は必要になってきます
最低限必要なもの
- GitHubアカウント
- GitHubでのソースコード
- 基本的なGit動作ができる
- 技術選定の理由
- READMEがちゃんと書かれている
- 実装上でこだわったポイント
- テストが書かれている
あると良いもの
- QiitaやZennなど自分で書いた記事
- モダンなIDaaSやBaaSなどを使っている
GitHubを作って、Gitを使えるようにする
これは必須ですね!
GitHubとは?
GitHubというのはソースコードを管理するためのバージョン管理ツールになります。
これを使って多くの人や企業はコードのバージョン管理や保持をします。
GitHubのアカウントを作りそこでソースコード管理をするのは、ポートフォリオを見せる上で必要なものになります!
またGitが使えるというのは、開発をする前の基礎中の基礎なので、出来ないとポートフォリオが作れません。
基本的なGitが使える
Gitというのは先程のGitHubにコードを保存したり、削除したり、更新したりするツールになります。
Gitには様々なコマンドがあり、それを最低限使えるようにしないと、ポートフォリオの作成も難しいです。
最低限使えると良いGitコマンド一覧
- git commit
- git push
- git merge
- git reset
技術選定の理由
面接では
と聞かれることが多いです。
その時に答えられないというのは、
- 自分でポートフォリオを作っていない
- あまり本気でやっていない
- 全然プログラミングが理解できていない
と思われてしまう可能性は高いです。
どうしてこの技術を選定したのかと言うのはちゃんと答えられるようにする必要があります。
以下技術選定理由の例です
- 昨今ではモダンで、多くの会社が選択をするから
- スピンアップが速く高速に動くから
- ワンバイナリになりコンテナの管理が楽だから
- 型が使いやすい言語との相性が良いフレームワークだから
などがあります。
ポイントはちゃんとその使う技術の特性がわかっているかどうかです。
実装上でこだわったポイント
これは面接で聞かれることも多く、ちゃんと自分なりのこだわりポイントを持っておきましょう!
「プロダクトの出来というよりは、コードに関してのこだわりポイントがあるか」ということが重要です!
実装上のこだわったポイント例
- 単一責任(SRP)を意識して実装した
- 責務をちゃんと考慮しながら実装した
- テストを書きやすいように設計した
- パフォーマンス面で、落ちないように設計した
- DDDとクリーンアーキテクチャで実装した
などがあります。
テストコードを書いている
テストコードとは?
プロダクトのために書いたコードが正しいかどうかをテストするコードのことです!
昨今はテストコードを書くという習慣が当たり前になってきています!
もちろん書いていないような古い会社などはありますが、そういった古い企業よりもモダンな企業を目指してエンジニアを夢見る方が多いです。
モダンな企業は基本的にまずテストコードを書いているので、それを書けるようにエンジニアであることをポートフォリオではアピールする必要性があります!
参考
昔の未経験者のポートフォリオではテストコードはなくても採用されるケースは多かったですが、最近では入社前のエンジニア採用レベルが上ってきているため、
テストコードまで書いてあることで、他の候補者よりもアドバンテージをつけることが出来ます!
QiitaやZennなど自分でアウトプットした技術記事
自分が学んだ技術をアウトプットしているというのは大きなポイントです!
学習時の知識定着率グラフ
アウトプットの重要性についてこのようなグラフがあります。
技術記事にするということは「自ら体験した」上で、「他人に教える」というのに近いため、知識定着率が格段に高いです!
なのでアウトプットするということはそれだけプログラミングの理解がしっかりしているということの証拠になります。
参考
またアウトプットする人が多いと、自然と周りのエンジニアに良い影響を与えるので、採用側としても採用したくなります。
モダンなIDaaSやBaaSなどを使っている
FirebaseやAuth0など、昨今ではIDaaSやBaaSといったものが使われるケースが増えてきています。
特にFirebaseは多くの企業で導入されていて、SSO認証ではかなりの実績があります。
そのためこういったモダンな技術ツールを追えているか、キャッチアップできているかというのは採用される一つの重要な指標です!
プログラミングスクールと比べると数十万単位で安い金額です!
但し最低1つの言語を少しでもやってみたことがある人向けになります
実は勘違い!エンジニアのポートフォリオを開発する上で不要なこと3つ
では続いては実はポートフォリオでは必要と言われていて作ったけど、実は不要なもの(なくても良いもの)もあります!
- 作るもののアイデアはどうでも良い!ただ簡単すぎはダメ
- オリジナリティは不要
- サービスを誰かに見せてブラッシュアップは不要
- サービスを公開している必要は必ずしもない
ポートフォリオのアイデアはどうでも良い!簡単すぎはNG
採用面接官の立場から言うと、ポートフォリオのアイデアは正直どうでも良いです!
会社側からすると、会社のプロダクト開発で活躍できる技術力かというのをポートフォリオでは証明してもらいたいのです!
そのため、ポートフォリオはビジコンみたいな新規性や継続可能性など、そういった考慮は不要です。
注意ポイント
ただし簡単すぎるようなポートフォリオはNGです!
なぜならレベルが簡単すぎると、誰でも出来てしまうため、差別化が出来ず、採用側からしてもレベルが低いと足切られる可能性があるためです。
オリジナリティは不要
またポートフォリオにオリジナリティは不要です。
これも先程と同様の理由で、ポートフォリオにオリジナリティがあるからといって、採用側から好印象を持たれることは稀です!
なぜならポートフォリオは技術力を見るための物だからです!
サービスを誰かに見せてブラッシュアップは不要
何度も言って恐縮ですが、サービスのクオリティと言う物自体は意味はあまりないです。
もちろんブラッシュアップをしたと言うエピソード自体は、面接で活かされるかもしれませんが、
何度も言うようにポートフォリオでは技術力がみたいので、いくらサービスの内容が面白くてもコード品質が低すぎると面接では落とされてしまします!
サービスを公開している必要は必ずしもない
場合によってはサービスを公開している必要はないです。
それは以下の場合です!
- バックエンドエンジニアを目指す場合
- インフラエンジニアを目指す場合
フロントエンドでない限りはなくても問題ないです。
参考
正直な所フロントエンドでもサービス自体は殆ど見られていないと思って良いです。
というのも何度も何度も言っていますが、ポートフォリオでは技術力が見たいので、
殆どの時間をGitHubのコードをみてチェックしています。
バックエンドのポートフォリオに関してはこちらの記事が参考になります!
ポートフォリオの作成方法
ではポートフォリオを作成するに当たりどのような手順を踏んで作成していくのかについて解説していきます!
- GitHubのリポジトリ作成
- 作るものを決める
- データベース設計をする
- コードのディレクトリ設計をする
- ユースケースごとに実装していき、テストも書く
このような流れでポートフォリオは作成していきます!
※今回はバックエンド向けのポートフォリオ作成方法について解説しています!
GitHubのリポジトリ作成
まずはコードを管理するためのバージョン管理ツールGitHubのアカウントを作成し、その後リポジトリを作成しましょう!
作るものを決める
続いてはコードを書く前に作るものを決める必要があります。
先程も話したとおり、アイデアに凝っている必要はないです。
3つの例
- ECサイト
- SNS
- (認証のある)サービス
※簡単すぎるTODOサービスはNG
上記だと、いろいろなコードの実装において色々な要素があり、ポートフォリオとしては最適です!
詳しい最適なポートフォリオの例はこちらの記事が参考になります!
データベース設計をする
データベースのER図
続いてはデータベースのテーブル設計をします。
ER図を作ることでテーブルが整理されるため、この図を作成することを目指しましょう!
コードディレクトリ設計をして実装していく
あとはコードを書くときに責務を分離するために、まずはディレクトリ構成を設計します。
例えば
- ユースケース層
- ドメイン層
- インフラ層
のような感じで層を分けて、そこの中でも更にドメインごとに分けるなどをしていきます!
ポートフォリオを作成する手順は以上となります。
という方も多いですよね!
ポートフォリオを作るのに必要なのはメンター!未経験エンジニアは必須
いきなり未経験や初心者で先程のポートフォリオを作るのは正直難しいです!!
そういう時に必要なのはメンターです!
こちらの未経験者も複数企業内定させたこちらのMENTAプランがおすすめです!
こちらのプランでは
- コードの設計
- RDB設計
- ポートフォリオの支援
- 面接のポイントも聞ける
が揃っていて、未経験や初心者からでも実際に内定する実績があります。
実際にこのプランを受けて内定をした人のインタビューがこちらになります!
プログラミングスクールと比べると数十万単位で安い金額です!
但し最低1つの言語を少しでもやってみたことがある人向けになります
ポートフォリオを作った後のエンジニア面接で大事なポイント
ポートフォリオを作った後は面接対策です!
面接では以下が最低限必要になります!
- しっかり技術の質問には答えられる
- 設計について、どうしてそのようなコードにしたか答えられる
- 開発でこだわったポイントを語れる
- 開発が好きであることのエピソード
面接官の立場からすると、上記を満たせる回答ができると、かなり高い確率で面接を突破することが出来ると思います。
※あくまで僕の考えなので保証はないです
詳しくはこちらのMENTAのプランで聞くと良いです!
ポートフォリオを作ってエンジニアを目指そう
今回はエンジニア歴10年以上で、面接官もやってきた立場からポートフォリオの作成方法と、作る際のポイントについて解説しました!
昨今はエンジニアになるにもポートフォリオは必須となっている時代です。
ただ闇雲にプログラミングスクールで言われたようなのを作っても、他の候補者と差別化は出来ません。
技術力を高めて、技術力で差別化するためにもまずは設計をちゃんと学ぶことから始めるのが、今後のエンジニア人生でも大きく影響してきます!
次に読むと良い記事はこちら