素人プログラマーの学習スタイル

mobile-phone-1513945_1280
LINEで送る
Share on GREE
Share on LinkedIn

プログラムの勉強は楽しいですか?
初心者プログラマーがアルゴリズムに興味を持つのはどのタイミングなんでしょう?
個人的には、if文とfor文をちゃんと理解できて、「データをさばく」という感覚が分かった段階で、プログラムの美しさに興味が湧いてくるのではないかと考えています。

初心者勉強会

4386507096_e4894d1c8e_z
今所属している会社のエンジニアではないメンバー達が、教えてくれと頼むのでプログラムの勉強会を開催している。

今までに何人かの非エンジニアにプログラムを教えてきたが、その中でプログラムを仕事として手にしたものは今のところいない・・・

気がついたのは、プログラムを教えてもらいたいと考える人は、その時点で自分から学習するというスタイルを持っておらず、教えてもらうというGETだけの思考であるという事。

だいたいの初心者は教えて君

school-1019989_1280
当たり前ですが、初心者は、一線のエンジニアから教わることで自分もプロになれると勘違いしがちである。
たちが悪い状態としては、「教えてもらうことが当たり前になる」という状態。
間違いなく、こうした状態の受講生は、成長が遅くなることは誰が考えても分かる。
金を払って学校に通う学生の方が習得意欲が高いとも言える。

学習意欲と教えて君の差

その昔、僕がMSXでBASICを触っていた時代は、インターネットも無く、今ほどプログラムの情報も雑誌を買うぐらいしか無かったのだが、BASICのリファレンス・マニュアル本を片手にMSX機に、実験と称して色々なおためしプログラムを売っていき、BASIC命令関数などを試した事を思い出すと、情報過多な今の時代、WEBで調べればカンタンにプログラムの書き方などすぐに分かる。
「ググレカス」と言われてもおかしくないぐらいカンタンなこんな事を人から教えてもらう事自体、僕の中では不思議な事なのだが、どうやら、素人プログラマは「わからないことがわからない」というのが本音らしい。

素人プログラマーの伸び率を計測する方法

僕が今までに教えてきた非エンジニアの人たちを見ていて気がついた法則がある。

コピペの達人

プログラムをコピペすることは僕の授業では許されない。
そう、どんなに長いプログラムでも、自分の手で打ち込むことが、プログラム上達として非常に有効である事を分からせるためである。
インターネットで落ちているプログラムをコピペしてファイルに貼り付ける行為は、プログラム上達に何一つ役に立たない。
if文やfor文を自分の手で打ち込み、ブラインドキータイプで打ち込めるようになって初めて別のスタイルを理解出来始める事を自ら放棄しているのである。

プログラムを転記する時にうまくいかないエラーを自ら調べない人

答えの分かっているプログラムを自分の手で打ち込んで実行した時に、エラーが出たら、エンジニアの人はどう考えるでしょうか?
当たり前ですが、移している元のプログラムに間違いがないのであれば、打ち込んだ自分のプログラムに何かしらのミスがあるという、間違い探し的な感覚になるはずである。
これが、非エンジニアは、多くが「動かない」と言ってその場で諦めて手が止まってしまう。
または、正解のイメージが湧いていない場合は、不具合が発生したことすら気が付かない事がある。
前者の場合は、プログラムをやるというモチベーションが低下しているとかんがえられるので、明らかに学習するという姿勢ではなく、教えてもらっているだけのスタイルであることが多い。
実際にエラーが出ているのであれば、エラーの内容を読んで、理解して、調べようと少し努力しようとするのが正解なのだが、エラー内容を教えてもらおうとしてしまうのである。

エラーと不具合の相関関係

自分の打ち込んだプログラムは、正常に動作しない場合、不具合が含まれていると考えるのが普通だが、JSの場合、ブラウザのバグではないか?とか、エディタのバグではないかと、本気で考える輩もいるようだ。
実際にエラーが出た時は、必ずプログラムに不具合があり、他人が書いたソースコードであっても、その不具合を見つけることが自分のスキルに繋がる事が理解できて、初めてエンジニアの扉を空けることが出来るのではないかと考えられる。

エンジニアのモチベーション

他人の書いたソースコードの不具合を見つけた場合、エンジニアの思考は、
「ソース記述者よりも上」
という思考になれ、満足感が得られる。というあるあるが存在する。

人よりも上に行きたい

エンジニアたるもの、人よりも上に行きたいと考えなければならない。
これは、エンジニアというよりも、人として能力を向上させる事を生きがいにできるかどうかという人間性であり、そう考えられないエンジニアは、プログラマーではなく、工場生産のベルトコンベアのようにプログラムを単一作業としか考えられないエンジニアになる可能性があります。
上昇志向がないエンジニアは、絶対に良いものが作れないし、人に魅力も伝えられない。

どんなエンジニアになりたいか?

初心者プログラマーは、自分がプログラムの勉強をしてどういうエンジニアになりたいか、想像できた時点で、プログラムの習得も格段にアップすることでしょう。

プログラムを自分で書いて、自分のWEBページを構築する。
スマホのアプリを作る。
ITのしくみを知って、プログラミングでデジタルコンテンツを作りたい。

というような、何がしたいという事が一番大事である事を非エンジニアは知らない人がほとんどだ。
多くの素人プログラマは、漠然と「仕事がしたい」とか、「プログラムを理解したい」としか考えられないのである。
ある意味仕方がないかもしれないが、プログラムの勉強をする時に、目的を作ってみると思いもよらないスピードで習得が実現するので、是非お試しいただきたい。

素人は未知数

プログラムを知らないくても行きては行けるし、世の中何の不都合も無い。
でも、プログラムを知っていると、物事を理論的に考えられ、そして、デジタルの不具合に対して何故そうなるのかという理解ができるようになる。
多くの人が、自分が触っているプログラムが誤動作をしたら、プログラムを提供している会社に対して質問したり文句を言うと思うが、エンジニアスキルがあれば、その場で回答を見つけ出すことも可能である。
今やインターネットが無いと人は行きていけないと言ってもいいほどデジタル時代なのだがら、プログラムというお作法を覚えておくことは、母国語を読めて書けるというレベルで考えてもいいかもしれない。
もちろん、エンジニアは頭が固い人が多い中、非エンジニアであった人がプログラムを習得すると、非常に柔軟な思考能力を手に入れることが可能であるとも言える。
素人エンジニアは、決して悲観する必要がなく、そうした自分にも存分にチャンスがある事を理解するだけでモチベーションも湧くだろうし、ニッチな分野でトップになることも可能である事をわかってもらいたい。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です