Wii投票チャンネルのある日の投票結果。 見事に南北に分かれていて興味深かった。

どうしてもJavaをマスターしたいというコメントをいただいた。

やはり向き不向きがあるのでしょうか。 一生懸命勉強しても頭に入っていかないのって、もう諦めるしかないのでしょうか…( ´Д⊂ヽ

Java はほとんど書かないし、プログラマの端くれの端くれな僕が偉そうなことを言っても説得力はないんだけど、自分の経験上でこうしたことが良かったなと思うことを書いてみる。 一瞬、「プログラミングが上達するための○○の方法」とかいうタイトルにしようかと思った。ウソ。

プログラミングと適性について

スポーツでも人によって向き不向きがあるように、プログラミングでも人によって向き不向きはあると思ってる。 誰もが「スゴイプログラマ」になれる訳じゃない。 ただ、スポーツでも努力すれば誰でもある程度は上達するのと同じように、プログラミングもある程度は上達するとも思ってる。 さらに幸せなことに、スポーツで食べていける人は本当にわずかな人に限られるけど、プログラミングで食べていける人はそれよりもずっと多い。 食べていけるレベルまでなら、適性はそんなに気にしなくてもいいかもしれない。 誰もが一生プログラミングだけで食べていけるかというと微妙だけど…って、これは「ウェブ時代をゆく」のテーマか。

とにかく、積み重ねしかないんだけどね。

いい本とめぐり合う

プログラミングの本はたくさん出版されていて、特にJavaは入門書も多い。 でも、（特に入門書ほど）質にバラつきもある。 プログラミングの書籍は単価も高いし、何冊も買うわけにはいかない。

僕は新しいことを覚えようと思ったら、まず本屋に行って「自分のお気に入りの一冊」を探すようにしている。 事前に Web で評判を調べることもあるけど、たいていはその場で立ち読みして比較することが多い。 これが結構楽しいんだよね。

最初は自分に合う本を探すのが難しい（特に書評だけで決めると後悔することが多い）けど、自分が知りたいことが何かを考えて、それについて書いてある箇所だけを読み比べたりしている。 Cならポインタ、Javaならインタフェース…などなど。

ついでなので、思い出深い本を読んだ順にいくつか挙げてみる。 人によって好みはまちまちなので、特にお勧めする訳じゃない。

C 言語によるプログラミング (基礎編, 応用編), 内田智史, オーム社

新Linux/UNIX入門, 林晴比古, ソフトバンククリエイティブ

詳説 正規表現, Jeffrey E.F. Friedl (著), 歌代 和正 (監訳), オライリー・ジャパン

プログラミングPerl, Larry Wall, オライリー・ジャパン

プログラミング言語Java,

達人プログラマー, Andrew Hunt, David Thomas, ピアソンエデュケーション

暗号技術入門-秘密の国のアリス, 結城 浩, ソフトバンククリエイティブ

RailsによるアジャイルWebアプリケーション開発, Dave Thomas, David Heinemeier Hansson, Leon Breedt, Mike Clark, 前田 修吾 (翻訳), オーム社

プログラミングRuby第2版 (言語編), Dave Thomas, Chad Fowler, Andy Hunt, オーム社

雑誌を毎号読む

本がまとまった知識を一気に身につけるのなら、雑誌は幅広い知識をじっくり身につける。最初は書いてある意味が分からなくても、読んでいるうちに少しずつ分かるようになったりする。 昔は Network Magazine を毎号買って読んでたなぁ。

今なら WEB+DB PRESS や日経ソフトウエアなど（自分が読みやすいと思ったの）を読むといいと思う。 Blog を RSS リーダーで定期購読するのも一つ。

プログラムを書く

スポーツと同じで、知識を詰め込むだけじゃ身に付かない。 やっぱり少しずつでも書かないとダメ。 書く機会が少なかったころには、特に痛感していた。

今は「どう書く.org」があったりと、書くネタが増えていていい環境が整っている思う。

プログラムを読む

僕は結構苦手。 意識するようになったのは最近かな。 まずは自分で書いてみて、その後に人が書いたものと比べると特に効果的。

他の言語や環境を試してみる

人によって得意な言語や苦手な言語は必ずあるので、仕事じゃなければ他の言語を試してみるのもあり。 JavaならRubyなどのLLに触れてみるとか。もちろんその逆も。 Linux で vi を使ったあとは、 Windows で Eclipse を使ってみるとか。

アウトプットを公開する

ここ最近の OpenID についての日記もそうだけど、自分が調べたことを何かアウトプットするのもいいと思う。 別に完璧なことを書く必要はなくて、

日記に書くことが動機付けになる（本末転倒？）

書くことで考えがまとまる。意外と自分が分かってないことに気が付くことも。

誰かがツッコミを入れてくれることも。

関連して id:amachang のいいエントリを紹介。

いい人とめぐり合う

困ったときに聞ける人がいるというのは大切。 ネットがある今は、前よりもたくさんの人に出会える可能性が高いし。

一流の人に触れる

「スゴイ人」が何を考えているかを知ることで刺激を受けたり。 反動でたまに落ち込むこともあるけど、私は元気です。

ITpro Challenge!の動画がお勧め。

プログラミング以外のことをやる

あまり根を詰めすぎても集中力が続かない。 何年かかけて少しずつ吸収していくつもりで、息切れしないように続けていくことを意識していたり。

最後に

結城さんが素晴らしい文章を書かれているので、最後にリンク。

こんこさんが、「プログラミング楽しい」と思える日が来るといいなぁ。