2014-10-27

プログラミング勉強重要だなとおもったこと

1、あらゆる意見について盲信してはいけない

インターネット上ではとりわけ多いけれど、ある意見適当に述べている人というのは多い。

適当に述べている……とは、別に悪気があってそうなったわけじゃなくて、本人もよくわかっていないけど「なんかうまくいったからとりあえずブログに書いた」風のものがあるということだ。

例えばブログに書いてあったソースをそのまま貼付けてコンパイルエラーになることがあるけれど、

それには色々要因があって「本人がブログ上で書いたまま検証していない」「サイト上でレイアウトが崩れた」「環境が違う」等いろいろある。

自分のわからないものに関しては「そうなんだ。まぁとりあえずそういうことにしておこう」ぐらいでいい。

断定口調で「絶対こうだ」と書いている人も、間違っていることが多々ある。

それは本でもそうだ。

「ほんとうかなぁ?」と思ったら疑った方がいい。

自分しか信じてはいけないし、その自分すら疑った方がいい。

2、レベルの高い人・向上心の強い人との関係を作る

プログラミング基本的自力で解決するべきだけど、どうしてもどうしても行き詰まるときというのがある。

自分に、ある部分の基礎が脱落していたとき、そこが盲点になって永遠に解決できなくなってしまう。

そういうとき他人の目というのは素晴らしい外部ツールとなる。

解決云々の話ではなくても「そういう考え方があるのか」「そういうツールがあるのか」「そういうカンファレンスがあるのか」「そういう機能があったのか」と為になることが山ほどある。

3、ビルドコンパイルについて知る。IDEに頼りすぎてはいけない

IDE魔法の箱のように使っている人は思いの外多い。

しかしあれは単なるもっさりしたテキストエディタで、内部でxmlなんかを駆使してパスを決めていることが多い。

IDEが悪いというわけではないし、普通テキストエディタを使いましょうと言っているわけではなくて、IDEが何をしてくれているのかをしっかり知るべきだ。

そしてIDEを使うからにはIDEについている機能をしっかり知った方がいい。「あ、これめんどくさかったけどショートカットキーあるのか」「こんなやり方あったのか」等の発見もある。

Visual StudioがないとC#ビルドできない、EclipseがないとJavaコンパイルできない、ではお話にならない。

4、公式マニュアルを読む

なんでもかんでもググってはいけない。

ググって解決することも膨大にあるが、ググって解決することは0次元的な解決しかない。

公式マニュアルを読むことで基礎となるところがわかるので基本的には公式のものを読むべきだ。

英語なら英語で読もう。

Linuxならmanコマンドがいいだろう。読んでわからなかったら英語でググろう。

英語でググってわからない・出てこないときに始めて日本語でググろう。

5、UNIX/Linuxをやる

そのくそったれなWindowsを捨てろと言っているわけでもないし、Macじゃだめと言っているわけではない。(MacUNIXだし)

別にLinuxを知らなくても良いサービスは作れるけど、少なくともそれは、あるフレームワーク上で踊らされているだけだし、

ネットワーク対戦ゲームなんてものは死んでも作れないだろう。

特段ネットワークに興味なんてなければ特に必要の無い技術だ。

ただしその場合ハッキングされても文句は言わないでほしい。

それからWindowsはクソだけど、そこまでクソではなく、環境さえ整えれば使い道は無限だし、エクセルはクソだ。

6、アルゴリズム勉強をしよう

ハードの性能が上がったから、今時アルゴリズム……と語る人の明日はない。

ハードの性能が上がって、扱うデータも莫大になったので、アルゴリズムは昔よりも遥かに重要となっている。

オーダーnと、オーダーn^2では、データが1億個のとき、1億と、1京の差となるし、

オーダーnと、オーダー2^nでは、データが100個のとき、100と、120穣(1京の100兆倍)の差となる。

確かにハードの性能が上がったから「昔だとうまくいかなかったけど、なんかうまくいってる」という部分もあるけど

アルゴリズムおねえさんの動画を見るといいかもしれない。

7、何かを完成させて公開する

たとえゴミな出来具合でも、完成させて公開するべきだ。

「死んだ方がいいレベルアプリケーション」だの「何このセキュリティゴミだわ」だの「グラフィックwww」だの

レイアウト崩れ過ぎ」だの「動かない」だの「とりあえず死ね」だの

スパムメール送ったわ」だの「重すぎ」だの「作者の顔不細工すぎ」だの

色々あるけれど、公開しないやつらよりは強いのだ。

批判は、人格批判顔面批判批判したいだけの批判以外は全て受け入れよう。逆にそれは自分では気付かなかったか気付いていたけど無視していた改善点だ。

どんなにすばらしいプログラマでも、そのプログラムソースが世に出たことがなければ、誰にも気がつかれないものだ。

8、忍耐と勇気と根気が必要

これはぼく自身にすごく言えることなのだが、

結局プログラミングにも忍耐は必要だ。

プログラミングが楽をする技術というのは当たり前だけど

その楽をする技術をもってしても、どうしてもどうしてもめんどくさいことはある。

そして、めんどくさいけどやればできること以外に、どうやってもできなさそうで、不可能そうなこともある。

それを解決しようとするのはすごく大変なことだ。

プログラマ美徳怠惰と短気と傲慢というラリーウォールさんの発言は割と有名だけど

なんかこじつけ感あって、言いたいことはあんまり怠惰でも短気でも傲慢でもないんじゃないかなと思っている。

怠惰のために努力できる人は怠惰ではないと思う。

別に最初から耐えろと言っているわけではなくて、最後に効いてくるのはやはり耐えること。

誰にも解決できなさそうなものを解決するというのは、忍耐と勇気と根気が必要で、怠惰で短気では無理だ。

こんな感じ。

まあぼくはどこにでもいるふつうプログラマから、ここに書いてあることは別にぼく自信が編み出したことではなくて

いろんな人が書いたものの合成なので、割とふつうのことだとおもっている。

これからプログラミングを始める人、始めたばかりの人にちょっとなんか言いたくなったんじゃ。

トラックバック - http://anond.hatelabo.jp/20141027212655

記事への反応(ブックマークコメント)