私の今までの考えとしては、
「JavaがわかればPythonでもPHPでも多分できる。ググれば。」
という考え方ですが、どうもその考えに共感する人とそうでない人が極端に分かれるのです。
どういう認識差異なのだろうといつも疑問だったのですが、
最近ようやく理解できるようになってきました。
〇〇言語が書ける。 という定義が人によって大きく異なるのだなということが・・・!
以下、難易度順に並べると、
レベル1 〇〇言語が書ける = 基本構文(if, for)が書ける
レベル2 〇〇言語が書ける = 基本的な言語特性(オブジェクト指向?関数型?)を使って書ける
レベル3 〇〇言語が書ける = フレームワークやその言語の本質を知っている
レベル4 〇〇言語が書ける = レベル3を踏まえた上で、ロジックを組むことができる (セオリーやTips的なことを知っている。使える。)
レベル1の認識の人間と、レベル4の認識の人間が話せば、
そりゃあ共感にはならないのだなと思いました。
ついこの間までは、私はレベル1(ちょっとだけ2)の人間だったのですが、
こうやってまとめてみたことで、
あーーーーー、そういうことを言いたかったのね。と思うわけです。
あとは、学習コストが高い = 時間がかかる。 ということだと思いますが、
世の中には、時間をかけても解決できない問題がたくさんあるのに、
時間をかけるだけで自分のものにできるなんて、
なんて楽なんだ・・・と思うわけです。
私は、学生時代にC++で大規模アプリケーションを作った上で、
Javaを使った業務をしているので、
Javaのどんな構文を見ても、
「あーはいはい、C++でいうところの〇〇ね」みたいな感じで受け入れることができたわけですが、
C(初めて勉強した言語) → C++ のときは、
もうすべてが初めてで、混乱してそれはそれはワニワニパニックだったことを思い出します。
(特に、初のオブジェクト指向なので。)
仕事では、私は新人の教育担当なので、
新人を教育するためにも、初心を振り返った3連休前の金曜日でした。
今回の教訓:
・他の人の目線で考えてどういう意味なのかを探ると意外と発見がある。
・新人を教育する上で、大切なのは壁に当たらせること。
(私がC → C++のときに経験した巨大な壁を新人にも与えること。)
以上です。