Web系エンジニアのカズです。エンジニア歴は7年ほどになります。
主にバックエンドエンジニアメイン+フロントエンド+チーム全体の進捗管理の業務を担当しています。
私の経験を元に、新人エンジニアさんがほったらかしにされてしまう原因とやるべきことについて記載した記事になります。
この記事を読んでいただくことで、悩んでいることの解決方法が提示できれば幸いです。
主に新人プログラマーの方に向けて、書いた記事になります。
ほったらかしにされる原因3選
・①教える先輩が忙しい
・②今現在、任せられる仕事がない
・③質問してくるのを先輩が待っている
①教える先輩が忙しい
原因の1つ目は、教える先輩が忙しいからです。
②今現在、任せられる仕事がない
原因の2つ目は、任せられる仕事がないからです。
あくまで今現在はタスクがないという場合もあります。
今後は、このようなタスクを割り振ろうと思っているけど今はそのタスクに着手できないという状況もあり得ます。
良くあるのは上流工程の要件定義や顧客からのヒアリングで時間が掛かっていて開発作業に着手できないという状況もあるでしょう。
③質問してくるのを先輩が待っている
3つ目の原因は、質問してくるのを先輩が待っている場合です。
新人エンジニアさんに対して、自発的に行動してほしいと思われている場合があり得ます。
先輩も1~10全てを細かに説明するのは大変です。
ある程度質問してきてくれる新人エンジニアさんの方が、コミュニケーションは取りやすいはずです。
やるべきこと
・ソースコードや仕様書を読んで、プロジェクト全体像を把握できるように調べてみる
・自分にできる仕事がないか調べてみる
・自分が理解できていない箇所について調べてみる/学習してみる
・何をやるべきか先輩に相談してみる
ソースコードや仕様書を読んで、プロジェクト全体像を把握できるように調べてみる
ソースコードを読む(バックエンドエンジニア編)
バックエンドエンジニアの場合は、まず下記の点を大まかに把握したいです。(Laravel前提)
①DBの構成を見る。テーブルの親子関係など
②各テーブルのデータが、どの画面に使われているか把握する
③CRUD処理(登録・更新・削除)をしているソースを見る
④共通処理を把握する
あくまで参考ですが、これらが把握できると大まかな流れは掴みやすいです。
①DBの構成を見る。テーブルの親子関係など
DBツールなどを使用して、DB全体の内容を把握しましょう。
Laravel前提の話になりますが、親子関係などテーブルの関係を見たい場合は、対象のModel(モデル)ファイルを見て確認できます。
Modelの親子定義ソースコードの例(hasOneメソッド)
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function phone()
{
return $this->hasOne('App\Models\Phone');
}
}
②各テーブルのデータが、どの画面に使われているか把握する
Laravel前提の話になりますが、モデル名やテーブル名と似た名称で、controllerが生成されているはずです。
ルーティングファイルを見て、そのcontrollerを読み込んでいるurlの画面を見ることで確認が可能です。
ルーティングファイルの参考例
Route::get('/post/index', [PostController::class, 'index'])->name('post.index');
Route::get('/post/register', [PostController::class, 'register'])->name('post.register');
Route::get('/post/edit', [PostController::class, 'edit'])->name('post.edit');
Route::post('/post/store', [PostController::class, 'store'])->name('post.store');
Route::post('/post/update', [PostController::class, 'update'])->name('post.update');
③CRUD処理(登録・更新・削除)をしているソースを見る
Laravel前提の話になりますが、controllerかrepositoryにロジックが記載されているはずです。
大まかな処理の流れを見ると良いでしょう。
CRUD処理参考例
public function store(Request $request)
{
try {
$posts = Post::post();
Post::create($request->all());
return redirect()->route('post.index')->with([
'posts' => $posts,
'store' => 'true'
]);
} catch (Exception $e) {
return redirect()->route('post.index')->with([
'posts' => $posts,
'store' => 'false'
]);
}
}
}
ソースコードを読む(フロントエンドエンジニア編)
フロントエンドエンジニアの場合は、まず下記の点を大まかに把握したいです。
①レイアウトの共通ファイルを把握する
②プラグインの把握をする
③バックエンドエンドとのデータの受け渡し方法を把握する
④どのviewファイルがどの画面に適用されているのか確認する
(どのフレームワークを使用するかによって確認方法が異なる)
あくまで参考ですが、これらが把握できると大まかな流れは掴みやすいです。
①レイアウトの共通ファイルを把握する
大抵は、レイアウトの共通化処理はされているはずです。
レイアウトに限らずですが共通ファイルにどんな処理が書いてあるかは把握しておく必要があります。
②プラグインの把握をする
例えばdatepickerなどのカレンダー機能など、プラグインやライブラリを使用している場合は良くあります。
それらを把握することで効率良く実装することが出来るでしょう
③バックエンドとのデータの受け渡し方法を把握する
フロントエンドエンジニアの場合フロントエンドの事しか理解していないことが、あるかもしれません。
ですが、画面に表示するデータはバックエンドの処理を通過して表示する場合が多々あります。
受け渡し方法の把握は必要でしょう。
また本で学習をすることも、おすすめです、
ソースコードを読んでも内容が分からない場合は質問しよう!
自分にできる仕事がないか調べてみる
自分が理解できていない箇所について調べてみる/学習してみる
解決策:controllerまたはrepositoryにロジックが書いてあるはず。
・データの登録/更新/削除処理の書き方が理解できない
解決策:メソッドについては調べれば沢山でてくるので参考にする
・データの取得方法と値を画面に表示させている処理が理解できない。
解決策:controllerからパラメータを渡してbladeで表示させているはず。
何をやるべきか先輩に相談してみる
・仕様について理解する(ソースコードを読む。ドキュメントを読む。先輩に聞く。)
・ドキュメント整備(仕様書の作成や更新、設計書の作成や更新)
・プログラム改修
・次のタスクに向けて学習をする
コメント