はじめに
プログラミングの文法は理解しているのに、
現場に入ると手が止まってしまう。
・仕様書は読めるけどコードにできない
・ソースを読んでも何をしているか分からない
・デバッグの進め方が分からない
こういった経験はありませんか?
これは能力の問題ではなく、
👉 「見方」の問題であることがほとんどです。
■ なぜ現場で手が止まるのか
現場で手が止まる原因はシンプルです。
👉 情報が「繋がって」見えていない
この「なぜ繋がらないのか?」については、
こちらで詳しく解説しています👇
例えば、
・仕様書(シーケンス)
・I/F仕様
・ソースコード
これらはそれぞれ理解できても、
👉「どことどこが繋がっているのか」が分からない
つまり、
経験者は「線」で見ている
新人は「点」で見ている
という状態になっています。
■ 現場でよくあるギャップ
現場ではよくこう言われます。
・「ここ見れば分かるよ」
・「この流れでやってるだけだよ」
これは、
・どこに何があるか分かっている人
・設計や構造を理解している人
にとっての話です。
初めて触る人にとっては、
・どこを見ればいいか分からない
・何と何が繋がっているか分からない
👉 だから手が止まる
■ 解決の第一歩は「線で追うこと」
最初にやるべきことは、
👉 全部理解しようとしないこと
そして、
👉 データの流れを「線」で追うこと
この「線で理解する具体的な手順」については、
こちらで実際のやり方を解説しています👇
例えば、
・この値はどこから来ているのか
・どの処理で作られているのか
・どこに渡されているのか
これを1本の流れとして追うことで、
理解が一気に進みます。
■ 新人・初級PGがつまずくポイント5選
① 仕様書は読めるがコードにできない
仕様書(シーケンスや画面フロー)は理解できるのに、
・どの処理の流れの中で実行されるのか
・どこに実装すればいいのか
が分からず手が止まるケースです。
✔ 原因
👉 仕様書とコードの対応関係が見えていない
✔ 対策
👉 シーケンスの1ステップをコード上で探す
「この処理はどのクラス・メソッドに対応するのか?」を
1つずつ紐づけていきます。
この問題も「点」で見ているとハマります。
「どこから来て、どこに渡っているか」を線で追うことが重要です。
② ソースコードが追えない
コードを見ても、
・どこから処理が始まるのか
・どこに遷移するのか
が分からなくなるケースです。
✔ 原因
👉 処理の入口と出口が見えていない
✔ 対策
👉 入口を1つ決めて追う
例:
・ボタン押下(UIイベント)
・API呼び出し
・処理開始メソッド
ここから順番に追っていきます。
この問題も「点」で見ているとハマります。
処理の流れを「線」で追うことで理解できます。
③ 非同期処理で混乱する
async / await やイベント処理などで、
・どの順番で動いているのか分からない
・値がいつ更新されるのか分からない
という状態になります。
✔ 原因
👉 処理の時間軸が見えていない
✔ 対策
👉 「いつ実行されるか」を整理する
・この処理は即時実行か
・イベント発火か
・別スレッドか
を意識して追います。
非同期も「流れ」が分からないと理解できません。
時間も含めて「線」で追うことが重要です。
④ デバッグの進め方が分からない
エラーが出ても、
・どこから調べればいいか分からない
・何を確認すればいいか分からない
という状態になります。
✔ 原因
👉 調査の順番(流れ)がない
✔ 対策
👉 データの流れを逆に追う
・結果 → 原因
・表示 → データ → 処理
と遡っていきます。
デバッグも同じです。
「どこから来たか」を線で追うことで原因に辿り着きます。
⑤ したいことは分かるのにコードが書けない
「やりたいこと」は分かっているのに、
・どう書けばいいか分からない
・文法や構造に落とし込めない
というケースです。
✔ 原因
👉 ロジックの分解ができていない
✔ 対策
👉 処理を小さく分解する
例:
入力を受け取る
↓
条件分岐する
↓
結果を返す
このレベルまで分解すれば、
あとは文法に当てはめるだけです。
ここでも重要なのは「流れ」です。
処理を「線」として分解するとコードに落とし込めます。
■ まとめ
現場で手が止まる原因は、
・知識不足ではなく
・構造が見えていないこと
にあります。
特に重要なのは、
「点」ではなく「線」で理解すること
最初は難しく感じますが、
・データの流れ
・処理の流れ
・値の受け渡し
を1つずつ追っていけば、
必ず理解できるようになります。
■ 次回予告
今回挙げたポイントに対して、
・線の繋ぎ方のコツ
・仕様とコードの紐付け方
・ソースやデータの追い方
を、具体例ベースで解説していきます。
今回挙げたポイントの中で、
「ここで手が止まっている」
「ここをもう少し詳しく知りたい」
などあれば、コメントで教えてください。
優先して記事にしていきます。
また、
今回の内容以外でも、
「こんなところで困っている」といったことがあれば、
ぜひ教えていただけると嬉しいです。