2014-06-14
■[大学] プログラム書こうとして吐き気や頭痛がしなければ特に問題なし
あるある。
高校生の頃からPCでゲームをやったり、動画を見たりするのが好きだった。
受験を勉強頑張って結構名のしれた国立大学に入れたは良いが息詰まってしまった。
授業でプログラミング入門の講義をとってみたら全然わからない。
メソッド?コンストラクタ?再帰?このfor文どういう動きなわけ?!
バブルソートってなに?来週までに作ってこいってなんだよその宿題。ってな具合で
完全に置いてけぼり食らった。俺の周りはそこそこプログラミング経験者が居て、
俺みたいな完全初心者は殆ど居ない。
マジでなんでこんな学部選んじまったんだ。プログラミングに適正あるなんて聞いてないよ;;たいしに
でも、広く同年代、あるいは、日本国民全体で考えると「PC使うことに拒否感がない」「ネットが便利であることを知っている」というのは結構有利な点だったりする。世の中には、PCを使うこと自体が憂鬱という人が案外いる。周りと比較すると「やばい、私だけ初心者」と思うかもしれなけど、大丈夫、そう思っているのが同じクラスにあと5人はいる。ちなみに、私が所属している情報系学科の場合、学年のうち3分の2が「自分は初心者である」と思っていて「高校まで授業でしかPCに触ったことない」という学生も3分の1ぐらいいる。プログラミングを行った経験があるなんて50分の1ぐらい。
冷静に考えて「マジでなんでこんな学部選んじまったんだ」という実感が「俺みたいな完全初心者は殆ど居ない」ということに起因し、そもそも「プログラミングなんてしたくない。」「IT系の話は本当に苦痛。」とという理由でないならば、頭切り替えてゆっくり学べばよいと思う。
そもそも、プログラミングは授業を覚えられるほど簡単ではない。授業の価値はキーワード(膨大な範囲から最重要なものをピックアップしてくれる)と資料へのアクセス方法(教科書、参考書の指定、授業ページの用意など)、自習環境の提供(どういう環境が必要なのかの指示、および、パソコン室などの環境提供)、良い道具の提示(エディタやデバッガなど)にある。プログラミングはプログラム書いてみて、エラーたたき出して、デバッグにはまって、「うわぁー!」と叫んで覚えるもの。「授業でプログラミング入門の講義をとってみたら全然わからない」のは当たり前。授業で出される課題を必死でこなしていくことで、その日ならったことを学習するのが吉。
たぶん、今、目の前に突き付けられているのは「プログラミングの適性」「情報系技術者としての適性」ではなく、「セルフイメージと実際の自分にギャップがあったときにそれを受け入れらるかどうかの適性」なのだと思う。まだ、6月半ば。全然いけるいける。プログラム書こうとして吐き気や頭痛がしなければ特に問題なし。あとは、時間使うかどうかの問題。
対応策案1:記録をつけよう
技術ブログをつけることをお勧めする。私が初心者のときに体験したのが「あれ?この現象は前も見たことある。どうやって直したっけ?」というもの。試行錯誤の過程を記録していなかったので、2週間ぐらいたつとそれがなんだったのかが思い出せなくなってしまっていた。
STAP細胞問題の例もあるように、科学者や技術者にとって作業ログをとっておくというのは、とても重要。今から、その習慣を身につけておけば、大学に入る前にプログラミングを経験していたかどうかなんて、どうとでもなるぐらいの重要な習慣。
はてなブログでもよいけど、今ならQiitaあたりで技術ブログを作ってみてはいかがかと思う。なお、ブログ初心者ならハンドル名で始めることを推奨。
とりあえず、エラーや不具合に直面したらエラーメッセージごとそれをメモしていけばよい。もし、うまく解決できたら、どう解決したのかもメモすること。
- タイトル:エントリーの内容が簡潔にわかるもの
- どういう環境で、何をしようと思って、何を行ったら、どうなったのか
- 環境:OS名+バージョン、プログラミング処理系+バージョン、関連ライブラリーや道具など
- 何をしようと思って:プログラムを書いているならば、プログラムによって成し遂げたい理想状態を説明する。
- 何を行ったら:ほとんどの場合、ソースコードをそのまま貼り付ければよい。そのプログラムのコンパイル&実行コマンドもメモする
- どうなったのか:ほとんどの場合、エラーメッセージをそのまま張り付ければよい
- 適宜、愚痴。
対応策案2:プログラミング居残り仲間 or テディベアを手に入れよう
他人に説明するだけで、プログラムの不具合を見つけることができるので、プログラミングの課題をするときに一緒におしゃべりできる仲間を見つけることをお勧めする。
どうしてもわからない場合は、友達のプログラムをコピーするのではなく、友達にお願いしてプログラムの解説をしてもらうのが「プログラミングできるようになる」という観点からは効果的。もちろん、自分のプログラムを友達に説明するというのも効果的。
対応策案3:毎時間教員に質問しよう
無理やりにでも毎授業ごとに3つ質問を作って、授業が終わったら教員に質問すると良いと思う。
第一に3つ質問を作らなければならないとすると授業中に自分の「わからないこと」「納得いかないこと」をメモしないといけない。これが、授業の理解に役に立つ。
第二に質問することに慣れる。ほとんどの人は自分の「わからないこと」「納得いかないこと」を言語化し、相手に理解できるように伝えるという訓練を積んでいない。なので、質問すること自体が難しい。授業でわからないことを質問するという大義名分があり、教員は基本的に質問に答えなければいけないので質問もしやすいと思う。
第三に教員に顔と名前を憶えてもらえる。顔と名前を憶えてもらえば、授業中にも理解度を気にしてもらえる。理解度を気にしてもらえば、君が小首を傾げたり、眉をひそめたりしていることについて「ああ、まだ、理解できていないんだな」ということで追加で説明してくれるようになる。つまり、授業を自分用にカスタマイズしてもらえる。
教員に質問するのはハードルが高いのならばTAに質問するとよい。TAに質問するのもハードルが高ければ、同じクラスのプログラミングが得意な子に質問すると良いと思う。
対応策案3:夏休みはプログラミングコンテストにチャレンジ
目的もなくプログラミング勉強するのもつらいと思うので、当面の目的としてU-22プログラミング・コンテスト2014で作品を出すというのを狙うのもよいのではないかと。サイボウズ賞はRED BULL 100本!(22歳以下にRED BULL 100本飲ますのはどうかと思うけど)。
プログラミングをしなくちゃいけない環境に身を置くならば、ACM 国際大学対抗プログラミングコンテストにチャレンジしてみるのも良いと思う。今年の国内予選の申込み締切は2014年6月27日(金)。もちろん、いまからだと参加しても1問も解けず屈辱を味わうと思うけど、それはそれでプログラミングを学ぶモチベーションになるんじゃないかなと思う。
おわりに
プログラミングの他にも、数学(線型代数、数値計算、確率・統計、離散数学)や電気回路系も、みんなが一斉につまづくし、「あれ、私の思っていた情報系と違う」とぼう然とするので自分だけが初心者と焦る必要はないですよ。
- 107 http://t.co/38F9c8P0kQ
- 13 http://anond.hatelabo.jp/20140613190433
- 10 http://feedly.com/index.html
- 7 http://t.co/Fknkv6r4Jo
- 5 http://t.co/QLFhXFriuw
- 4 http://t.co/ARz2EMeRfi
- 3 http://blog.livedoor.jp/route408-sba/
- 3 http://pipes.yahoo.com/pipes/pipe.info?_id=02db597254ec68550537866a2fca2ce6
- 2 http://b.hatena.ne.jp/entry/anond.hatelabo.jp/20140613190433
- 2 http://feedly.com/