skillup

技術ブログ

プログラミング全般

プログラミングを習得するときに必要な2つの大事なこと

投稿日:

元々私は塾で仕事をしていましたが、いろいろ紆余曲折ありましていまではWEBエンジニアとして仕事をしております。

エンジニアとしてのキャリアは3年ぐらいなので正直あまりないのですが、開発者と平行してプログラミングの講師をやっておりました。

講師の仕事は当然「生徒がプログラミングができるようになること」ですので、そこでの経験などをちょっとお話させていただきます。

私が教えていたのはPHPですが、言語は関係ないと思います。

コードの写経だけでなく、成果物を作って覚えよう

いきなり1つ目の結論なんですが、プログラミングができるようになるためには必ず成果物を作りながら覚えましょう。

成果物というのはお問い合わせフォームや掲示板などの実際に動くものです。

初心者向けの書籍やドッ○インストールなどを眺めたり、そこに書いてあるサンプルコードをただ写してもできるようにはなりません。(この作業は無駄にはなりませんが)

実際に何か作りたい作品だったり、成果物を作りながら覚えるのが一番です。

成果物がなければ成果物を考えるのがまず最初のステップです。

難しい概念は使っていく中で覚えていくしかない

写経は当然無駄にはなりません。ただプログラミングの概念だったり、エラーのつぶし方だったりっていうのは実際に成果物を作りながらじゃないと学べない部分がどうしてもでてきます。

そうしないとプログラミングの考え方やコツというのが身につかないんですね。

オブジェクト指向なんかがそうですが、これをコードを書かずに理解するのはほぼ不可能です。

わかりやすい例なんかがたくさんあるんですが、実際に手を動かさないと使い方に関してはわかりません。

これは私だけの体験ではなく、実際に生徒をみていてもポイントだけ少し、教えて実際に作品を作らせたほうがはるかに吸収がよかったです。

マスターするためには自分で掲示板でもお問い合わせフォームでもいいので動くものを作りましょう。

繰り返し書いたり、人のを見ているうちにどういうものかがわかってきます。

プログラミングは理解が半分、慣れが半分

語学なんかと近いとおもいますが、「プログラミングは理解が半分、慣れが半分」ですね。

通り一遍の説明をうけることは無駄ではありませんが、必ず成果物を作りながら覚えないと生きた知識になりません。

最初から作れない・・という人はサンプルコードにいろいろなカスタマイズやアレンジなどを加えていくのが一番力がつきます。

わかりやすい説明を受けることも大切ですが、自分で学習しないとできるようにはなりません。

成果物を作らずにプログラミングをマスターするのは「バッティングの本だけ読んでバッティングをマスターする」ぐらい無謀だと思います。

独学は基本的に無理。教えてくれる人の存在が必要

次に必要なのはわからないことがあって詰まったときに教えてくれる人の存在です。

作品を作れといいましたが、ある程度形になるものを初心者が完全に独学で作るというのはほぼ無理だと思います。

プログラミングってやっていくとわかりますけど、わからないことやエラーの連続です。

もちろん都度、検索していくことが必要になってくるんですが、難しい概念だったり、マニアックなことに関して独学ではどうしても破れない壁が出てきます。

しかも1箇所わからないだけでもうジ・エンドです。

また概念などとは別に単純に知識の有無だけでおわるようなものもたくさんあります。

現実的には独学はほぼ挫折する

大学生で時間がありあまっているのなら別ですが、多くの人にとってはなるべく短期間でプログラミングを習得したいとの思いがあるはずです。

完全に独学でプログラミングを勉強する場合、ほぼ無理か達成できたとしてもとてつもない時間がかかります。

ほとんどの人にとって人生で最も大事なものの1つは時間だと思います。

プログラミングを学習していく上でかけるべき時間は当然ありますが、かけてはいけない時間も当然あります。

自力だと徹夜、人に聞けば10分

私が講師だったときはまず授業で使うプログラムを生徒に家で写してきてもらい、次の時間にそのソースを動かし、解説するというスタイルでした。

授業をするときになるとほとんどの生徒のソースは動いていません。写しはしたものの、どこかでエラーがあり、自力でエラーがつぶせないからです。

中には徹夜してしらべてきたなんて生徒もいますが、それでも自力で解決できない生徒がほとんどです。

当然私が解決をしますが、大体10分前後で終了します。

知識はきかなければわからない

当たり前ですが「知らないこと」というのは人に教えてもらわなければ解決しません。

プログラミングの場合、わからないことはネットで調べることになりますが、ネットの情報は断片的に書かれていることがほとんどなので、前後の知識がないとわからないことがほとんどです。

そこで時間を浪費してもあまり得るものはありません。ある程度、調べるのは大切ですが、時間は有限なのでわからない場合、人に聞くべきです。

就職してプログラミングやっていれば当然上司や先輩がいると思いますので、わからなければききましょう。

生徒にもよく言ってましたが、15分以上考えないほうがいいです。考えても解決せずに時間だけが流れることがほとんどなので。(業務でも1時間とか調べてると怒られるケースが多いです。)

情報科の学生なら先生にききましょう。

社会人でプログラマではないけど、プログラミングをやりたい方は講習会などに行って直接ききましょう。

ただし、何も考えずにきいたら当然怒られるんで「~だと思って・・のように調べましたがわからない」のように現状の状況、どのように調査したかと自分なりの仮説を述べましょう。(何も考えずにききまくっても力はつきません。)

基本的には誰か聞ける人がいて、作品を作りながらやっていくのが(特に初心者のうちは)最速だと思います。

-プログラミング全般

執筆者:


comment

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

関連記事

no image

PCクラッシュ時に備えて

先日、ずっとメインで使っていた会社のノートPCがクラッシュし、再起不能になりました。ファイルなんかはクラウドで管理していたものが多かったので実害はあまりなかったんですが、当然ゼロではありませんでした。 …

no image

命名規則について その2

リーダブルコードネタ第3段。 前回のエントリーに引き続き、名称の大切さについて Contents1 あいまいな名前はNG!1.1 限界値はmaxかminを使う1.2 範囲を指定するときはfirstとl …

no image

例外処理に関して

いまいち使い方がいい加減だった例外処理について、復習がてらメモします。 昔のリンクを整理して出てきた例外リンクはこちら(Javaですが今のPHPにも当てはまるかと思います。) 例外処理について 例外処 …

no image

画面の制御フローなど

複雑な帳票系アプリではよくあると思うのですが、ある入力値が複数の場所から影響を受けており、制御がなかなか難しいときなどがあります。 例として クリアボタンなどでクリアされる 他のプルダウンなどで影響を …

no image

コーディングについての気づき

現在の現場でコーディング関連で勉強になっているポイントについてまとめてみようかと思います。 Contents1 自動化2 命名3 責務の分離4 その他 自動化 規約エラーなどなるべく自動化できるものは …

アーカイブ