はじめに
こんにちは、エンジニア4年目の嶋田です。
1年目のある日、私はいつものように実装を進めていました。
$ php artisan serve
# よし、動いた...あれ、でも一発でエラー出なかったな
私:「先輩、エラー出ないんですけど、これで本当に合ってますか?」
先輩:「え、エラーホリックになってない?笑」
その瞬間、自分の異常な状態に気づきました。
私はエラーを解決することで成長を実感していたので、エラーが出ないと「何も学べていない」「本当に正しいのか不安」 と感じていたのです。
- 「エラーが出て、それを直せたら成長した証拠」
- 「エラーが出ないと、逆に不安...本当に動いてるの?」
- 「1回でエラーが出ないコードって、何も学んでないってこと?」
今思えば完全に依存症でした。「エラー解決 = 仕事をした証」 という価値観に囚われていたんです。
今回は、私が「エラーホリック」から卒業するまでの4年間の思考の変化を、正直に告白します。
もしあなたが「エラーを解決することに達成感を感じすぎている」なら、この記事がきっと役に立つはずです!
目次
「エラーホリック」とは?私がハマっていた思考の罠
先輩が言った「エラーホリック」とは、エラーを解決することに依存して、エラーが出ない状態を不安に感じる思考パターンのことです。
🚨 1年目の私の思考パターン
パターン1:エラー解決 = 成長の証
// エラーが出た!
$user = User::find($id);
echo $user->name;
// Error: Trying to get property 'name' of non-object
// 調べて修正
if ($user) {
echo $user->name;
}
// 動いた!
「よし、今日も成長した!エラーを1つ解決できた!」
エラーを解決した数が、自分の成長のバロメーターになっていました。
パターン2:エラーが出ない = 不安
// すんなり書けた
public function index()
{
$users = User::paginate(20);
return view('users.index', compact('users'));
}
// 一発で動いた...
「あれ?エラー出ないな...」
「これで本当に合ってるの?」
「何も学べてない気がする...」
正解が分からないから、エラーがないことが逆に不安でした。
パターン3:エラーを求めてしまう
// 無意識に複雑な書き方を選んでいた
// シンプルな書き方(でもエラーが出なさそう)
$user = User::find($id);
// わざわざ複雑な書き方(エラーが出そう)
$user = User::where('id', $id)->first();
// ↑ こっちの方が「ちゃんと考えてる感」がある気がする
エラーが出ることで「ちゃんと学んでいる」と思い込んでいました。
なぜこれが問題なのか?
| 問題点 | 具体例 |
|---|---|
| 成長の基準が間違っている | エラーを出さないことの方が価値が高い |
| 本質を見失う | 「顧客に価値を届けること」が目的のはず |
| 効率が悪い | わざわざエラーを出して時間を浪費 |
| 自信が持てない | エラーが出ないと不安になる |
私は**「エラーを解決した数」で自分の価値を測る、歪んだ価値観**にハマっていました。
なぜエラーが出ないと不安になるのか?
振り返ると、この思考パターンになった原因は明確でした。
原因1:「正解」が分からない
// このコード、合ってるの?間違ってるの?
public function store(Request $request)
{
$user = new User();
$user->name = $request->name;
$user->email = $request->email;
$user->save();
return redirect()->route('users.index');
}
// エラーは出ない...でも本当にこれでいいの?
// バリデーションは?トランザクションは?例外処理は?
// ↑ 正解が分からないから不安
未経験の私には 「動くこと」と「正しいこと」の違いが分かりませんでした。
だから、エラーがない状態=「正しいかどうか確認できない状態」と感じていたのです。
原因2:成長の実感が欲しい
エラーが出る → 調べる → 解決 → 「成長した!」
エラーが出ない → ...何も学んでない?
未経験エンジニアにとって、エラー解決は最も分かりやすい成長の証です。
- 昨日できなかったことができるようになった
- 新しい知識を得た
- 問題解決能力が上がった
これらが目に見える形で実感できるのが、エラー解決でした。
だから、エラーが出ないと「今日は何も学べていない」と感じてしまっていたんです。
原因3:「エラー = 学びの機会」を勘違い
「エラーから学ぶことが大事」
↓
勘違い
↓
「エラーが出ないと学べない」
確かにエラーから学ぶことは大事です。でも、「エラーを出さないスキル」の方がもっと価値が高いことに気づいていませんでした。
| 本当の成長 | 勘違いした成長 |
|---|---|
| エラーを出さずに書ける | エラーを解決できる |
| 設計力が上がる | デバッグ力が上がる |
| 予測して防げる | 起きてから対処できる |
エラーホリックを治した3つの「思考シフト」
先輩の指摘をきっかけに、私は価値観を根本から見直しました。
🎓 シフト1:【成長の定義を変える】「エラーを解決した」→「エラーを出さなかった」
一番大きな変化は、何を成長の証とするかを変えたことです。
Before:エラーホリック時代
今日の成果:
- エラーを5個解決した!
- Stack Overflowで3つ解決法を学んだ!
- 「よし、今日も頑張った!」
After:卒業後
今日の成果:
- エラーを出さずに機能を完成させた
- 設計を考えてから書いたら1回で動いた
- 「よし、コードの質が上がった!」
実践:「予防できた数」を数える
// Before:問題が起きてから対処
$user = User::find($id);
echo $user->name; // エラー発生
// → 修正して解決!やった!
// After:問題を予測して予防
$user = User::find($id);
if (!$user) {
abort(404); // ← エラーを予防した!
}
echo $user->name;
// → エラーが出ない。これが成長!
「今日はエラーを3個予防できた」と数えるようにしました。
これだけで、エラーが出ないことが「不安」から「達成感」に変わりました。
🎓 シフト2:【正解の見極め方を学ぶ】「エラーがない = 正しい」ではない
「動く」と「正しい」の違いを理解しました。
Before:エラーがないと不安
// エラーは出ないけど...本当にいいの?
public function store(Request $request)
{
User::create($request->all());
return redirect()->back();
}
// ↑ 動くけど、バリデーションもないし、例外処理もない
After:チェックリストで確認
// チェックリストで「正しさ」を確認できる
public function store(Request $request)
{
// ✅ バリデーション
$validated = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
]);
// ✅ 例外処理
try {
User::create($validated);
// ✅ 成功時のフィードバック
return redirect()->route('users.index')
->with('success', '登録しました');
} catch (\Exception $e) {
// ✅ エラー時の対応
return back()->withInput()
->with('error', '登録に失敗しました');
}
}
「正しさのチェックリスト」を作って、エラーがなくても確認できるようにしました。
実践:コードレビューチェックリスト
## 自分用チェックリスト
- [ ] バリデーションは入っているか?
- [ ] nullチェックは必要ないか?
- [ ] 例外処理は適切か?
- [ ] ユーザーへのフィードバックはあるか?
- [ ] N+1クエリは発生していないか?
このチェックリストがあれば、エラーが出なくても「正しい」と確信できます。
🎓 シフト3:【学びの源を増やす】エラーだけが学びじゃない
エラー以外からも学べることに気づきました。
Before:エラーしか見ていない
学びの機会:
- エラーが出た → 調べる → 学ぶ
エラーが出ない日:
- 何も学んでない...
After:あらゆることから学ぶ
学びの機会:
1. 先輩のコードレビューから学ぶ
2. 公式ドキュメントを読んで学ぶ
3. 設計を考えることで学ぶ
4. うまく動いた理由を分析して学ぶ
5. エラーが出なかった理由を振り返って学ぶ
実践例:「なぜ動いたか」を考える
// 書いたコード
$users = User::with('posts')->paginate(20);
// エラーが出なかった...でも終わりじゃない!
「なぜ1回で動いたんだろう?」
→ with()でN+1を防いだから
→ paginate()で大量データにも対応したから
→ 事前に設計を考えたから
「これが次に活かせる知識だ!」
エラーが出なかったことも、立派な学びの機会です。
むしろ「なぜエラーが出なかったか」を分析する方が、本質的な成長につながります。
卒業後の世界:エラーが出ないことに自信を持てるようになった
「エラーホリック」を卒業した今、私はエラーが出ないコードに自信を持てるようになりました。
マインドの変化
| エラーホリック時代 | 卒業後 | |
|---|---|---|
| エラーが出たとき | 「よし、学べる!」 | 「予防できなかった。次は防ごう」 |
| エラーが出ないとき | 「不安...合ってる?」 | 「よし、設計が良かった!」 |
| 1日の終わり | 「今日は何個エラー解決した?」 | 「今日は何を学んだ?」 |
| 自己評価 | 「エラー解決数」 | 「コードの質」 |
開発スタイルの変化
Before:エラー待ち開発
// とりあえず書く
$user = User::find($id);
echo $user->name;
// エラーを待つ...
// ↓
// エラーが出たら対処
// エラーが出なかったら不安
「本当にこれでいいのかな...」
After:設計駆動開発
// まず考える
// - $idが存在しない可能性 → 404を返す
// - nameがnullの可能性 → デフォルト値
// - 権限チェックも必要かも
// 考えた上で書く
$user = User::findOrFail($id); // 存在しなければ404
echo $user->name ?? '名前未設定'; // null対策
// エラーが出ない
「設計通りだから、これで正しい!」
具体的な変化
変化1:コードレビューが楽しくなった
Before:
「エラー出ませんでしたけど、本当に大丈夫ですか...?」
→ 不安でいっぱい
After:
「チェックリストで確認済みです。レビューお願いします!」
→ 自信を持って依頼
変化2:リファクタリングが怖くなくなった
// Before:触りたくない...
public function calculateTotal($items)
{
$total = 0;
foreach ($items as $item) {
$total += $item->price;
}
return $total;
}
// 「動いてるから触らない方が...」
// After:積極的に改善
public function calculateTotal($items)
{
return $items->sum('price');
}
// 「チェックリストでテストしたから大丈夫!」
変化3:学びの質が変わった
Before:
「今日はエラーを5個解決した!」
→ 表面的な学び
After:
「今日はN+1問題の根本原理を理解した」
→ 本質的な学び
最後に
この記事を最後まで読んでいただき、ありがとうございました!
まとめ:エラーホリック卒業の3ステップ
- 成長の定義を変える:「エラーを解決した数」ではなく「エラーを予防できた数」を数える
- 正解の基準を持つ:チェックリストで「正しさ」を確認できるようにする
- 学びの源を増やす:エラーが出なかったことも、立派な学びの機会
今日からできること
- 「今日はエラーを何個予防できたか」を数えてみる
- 自分用のコードチェックリストを作る(最初は3項目でOK)
- エラーが出なかったとき「なぜ動いたか」を1分考える
- 先輩のコードレビューで「なぜこの書き方を選んだのか」理由を聞いてみる
なぜそのコードの書き方にしたのか自分で根拠を話せるようになれば最高!
エラーが出ないことは、不安ではなく誇るべき成果です。自信を持ちましょう!
私もまだまだ道の途中です。一緒に成長していきましょう!