分かっていると思ってることの多くは分かっていない
プログラミングをやっていれば「できているはず」とか「いけているはず」とか「できていたはず」とか「いけていたはず」のような事態が日常茶飯事で出てくると思います。自分では出来ていると思っているのに実行時にエラーになるのです。エラーがちゃんと出ればいいですが、エラーが出ないとか、問題はそもそもそこじゃないとか、具体的に説明するとキリがありませんが、問題に直面することは多々あります。
プログラマーが詰まる多くの原因は「思い込み」です。丁度この前、自分は(野暮ですみません)installしたpythonのモジュールを読み込めなくて「どうしてインストールしたはず(確認してみれば実際されている)のモジュールが読み込まれない?!」と途方に暮れてしまいました。原因は、これもやっぱ「思い込み」でした。そもそもインポートってなに?ってところの原理原則、仕組みを知らなかったんですね。ていうか、知った気になっていたから、こういうことになったんです。思い込みです。
モジュールをインストールした ー> モジュールをインポートした ー> これでできるはずだ。と安易すぎる考えを盲信してしまったばっかりに解決できなくなってしまったのでした。モジュールってなに?インストールっていうけど、どこにどのようにインストールされてるの?そもそもインストールって言葉の意味は?インストールした時のコマンドは正しく使われていた?モジュールをインポートする方法はこれだけ?どうしてインポートって書けばモジュールが勝手にインポートされることになっているの?モジュールがインポートされる仕組みは?パスはちゃんと通ってる?
みたいな感じで、一つ一つ分かっている(と思い込んでいる)言葉の意味や仕組みに関して、改めて何度でも何度でも調べて理解していくことが、いい腕のプログラマーになる道ですね。科学者が実験をするのは、自分の間違いを発見するため。数学者が証明をするのも、自分の考えに間違いがないか確認するため。答えが分かっていれば、その答えが合っているのであれば、実験も証明も必要ないんですからね。でも、我々が正しいと思っていることの多くは、ほとんど全ては、思い込みなのです。
思い込みは、プログラマーの世界では禁物です。思い込んでいいいのは大きな夢だけにしましょう。