🤷‍♀️

「今どれくらい理解してる?」を共通言語にする

2024/12/24に公開

Social Databank Advent Calendar 2024 の 23 日目です!

はじめに

こんにちは!エンジニアの卵 🥚 のナガイです。

文字通り 0 から勉強中の身なので、「どういうこと?」「意味わからん……」「完全に理解したわ」「??????」を繰り返して頭をかかえる日々を送っています。毎日先輩エンジニアの皆さんに教えていただき助けてもらってばかりで、頭が上がりません……。
この記事では、そんな苦しめられている「わからん」という感覚について、「わからんを教えてもらう立場」から向き合ってみました。

「理解した」までにはグラデーションがある

「このトピック、理解できた?」と先輩に聞かれた時、自分はよく困ってしまいます。
なぜなら、この部分は理解できているけど全容はほとんどわかってない気もしている……これはこのトピックを理解したと言ってもいいのか?と答えにつまることが多いためです。

「じゃあどこがわからないの?」と聞かれて、わからない部分を教えてもらっても、「なんとなくわからん」感覚が消えない。

というか、一言で「わからん」と言っても、内情はかなり違うと思います。
1 つの要素につまづいてどうしても抜け出せない、
取り組み始めてみたものの手がかりすらない状態、
いわゆる「完全に理解した」状態、
あと少しで理解できそうなくらい……。
「わからん」って 200 色あんねん。

完全に理解したわ
出典 : ポプテピピック(大川ぶくぶ)

さらに厄介なのは、何が「わからん」のか「わからん」という事態が結構な頻度で起こるということです。自分で自分の「わからん」を掴めていないのだから、教える側も困りますよね……。

このように、「わからん」から「理解した!」と胸を張って言えるまでには、本人も理解できていない範囲を含めてなかなかのグラデーションがあります。

「理解した」を理解した方がいい

教わる側が 自分の「理解した」の度合いをある程度正確に把握すること は、多くのメリットを生むと思います。

教わる側

  • 質問すべきレイヤーがわかることで、人に相談しやすくなる
  • 自分が今どのレベルで理解していて、次どのレベルになるべきかが明確になり、学習の見通しが立てやすくなる
  • 人に自分の現状の理解度を説明できるようになり、適切な評価・指導判断を受けられる

教える側

教える・教わる時間の最初に、理解度のすり合わせを行なうことで、教える側にも以下のようなメリットが考えられます。

  • 相手が今必要な知識を正確に把握でき、適切な指導・アドバイスができる
  • 理解していることを重ねて説明する時間が減り、有意義に時間を使える
  • 教える時間がヒアリングで終わらない

「わからん」「理解した」を共通言語にする

しかし、これらを相手に正確に伝えることは大変難しいことだと思います。
「わからん」「理解した!」という判断がそもそも個人の感覚に大きく依存するものだからです。
公式を暗記してテストで正解してもロジックは理解できていない、ということはいくらでもありますし、数値化できるものでもありません。

そのため、教わる側と教える側の間で共通の言語を用意しておく という方法は 1 つの手段として有効ではないかと思います。

実際に自分は、よく相談に乗っていただく先輩エンジニア(Teppei Shimada さん)に「理解度を明確にしてみよう」とご提案いただき、細かいすり合わせを行ってみました。

Slackのメッセージ

これまでの具体例を思い返しながら、自分と shimada さんの間で共通をとりながら作成したフレームワークがこちらです。

理解度フェーズ

フェーズ 状態
0 知らない 何も知らない!無知
1 存在を知ってる 名前は聞いたことある!無知の知
2 理論を知ってる 概要・目的・コンセプトは知ってる
3 使い方を知ってる とりあえず使えた・書けた
4 理解して使える 納得して説明できる
5 理解して使える + 他の技術と比較して説明できる

あくまでも自分の感覚を軸に作ったものですが、各フェーズを Javascript を例にして具体的な感情を書き起こしてみます。

0. 知らない

  • この世にそんなものがあることも知らない 👶
  • 【例】 Javascript という言葉も聞いたことない

- - - - - - - - - - ↓ "知ってる" の壁 ↓ - - - - - - - - - -

1. 存在を知ってる

  • 名前は聞いたことある。自分がそれに対して無知ということを知っている
  • 【例】 HTML、CSS、Javascript って一緒に聞くやつだ。動く部分を書けるんだよね?("動く"ってどういうことなんだろ……)

2. 理論を知ってる

  • 概要・目的・コンセプトなどは知ってる
  • 公式ドキュメント読んでみたし、まとめ記事も読んでみたし、ChatGPT でも聞いてみた
  • なんとなく分かった感(=完全に理解した
  • 【例】 Udemy の学習コース全部見ました!メソッドとか関数使って計算したり処理定義したりできるんですよね。ドキュメントは見ながらになるが、ざっくりと概要理解した気がする

3. 使い方を知ってる

  • 一応使えた、一応書けた
  • で、どういうこと?え、なんもわからん(=なんもわからん
  • 実際にどういうロジックが走ってるのかはあんまり腹落ちしてないから、公式ドキュメントに載ってる使い方しか分からないし、どうやら正しいようだけどこれが合ってるのかずっと不安
  • ベターはなんとなくわかるが、ベストがわからない。何が一番スマートなんだろう
  • トピックとトピックの繋ぎがないので、応用する想像がつかず、脳内の世界が狭い
  • 自分のモノにはできていない感が拭えない……
  • 【例】 学習コースではこういう場合は reduce って言ってたからそう書いてるけど、なぜこれがベストなのかは見当もつかないし他の書き方はまったく思いつかない。Javascript、怖い

- - - - - - - ↓ "理解した" の壁 (怖さの壁)↓ - - - - - - -

4. 理解して使える

  • このトピックの全容を掴めている
  • このトピックについて理解していると自信があるし、自分のモノにしたと言える
  • これについて人に教えられる
  • 怖くなくなった!
  • 【例】 処理の道筋が頭に浮かぶから、このメソッドを使おう、とすぐアイディアが思いつく。影響が想像できるので、ダメだったらこうすればいい、と選択肢が浮かぶ。書くこととその後が怖くない

5. 理解して使える+

  • 他の類似のトピックの中で、このトピックがどういう立ち位置にあるのか把握している
  • 他の類似のトピックも同じレベルで理解している
  • 他の類似のトピックと比較した上でメリット・デメリットを判断し、この手段を選べる
  • 【例】 Python は読みやすさやデータ分析に強いけど、Web 開発では やっぱり JavaScript のエコシステムが圧倒的なので、後輩の新人にまず学習してもらうのは Javascript で良さそう

共通化した「理解した」でコミュニケーションする

上記の「理解した」フェーズは、技術のフレームワークや言語全体だけでなく、技術内の小さな要素、メソッド、理論などに小さく切り分けて活用するのも良いと思います。

自分も、Vue.js の学習を進めている中で、「Vue.js 全体の理解度は 3 で止まっている」という感覚があるものの、「親子の受け渡し、 props はだんだん怖くなくなって 4 に近づいてきた」「v-model がなんとなく 3 から抜け出せていない」などと細分化して到達度を確認するようになりました。

これまでは、1on1 の際に「正直全然分かっていない気がします……ref は分かってきたかもしれません」くらいの温度感で話してしまうことも多かったのですが、先輩と同じ理解フェーズを共有することで、コミュニケーションが取りやすくなった(のではないか)と感じています。

自分の言葉で自分の理解度フェーズを作ろう

さきほどの理解度フェーズはあくまでも自分の感覚に基づいたものであり、人によって様々な区分があると思います。

自分の場合は、知ってから自分のものにするまでゆるやかに長い段差を感じているため、そこを飛ばさずフェーズに起こしてみました。特に 3 の「使い方を知ってる」の段階が長く、しかもある程度の知識は取り込み済みなため自分でも何が抵抗あるのかどうもよく分からず、いつもそこで苦しんでいます。
なので、上のフェーズも 3 をもう少し具体的に分解する必要があるように感じています。

知ってからなんとなくわかるまで時間がかかる人、理解するまでは一瞬の人、それぞれの段階があるはずなので、ぜひ自分の言葉で自分の理解度をフェーズ化してみてください。

「わからん」に苦しむ皆さん、ぜひ来年も一緒に頑張っていきましょう 🔥

ソーシャルデータバンク テックブログ

Discussion