プログラミング

未経験エンジニアの育成方法を実体験を元に紹介する

エンジニアの育成

ども、てぃーぽです。

新卒未経験で現在web系の企業に就職し、2年目が終わろうとしているPHPエンジニアです。

先に言うと、「育成された側の実体験」です。(がっつり教育担当というわけではないのでご了承ください。また実体験のため、web系になります。)

ただ、エンジニアインターンの面倒も見ているので育成する側の意見も少しは紹介できるはずです。

PCてぃーぽ

僕は未経験でエンジニアになり、ひーこら言いながら仕事をしてきました。

1人前とまではいきませんが、転職で上場企業に内定をもらえるレベルではあります。(現在はどこもエンジニア不足なので受かりやすいですが)

今はまだ転職してませんが、現職の案件が落ち着いたら会社を移る予定です。

そんな僕がどういう道順でエンジニアとしての力をめきめきとつけてきたかを紹介します。

 

育成方法の手順

はてなを浮かべるてぃーぽ
  1. 無料動画サイトで基礎を勉強させる
  2. 簡単なアプリケーションを作らせる
  3. 簡単な仕事をふる
  4. 徐々に難しい仕事をふる
  5. プロジェクトにアサインする
  6. できれば自宅で勉強させる(モチベ管理)

番外編:未経験がエンジニアの勉強をすると心が折れやすいので常にケアしてあげましょう

 

こちらを1と2番はどこでもやっていることだと思います。

ただ3番が1番難しいのではないでしょうか?

「簡単な仕事っていったってそんな仕事常にあるわけじゃないよ。。。」

すごくわかります。技術がまだ身についてないエンジニアにふれるタスクは少ない。。

なのでここを重点的に紹介していきたいと思います。

 

最初はほったらかされていた

黒いてぃーぽ

私は新卒未経験でエンジニアになりました。

就職前にインターンという形で、時給をもらいながら現在の会社に勉強に行っていました。

 

そこで最初の勉強というのが関数を覚えること

「このPHPの関数を勉強して」

と渡されたエクセルシートを見て調べて、サンプルをつくるというもの。

 

やり方は自由!

チェックする人はいない!

進捗もチェックされず!

まさにほったらかし育成!!(※これは悪い例です)

 

1ヶ月ほどこのほったらかし育成をしていましたが、なにも身につきませんでした。。。(めちゃくちゃ暇だった。)

 

少し指示が入り出す

びっくりするてぃーぽ

僕の状況を見かねた先輩たちからはいろんなアドバイスをもらうことができました。

  • クラスを学びなさい
  • オブジェクト思考を学びなさい
  • フレームワークを学びなさい
  • インフラは大事
  • ラズパイやってみ?
  • 掲示板つくれば?

 

ストップストップ!!

最初になんでもかんでも詰め込まさせないで泣

覚えた端から忘れていきます!

大事なのは順序良く、学ばさせることです。

 

ここから色々やりましたが、1番よかった流れが下記です。

  • クラスの勉強:http://www.objective-php.net/
  • 先輩から課題をだされる(検索画面やFizzBazz等)
  • 掲示板をフレームワークを使わずに作る

掲示板はアプリケーションの最低限の機能を持っているので、これが作れればエンジニアとして最低限の能力を持つことができます。

普通の新卒研修を受ける

焦るてぃーぽ

就職してからはエンジニア、営業関係なく外部の新卒研修を受けました。

期間としては1.2ヶ月程度。

その間はあまりプログラミングが業務でできなかったのでさらに忘れることに。。。

 

この普通の新卒研修はエンジニアにはいらないと思います。

htmlとcssの修正タスクが最初

PCてぃーぽ

社内外問わず、簡単な修正タスクがふられるようになりました。

名前を変えるだけだったり、コメントアウトするだけだったり。

少し難しいのではtitleやメタデータの変更などをし、SEOの勉強にもなりました。

 

別にこんなのはエンジニアじゃなくてもできますが下記が経験になりました。

  • ツールを使っての本番環境へのアップ
  • タスク終了時の連絡や報告
  • Gitの使い方(当初はSVN使ってました)

このタスクで「あ、おれ仕事してる!!」と感じることができたので、初めて業務で達成感を得ることができました。(これが6月とか)

 

社内のツールやミスってもあまり迷惑にならないタスクをふるのがいいと思います。

「これわざわざふる程のタスクじゃないんだよな。」

自分でやったら1分で終わるようなものでも新人にふってあげましょう。

むしろ時間がかかって非効率ですが、新人は業務をすることに飢えています

こんなことでも成長に繋がりますので。

 

社内ツールがない会社は新人にタスクをふるように作っておいた方がいいです。

部署や社内メンバーの一覧とか簡単なツールでいいと思います。

運用系タスクを任されるようになる

おじぎのてぃーぽ

社内ツールを使った運用系のタスクです。

自社サービスの運用ですね。

 

ただCSVをツールに流すだけだったり、エラーが起きたら先輩に報告するだけだったりしましたが、どんどん業務をすることができて、嬉しかったのを覚えています。

 

慣れてきた頃には運用系ツールのちょっとした改修をしたりしました。

nullチェックを追加して安全性を高めたりとかのちょっとしたことでしたが、これが初めてのサーバーサイドのタスクだったのでいい経験を積むことができました。

 

Redmineの設定タスク

サーバーサイドで新人向けのタスクってやっぱり少ないわけです。

ある程度の技術力は必須。

タスクがなければひねり出しましょう!

そこで僕に言い渡せれたのが「Redmine」の設定。

※Redmineはプロジェクト管理ができるオープンソフトウェア。社内ではノウハウ共有ツールとして利用しています。

 

1つのサーバーを渡されて、「これにRedmine」を設定しといて。

とぶん投げ。

gemでインストールしたり、バージョンを気にしたりするだけなのですが

ありえないほどハマった。

先輩に手伝ってもらいながらも、先輩でも解決できない始末。

結局は最初に準備してもらっていたrubyのバージョンが違ったせいだった。。

これに2週間程かけましたね。

 

得たものは少なかったですが、未経験エンジニアの「黒い画面こわい。。。」を克服できたタスクでした。

新人に重要な本番環境にログインさせるのが怖い場合はこういったタスクがいいかもしれません。

casperjsでスクレイピングタスク

社内で必要な情報をスクレイピングするタスク。

Google先生にIP制限くらったりと怒られることも多かったですが、これはめちゃくちゃ楽しかった。

プログラミングの自動化の効果を1番感じることができたタスクでした。

普通に手作業でやっていたら1件あたり5分とかかかる作業をバックグラウンドで1分で終わらせてくれるとか最高すぎでしょう。

こういった自動化させるタスクをエンジニアにやらせると、エンジニアは興奮します。

世の中を便利にするとまでは言いませんが、社内を便利にさせるだなんてエンジニア妙理につきるものです。

 

フレームワークLaravelを利用したプロジェクトにアサイン

社内プロジェクトにアサインといいつつ、最初はフレームワークの勉強でした。

あとはjsフレームワークのRiot.jsの勉強。

ここら辺からメキメキとプログラミングの能力を伸ばしていくことができました。ここまでフレームワークを勉強する機会がなかったのですが。もっと早くに勉強したかった。。。

 

フレームワークを学んでからはもうある程度普通のエンジニアとしてのタスクを振られました。

運用コマンドの開発や値のチェックや加工。セッション保存。モジュールの開発。

あげればキリがないですが、エンジニアの成長はやはり業務ありきです。

ここを1度経験することで、自主学習にもギアがかかり始めます。(つくれるものが増えてくるため)

 

小規模の受託開発の任される

てぃーぽが温泉に入っている

これは案件に恵まれたのですが、簡単な社外に提供するツールを一任されました。

少し納期がきつかったので毎日残業でしたが全くつらくありませんでした。

初めて任されて興奮していたのと、いいものを開発しようと奮起していたためです。

難しい箇所は先輩に相談することができる環境だったので心強くもありました。

また、初めて外部の人と連絡を密に取るようになったのでそれも社会人、エンジニアとしての能力を上げられたと実感しています。

 

新人に裁量権を与えて自由にやらせてみましょう!

めちゃくちゃ頑張りますよ!

できれば自宅で勉強させる

てぃーぽが寝てる

社会人はプライベートまで管理することはできません。

家に帰ったらぐだぐだしたいでしょう。

「帰っても勉強しろよ!」と頭ごなしに言ったところで勉強しない人は勉強しないでしょう。

ですが、エンジニアは勉強し続けないといけないのも事実です。

 

そこでどうすれば新人に勉強を促すことができるかというと、下記の3つになります。

 

  1. 先輩が自宅で作ったツールを新人に自慢する
  2. 先輩が一緒にツール、サイトを作ろうと誘う
  3. 開発環境を準備してあげる
  4. 学習におすすめの本やサイトを教えてあげる

 

先輩の背中を新人に見せていきましょう。

先輩エンジニアの背中を見ることで新人も「あ、おれも家に帰ったら開発しよう」と思います。

 

1番効果的なのは先輩がツールを作成するのに新人を誘うことです。

これは半端ないほどの成長になります。ただ、先輩の負担も半端ない。

これはあまり促せないので「新人さそって何か作ってみたら?」としか言えないと思います。(僕は仲が良い先輩と出会えたので幸運でした。)

 

また、効果的なのは開発環境を準備してあげることです。

dockerファイルや開発環境構築のノウハウを社内で公開しておくと新人は勝手にやり出すでしょう。

コマンド一発で開発環境が整うdockerは本当におすすめです。まだ導入していない場合は導入しましょう。

 

また、学習におすすめの本やサイトを教えるのも効果があります。

本は社内で買うのでもいいですが、持って帰ることは少ないです。自分で購入してこそ勉強します。(1番良いのは月1冊の宿題として技術本を読ませること。本題は会社で負担してあげましょう。)

 

web系でおすすめなのは自社で使う言語の本はもちろんですが、電車で読んでも意味があまりないので知識的な技術本がおすすめです。

 

 

 

この2つは結構おすすめです。

通常のプログラミングでは意識しない点は学習するのが難しいので、ここらへんの知識をつけさせましょう。

小悪魔女子大生の方はちょっと文体にクセがありすぎるのでサイトで見てから判断してください笑 別に本を買わなくてもサイトでもいいと思います。

小悪魔女子大生のサーバエンジニア日記

 

おすすめの学習サイトならUdemyが完璧です。
そこのdockerの学習動画はめちゃくちゃ勉強になります。「ゼロからはじめる Dockerによるアプリケーション実行環境構築」

 

詳しくはこちらの記事で解説

プログラミング初心者はUdemyで勉強すると超絶捗る

未経験がエンジニアの勉強をすると心が折れやすいので常にケアしてあげましょう

泣いているてぃーぽ

エンジニアの勉強は最初がつらいものです。

わからないことは多すぎだし、先輩はなんでもできるしで自信をなくします

「ああ、おれってプログラミングの才能ないのかな。」ってなります。僕も当然なりました。

 

ここで僕がケアしてもらったのが先輩でした。

帰りに一緒にシーシャに行って悩みを打ち明けて、「大丈夫! こういうことを最初はやればいいよ! なんなら俺と一緒にサイトつくろうぜ!」といってくれた先輩には感謝しかありません。

 

これは新人と先輩との人間関係になるのであまり参考にならないかもしれませんが、具体定期なケア方法としてはやはり1対1で会話することです。

「じゃあランチや業務終わりにやればいいの?」

これだとむしろ逆効果で、新人は「プライベートの時間を削られている」と感じるでしょう。

なので業務時間中に面談という形式で時間をとってください。

1週間に30分程度で大丈夫です。

 

「最近困ってることある?」

「何か非効率なこととかない?」

「新宿にうまい餃子があってだな。」

 

話す内容はなんでもOKです。

毎回真面目な話をするのも疲れてしまいますので、雑談を多めにしましょう。

雑談だけで終わってしまっても問題ないです。業務のリフレッシュにもなるのでそういった小さなケアが大事なのです。

もちろん、新人が悩みを持っていたら真摯に向き合って解決してあげてください。

 

僕からは以上です。

よい新人エンジニア育成ライフを!