現場で仕事をしていると、
同じ「分かりません」でも大きな差を感じることがあります。
ある人は、
自分がしたいこと、
どこまで調べたのか、
何が分からないのか
を説明できます。
例えば、
「画面遷移しません」
「ボタン押下処理までは確認しました」
「この処理で画面を切り替えていそうです」
「でもこのコードが何をしているのか分かりません」
と相談してきます。
一方で、
起こっている現象は説明できます。
「画面遷移しません」
「動きません」
「どうしたらいいですか?」
でも、
何をしたいのか、
何を調べたのか、
何が分からないのか
が説明できません。
どちらも困っていることは同じです。
でも受ける印象は大きく違います。
前者は、
「ちゃんと調べているな」
「あと少しで解決できそうだな」
と思われます。
後者は、
「何をしようとしているんだろう?」
「この仕事を任せて大丈夫かな?」
と思われてしまうことがあります。
なぜ差が生まれるのか
新人の頃はよく聞きます。
「Javaが分かりません」
「C#が分かりません」
「Pythonが分かりません」
もちろん言語を勉強することは大切です。
でも僕は、
先ほどの2人の違いは言語ではないと思っています。
本人は
「言語が分からない」
と思っていることが多いのですが、
実際には、
プログラムの共通部分を理解できているかどうかの差だと感じています。
プログラムは「データ」と「処理」
実際のプログラムには、
・イベント
・状態管理
・同期処理
・非同期処理
・データベース
・ネットワーク通信
など、
たくさんの要素があります。
でも最初に押さえておきたいのは、
データ
と
処理
です。
データの話
プログラムは常に何かの値を扱っています。
例えば、
・顧客ID
・顧客名
・金額
・検索結果
・ログイン状態
などです。
そして、
データに対して行うことは意外と多くありません。
・作る
・保存する
・渡す
・変更する
・参照する
例えば顧客検索なら、
顧客IDを入力する
↓
検索処理へ渡す
↓
DBから取得する
↓
結果を保存する
↓
画面に表示する
という流れになります。
処理の話
次は処理です。
プログラムは処理の連続で動いています。
そして処理にも基本パターンがあります。
・呼び出す
・判断する
・繰り返す
・待つ
・終了する
例えば画面遷移なら、
ボタンを押す
↓
条件を確認する
↓
画面生成処理を呼ぶ
↓
画面を切り替える
という流れになります。
なぜこれが大切なのか
データと処理を意識できるようになると、
調査の仕方が変わります。
例えば値がおかしい時。
「値がおかしい」
で終わるのではなく、
・どこで作られた?
・どこで変更された?
・どこで渡された?
と考えられるようになります。
画面遷移しない時も同じです。
ボタン押下処理は呼ばれた?
条件判定は通った?
画面生成処理は呼ばれた?
画面切替処理は実行された?
というように、
確認する場所が見えてきます。
だから、
何を調べれば良いのか。
何が分からないのか。
を説明できるようになります。
まとめ
もちろん実際の開発では、
イベントや状態管理、
同期・非同期、
データベースやネットワーク通信など、
まだまだ覚えることはたくさんあります。
でもまずは、
データ
と
処理
です。
データは、
・作る
・保存する
・渡す
・変更する
・参照する
処理は、
・呼び出す
・判断する
・繰り返す
・待つ
・終了する
実際のプログラムは、
こうした部品の組み合わせで出来ています。
まずはここから。
これが理解できるようになると、
不具合が発生した時も、
何を調べれば良いのかが見えるようになります。
そして、
何が分からないのかを説明できるようになります。
それが結果的に、
調査する力や相談する力にも繋がっていくと思っています。