ホーム » 一般 » プログラマになるということ

プログラマになるということ

なんだか最近、〇〇になるためにはどんな勉強をしたらよいですか? と聞かれる機会が増えている(たぶん年をとったせいだと思う)。こういう質問に5秒で答えないといけないときには「好きなことをやればいいんですよ、人から言われたことをやるなんてナンセンスですよ」と言ってお茶を濁すようにしている。これは自分にとっては真理だ。自分がコンピュータに出会ったのは14歳のときだったが、そのときからこれまでの間、興味を持った事柄以外のことは熱心に勉強しなくなってしまったからだ。まあその結果、学校の成績はひどいことになったけれど…。

930

だがしかし、この種の質問に真面目に答えるべき理由はちゃんとあるし、これまた最近の傾向として、じっくり時間をかけて考えるヒマもある。そこで技術の棚卸しをやろうかなという気分でいるのだ。というのは、何かになるという目的を達成するにはどんな知識を身に着けるべきかを考えなければならず、そうなると関連分野を一通り見て回らねばならず、ということは自分(あるいは質問者)の狙っている最終的な目標に対して、どんな技術が必要なのかを調べ上げてリストアップし、それに対してどのようにアプローチしたらいいかを考えなければならなくなってしまうからだ。

ところが、これがまたうまくいかない。突き詰めてみると自分は「興味を持ったことをとことん追求すれば、技術力は勝手についてくる」論の信奉者なので、そもそも「どんな勉強をしたらよいか」という問いそのものに矛盾を感じてしまうのだ。それって自分でやりたいことが分からないって意味だよね、と。

自分にとって技術とは、問題を解決するにあたって必要な知識と技能、といった定義になる。問題に直面した時、持てる知識と技能を駆使してこれを解決しようとするのだが、もしそれに不足を感じたら、何かよい方法はないか調べたり、未熟な自分の技能を磨いたりして、問題が解決できるように「勉強」する。勉強のモチベーションはここにある……、という理屈だ。この順序をひっくり返しても成り立たない。将来起こりえる問題に対して、漠然と勉強するというのが性に合わないのだ。なので、自分では漫然と何かを勉強したいと思うことはほとんどない。ぶっちゃけると、仕事として課題を与えられたはいいが、今はそれを実現することもできないしどうやるかもよく分からないからとりあえず調べてできるようになります、というところから始めるぐらいのプレッシャーがかからないと勉強はやらない、感じになる。

似たような話題として、現代においてプログラミングを勉強するなら、適した言語は何かという問いがある。たぶん、いろんな人からそれぞれ好みのいろんな言語の名前が挙がるだろう。自分も今ここでいくつか挙げてみてもいい……が、たぶんそれは役に立たないだろうなあと考えてしまう。勉強したいと思っているその人が、何のためにプログラミングをしたいのか、それが分からないとなあ、と思うからだ。目的や用途が明確になって初めて、適したプログラム言語の候補がいくつか挙げられるだろうし、用意できるマシンや環境によって、選択肢が狭まったり広がったりもするだろう。そう思うと、現代のの最新流行なら〇〇を学ぶべき! みたいな意見はあんまり言いたくない。

プログラマになるにはどうしたらよいだろうか。理想的なプログラマとはどんなだろうか。自分にとって、プログラミングとは何だろう?

本来あるべき質問は「優れた問題解決者として、プログラミングを武器にどうやっていくべきか」ではないかと思う。こういう問いなら、なんか前向きに役立つ話ができそうな気がする。自分は、ただ決心するだけでプログラマになったが、よいプログラマになれたかは、まだ分からない。