プログラミング初心者に気をつけなければならないことまとめ


いきなりひっかけのようで大変申し訳ありませんが,この記事は,プログラミング初心者気をつけなければならないことまとめ,ではありません.プログラミングに長年携わってきた人々が,プログラミングを学び始めたという方,あるいは,プログラミングに関心があって学びたいという方に接する際に気をつけなければならないことのまとめ,です.

個人的な経験に基づくケースバイケースのようなものであるため,どれだけお役に立てるかわかりませんが,参考程度に見ていただけますと幸いです.なお,プログラミング初心者御本人が読まれてももちろん構いませんが,もしかしますと,プログラミング学習をやめたくなるかもしれません.御了解いただけますと幸いです.

(1)最初に,コンピュータハードウェアが『プログラムに沿って動く機械』であることを把握しているかを確認した方が良い

まず,世の中の圧倒多数の人々は,プログラムの存在を知りません.ソフトウェア(『アプリ』や『ソフト』と呼称されるもの)にしても,画像データとか,数値データとか,表示テキストとか,マニュアルとか,そういった素のデータの集まり程度の認識しかありません.

それ以外の,コンピュータならではの機能は全て,電気回路,電子回路などの物理的な部品を直接構成して出来上がっている,すなわち,実際にはプログラムで実現されているはずの機能のほとんどが,最初からコンピュータ(ハードウェア)という機械に回路として組み込まれていると捉えている…というか,信じています.

その場合,プログラムという言葉をどのように捉えているかといえば,多くの場合,設定情報の一種という認識です.ある意味間違いではないのですが,『デスクトップ環境くらいはメモリやディスクにプログラム(という名の設定情報)が全くなくても電源さえ入れれば動く』と思い込んでいると考えてほぼ間違いはないほどです.

そして,プログラミングを学び始めたという人は,そのような人々の延長である可能性が高いという状況です.『GUIの部品だってプログラムでできているんだよ』と生コードを見せて実際に動かしてみせると,腰を抜かすほど驚きます.プログラムやソフトウェアによっていろんなことができるのがコンピュータなのに,今まで気づかなかったの?と聞けば,『コンピュータに詳しくなかったし』という反応がほとんどです.

(2)(追記)

すみません,(1)でほぼ語りました.もし実際に(1)のような状況であれば,そのままでは問題ですので,あらためてコンピュータの原理の概要を説明するなり,引き続き他の生コードで実演するなりして『誤解を解く』必要があります.

そして,当方の経験上,その辺の誤解を解くと,多くのプログラミング初心者はプログラミングの学習意欲を失います.なぜかといえば,プログラミングを学びたかった理由のほとんどが,有用なWebサービスを構築したいとか,実用的なデータ分析を行いたいとか,面白いゲームソフトを作りたいとか,そういったことを行うための設定方法を知りたかっただけだからです.

なお,誤解を解かないままでいると,プログラミング学習を進めていくうちに『いや,知りたいのはアルゴリズムとかクラス定義とか内包表記とかラムダ計算とかじゃない,もっとすぐに役に立つ具体的な技術(といってもtechnologyの方ではなく,techniqueの方の意)なんだ!』となって途中で基礎学習をやめ,ライブラリの活用方法に走り,サンプルコードをよくわからないまま修正して実行を確認することを繰り返し,そしてたまたま動くようになったものをローンチしてしまうという,プログラミング初心者のままのプロのプログラマが誕生してしまうかもしれません.ああ,恐ろしい….

備考

記事に関する補足

  • 大げさに聞こえる内容かもしれませんが,当方の立場上,毎年悩んでいる事柄だったりします.『誤解を解く』ことが必ずしもうまくいくとは限らず,初心者と自称プロのプログラマからの『理屈こねてないで役に立つギジュツをさっさと教えろ!』というプレッシャーは常にあり….プログラミングは理屈の塊というか理屈そのものなんだよー,よー.

更新履歴

  • 2020-08-27:初版公開