skillup

技術ブログ

プログラミング全般

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

投稿日:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-プログラミング全般

執筆者:


comment

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

関連記事

no image

ミスを少なくする工夫について

プログラマであればだれもが「いかにバグを少なくするか」に腐心すると思います。 ところが、人間がある以上、バグ(ミス)は絶対にゼロにはなりません。バグ云々以前に、「人間はもともとミスをする生き物だ」とい …

no image

オブジェクト指向について その2

前回のエントリーのように、データとロジックを一体で考えるのは、処理状の有効性のみならず、よりユーザー側に近い処理をかくということにもつながります。 日付の問題に関してもintやshortよりはLoca …

no image

コレクションの頻出処理に関して

PHPでコレクションを使っていますが、慣れると本当に便利ですね・・・まあforeachとかでグリグリやってもいいのですが、無駄にコードが長くなります。 自分がコレクションでよく使う再頻出のメソッドなど …

no image

オブジェクト指向 プレゼンテーション層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日はプレゼンテーション層、いわゆるMVCのViewにあたる部分。 Contents1 プレゼンテーション層の考え方1.1 要点1. …

no image

コードの分割

今回はリーダブルコードの8章。コードの分割について。 ポイントとしては1行に情報を詰め込みすぎているような場合は分割して、意味がわかりやすい区切りにまとめよう、といったことでしょうか。つまりは「困難は …