エンジニアに求められる実務経験とは何なんだろう?

エンジニアリングとかデザインとかを仕事にしようと勉強して、誰かに相談すると、口を揃えたように「実務経験がないと厳しい」と言われるらしいです。

僕自身は、知識がない状態で会社作ってしまったり、仕事を取ってから勉強したりしてきたので

「実務経験?(゚Д゚)ハァ?」

という気分なのですが、別にタフガイ自慢したいわけではありません。

実際ある程度実務経験があった状態で転職先を考えた方が目利きもできるし判断正確になるし、事実、中途の転職だと実務の要求をされたりするみたいです。

フリーランスになるとしても、僕のように会社を立ち上げてからお勉強して行き当たりばったりなるより、一旦会社に勤めて仕組みを学んでから独立したほうが圧倒的に安全です。

というわけで、実務経験とはなんぞやって話から、こういう実務やっておいた方が色々有利だよって話をしてみたいと思います。

実務経験とは一体何なのか?

実務経験と一口に行っても、事業会社や受託会社、SES、Sierなどによって違う部分があると思います。

何をもって実務経験と言うかは難しいですが、弊社の例でいつもこんなことやってますって例を挙げていきます。

弊社で行っている実務の例

うちの場合は受託会社ですので、お客さんの作りたいサイトとかアプリとかをヒアリングしてアドバイスして作るって流れです。

作った後は保守する場合もあるし、作って終わりの場合もあります。

んで、うちの場合は中小零細、個人企業から中堅企業あたりまでと、レンジが広いのでやることも多種多様です。

気まぐれで仕事受けたり受けなかったりもするので、所謂Sierとか事業会社の実務の例とは全然違うと思いますので、そのあたり加味して考えてもらえたらと思います。

①打ち合わせと要件定義

お客さんが何作りたいのか、何に問題があるのか、どんな技術が適切なのかなどの話をします。

例えば会員管理を必要とするウェブアプリなどの場合はRailsやらLaravelやらの提案をするでしょうし、集客とかメディアとかならWordPressを勧めます。

規模によってサーバの種類や構成を考えますし、保守の内容も変わります。

中小企業のちっちゃなウェブサイトだと共用サーバでGUIで操作してもらった方がお互いハッピーだし、ちょっと規模の大きなウェブアプリなどだと、CLI(黒いコンソール画面)でコマンド操作することになるので、お客さんに投げても知識がないといじれないのです。

その場合何らかのトラブルでサービス落ちたら終わりなので、少額でも保守セットで仕事した方がお互いハッピーなわけです。

②デザインとUI設計

デザインはSketchでやることがほとんどですが、illustratorも使います。

デザインはエンジニア志向の人は一切手を出さない作業ですが、うちの場合はデザインも含みなことが多いです。

但し業務アプリや管理画面、ダッシュボード的な部分に関してはテンプレを使うことが多いです。wrapbootstrapなどのBootstrapのテンプレは安い割に凄く充実してます。大体$15くらいでグラフ生成やらチャットやら色々できてしまいます。

ちなみにBootstrapのテンプレを多用すると制作物に愛着なくなってきますし、そもそも英語に最適化されてたりしますので、日本語フォントが弱いです。ちょっと手間がかかっても自作でデザインした方が後々良いかもです。

③デザインのコーディング

デザインが整えばサイトをコーディングします。

Railsだと標準でsass使いますが、Rails以外でも最近だとwebpack使ってsassをコンパイルします。

もうちょっと規模が大きかったらjsフレームワークとか使ってコンポーネント化したりすると思うのですが、そこまでの規模のモダンな仕事があんまりないのが辛いところです(´・ω・`)

④フロントエンドとバックエンドのコーディング

デザインのコーディングが終わってれば後はそれを動的に動くようにバックエンドのコーディングを行うだけです。

ウェブアプリならRailsで、小さなサイトだとPHPとかWordPressでテーマをいじったり、functionを作ってバックエンド仕上げていきます。

バックエンドと連動してフロントエンドもコーディングしていきます。

フロントエンドはVue.jsを主に使います。

バックでAPIを作ってフロントはjsでjsonをレンダリングする感じですね。

Vue.jsに関しては初心者向けの記事をインターンの山くんがまとめてくれてるのでこちらの記事をご覧下さい。

【初心者】Vue.js 基本的な使い方。〜 導入から基本的な機能を使ってみるまで 〜

Vue.jsを導入した経緯はこちら

小さいプロジェクトにはVue.jsがちょうどいいJSフレームワークだと思う

⑤テストデータ・ダミーデータの流し込み

③とか④でぱっと見イケてるサイトになったとしてもテストデータを流し込めば色んな問題が出てきます。

デモの時点ではデモ用のきれいな画像を使ってて気がつかないですが、本番データを入れるといきなり生々しくなってデザインから調整ってことになったりします。逆にテストデータに「テストテスト・・」みたいな嘘っぽいテキストデータを流し込めば、いざ本番稼働した時に雰囲気がガラッと変わって「思ってたんと違う」ってことになります(´・ω・`)

そんなわけで、バックエンドのコーディング時やテスト時のダミーデータって非常に大事なんですよね。

ここで手を抜くと逆に時間がかかってしまう場合もあります。

もういちと言いますが、

ダミーデータの品質はめちゃくちゃ大事です。

⑥サーバのセットアップ

VPSを構築するかクラウドでAWSなどを構築するか、、要件によって構築するサーバの構成を考えてベストなパフォーマンスを発揮できるように設定します。

サーバの選び方やサーバの役割はこちらの記事を参照して下さい。

ウェブサイト制作で借りるべきサーバは?サーバの役割と種類を解説してみた。

サーバの構成は案件内容によって違うので、要件に対してどんなミドルウェアを選定するかが肝ですね。

⑦本番デプロイ

準備が整えば本番デプロイしてサービス開始です。

デプロイの手順も規模によって違いますが、パッケージ管理ツールなどの使い方を言語ごとに覚えておいたり、手順書作ったりする必要があります。composerを使ったり、gem使ったり、jsだとnpm使ったりyarn使ったりとややこしいですね。

デプロイツールを使う規模のサイトをデプロイすることは滅多にありませんが、場合によってはデプロイツールを導入します。

⑧保守とバックアップ

サービスが何らかのトラブルで落ちる可能性もあるし、サーバが天災で吹っ飛ぶ可能性もあります。

バックアップは必須だし自動化する必要もあります。毎日手動でバックアップするのは面倒くさいですしね。

また、継続的に機能改善できるようにデプロイとステージングの手順も整えておく必要があります。

一般的に要求される(だろう)実務経験の例

さて長々と弊社で行っている実務の例を書いてきましたが、もちろん未経験で全部できる必要はありません。

例えばうちにジョインする場合に最低欲しいと思うスキルセットとしては下記となります。

自分で環境構築できる

Gitでチーム開発できる

本番で動いている環境と同じ(かそれに近い)環境をつくれないと、ソースコードをいじることもできないのは言うまでもないですが、それよりも「それくらいは自力でできる根性が欲しい」わけです。

Gitでのチーム開発も同様です。ソースコードをUSBメモリで渡されても困るし、イマドキFTPでアップロードするってこともないし、Gitが必要ということはその手前でUnixコマンドのスキルも要求されるわけです。

OJTで行う実務経験

今やっているOJTの仕組みでは作業を完了する手前でぶち当たる壁をいくつか用意して、そこを出来る限り自力で解決していくフローにしています。

この図で言うRedmineはプロジェクト管理のツールです。知らない方は下記の記事を参照して下さい。

プロジェクト管理を圧倒的に効率的にする方法を考えてみた

チケット駆動開発のメリット・デメリット

転職で要求される実務経験とは?

少なくともうちでは、環境構築の経験とGitでチーム開発の経験は必須ですが、会社の規模や種類によって要求される経験が違うと思います。

僕は就職経験すらないので想像ですが、恐らく下記のようなスキルや経験を要求されると思います。

中小Sier

テスト・検証の経験、ソースコードをレビューしてもらった経験など

受託会社

発注から納品までの一連の流れを経験していること、Gitでのバージョン管理+チーム開発の経験

大企業・事業会社

Gitでのバージョン管理、環境構築はもちろん、チーム開発でのポートフォリオなど、実プロジェクトの開発経験

実務経験のまとめ

大きな会社の場合は採用要件が色々あるとは思うのですが、小さい事業会社や受託会社の場合経験よりスタンスが大事な気がします。

面談などで話してきた体感で言うと、デキるやつはポイントを抑えて自力で技術やら経験を習得しようとしますが、デキないやつは受け身で教えてもらうことばかり考えてたりします。

受け身の姿勢だと永遠に教え続けないといけないし、そんなやつと仕事するより勝手に成長して勝手に仕事してくれる人の方が楽しいし、一緒に仕事したいと思います。

んで勝手にやってくれる人の場合、コイツにこういう経験させたらどうなるかな?みたいなことも考えさせてくれるので、より難易度高くて高度な仕事とかができる可能性が高くなるんですよね。

うちみたいな会社の場合実務経験がまったくなくても学びながら仕事できる環境も用意してますし、経験が全くないことは問題にしていません。それよりもコイツと働いたらオモロイって思える人と一緒に仕事したいし、こちらもそういうスタンスを続けられたらなって思っています。

サイト制作無料相談 サイト制作無料相談