ろきsanの備忘録

タイトル通り、色んなこと備忘録として記述していこうと思います。

言語化の大切さ、難しさ。「あなたの祖母に説明出来ない限り、本当に理解したとは言えない」

スポンサーリンク

アルベルト・アインシュタインにこんな言葉がある。

あなたの祖母に説明出来ない限り、本当に理解したとは言えない

 

この言葉は社会人になってから知ったのだが、本人が言ったかどうかの真偽はともかく、この言葉を時折思い出す。

 

f:id:ahrk-izo:20180515231311j:plain

 

 

先週、こんなブログを読んだ。

 

ソニックガーデン創業者の倉貫さんのブロク。

kuranuki.sonicgarden.jp

 

ここでは、プログラミングを通して、「抽象化思考」「論理的思考」「批判的思考」が鍛えられる。

そしてこれからの時代、プログラマーに限らず、これらの考え方、思考法が必須スキルになる、と言う。

 

 ほんとにそう思う。

ただ言語を覚えても、アルゴリズム・計算式を渡されても、ロジックが考えられないといいコードは書けない。

 

動けばいいってコード書いてたら、後で痛い目見る。(経験済み)

 

 

そして中でも一番興味が惹かれたのが、

私がプログラミングの指導をする際には、書かれたプログラムの1行1行どんな理由で書いたのか、言語化して説明させている。自分で書くプログラムには、すべて意図を持って書かなければならない。それがロジックを作ることになる。 

 

の部分。

 

1行1行どんな理由で書いたのか、言語化して説明させる」ってのが、頼もしいとも思えるし、緊張感がある。

 

1行1行の理由なんて、本当に自分の意思を持って書かないと答えられないし、まして言語化するとなると、本当に(腹落ちするほど)理解していないと答えられない。

 

そういう意味でも、これは本当にスキルが上がる。

 

 

コマンドラインの説明の言語化

 

 

最近ハマっているProgateでも感じた。

「Command Line」と「Git」のレッスン。

 

例えば、
「Command Line」でのpwdコマンド

pwdコマンドを実行すると、ルートディレクトリからカレントディレクトリまでの階層が全て表示される。

 

pwdコマンドを簡潔にわかりやすく言語化している。
この言葉のために、ルートディレクトリやカレントディレクトリ、階層をしっかりと前もって説明した上で。

 

言語化が適当だったり、ちゃんと理解していないと、
pwdコマンドは、カレントの階層を表示するんだよ
とわかるようで、わからない説明になってしまう。


また、「Git」での「git add」と「git commit」の説明

git add は、共有ファイルを「選択」する
git commit は、その選択したファイルを「記録」する

と言っている。

なるほど!っと思った。


俺は人に説明するとき、本に書いてあるように、
git add はGit管理の対象にして、git commitは・・・コミットするんだよ
っていう説明にもなっていない説明をしてしまう。


これは語彙力がないってことよりも、理解していないということ。
本当に理解していたら、相手が理解できるどんな言葉にも置き換える。


だから説明ができなかったら、本当に理解していないということ。


さらにいうと、理解した気になっていたということ。


だからこそ理解したのかしてないのかを確認するには、説明する、言語化してみるのが1番。


倉貫さんのブログと、Progateの学習で、そんなことに改めて気づかせてもらった。


正確に言うと、「何か」に気づいて、このブログで言語化してみて、その「何か」がわかった。

 

これからも何かを学び、新しいことに気づいた時、ブロクやSNSを通して言語化してみて、本当に理解したのか、何に気づいたのかを確認すべきと感じた。

 


この差が考える力、思考力も鍛えられる、プログラミングスキルも上がると思う。


また、おばあちゃんとは言わず、誰にでも今自分がやっていることを、仕事を、説明できるようになっていきたい。