ぱいぱいにっき

Pythonが好きすぎるけれど、今からPerlを好きになりますにっき

プログラミング言語・技術を流行りで選んでもあんまり意味がない気がする

これはただの持論だし、さらに今はこう思っていたよっていう感じで、思想をブログに焼き付けておいてあとから自分で見たときに「ガッハッハ、このときはこう言う考え方をしていたんだな」とあとから自分を振り返って酒の肴にするぐらいの意味なんだけれども。

過去を振り返ってみると、プログラミング言語やその他のWebに関連する技術を流行りで選んだとしても、あんまり意味がない気がしたと思った。

ある言語は将来が無いから選択しない、ある技術はこれから伸び盛りだから選択する、みたいなことを僕は昔していた。ここでいう昔というのは2005年ぐらいのときに、Webプログラミングを独学でやっていたときにしていた気がしていた。いわゆる駆け出しって言う感じだし、そもそも高校生でアマチュアも当然、お金をもらってWebプログラミングをしている今とは環境も状況も全く違う。

当時の僕から見たWebプログラミングといえばレンタルサーバPerlを動かすCGIであり、PHPが盛り上がってきていた時期がと思う。その時期にはRailsもでてきて、フロントエンド技術としてはAjaxが提唱された頃。でもブラウザ上でゴリゴリ何かを動かすのであればFlashを使うのが主流だった。

僕はこれらの選択肢の中から、PHPFlashを選択している。Flashではモーショングラフィックスっぽい感じの動きで自分のサイトを作ってみたり、PHPではスレッドフロート掲示板を作ってみたりしていた。そこに「将来これが盛り上がるだろうからベットする」ではなく、今選べる選択肢の中からしっくり来たものを選んだ。その時期にCやPerlなんかもコピペまじりでHello Worldぐらいのチュートリアルはやってみたものの、一番「これは自分で物を作れそう」と思ったのは唯一PHPだけだった。Flashはその後に見様見真似でonClickでgotoAndPlayとモーショントゥイーンだけで作っていた。そのぐらいでも楽しかったし、何かしら物を作って公開している感は出ていた。その時の僕のモチベーションというのは、「物を作って人に見せる」というものだった。だから自分が考えたものを自分の手で完成しきれる技術なのか、という軸で選んでいたと思う。ただ、意識的にやっていたわけではない。

時が経ち、Webサービスプログラマとして就職したときには、今流行っているだとか、やっている人が多いだとか、キラキラしてそうみたいな観点で選ぼうとしていた気がする。ただ技術選択の余地というのは新人さんだとそんなに選択幅がないので、入れられる範囲で流行っていそうな物を取り込んでいた。これはこれで当時は正解だったと思うし、今となっても、吟味するという力にもなっていると思う。ただ、そのときプログラミング言語や技術に惹かれたときの最初に興味を持った理由は「流行ってそう」である。たぶん今はこう言う理由で選ばないと思う。

ポジションを話すと、僕は運用しているWebサービスを開発しながら発展させていく立場で、技術選択も出来る立場である。が、故にコンサバに技術選択をしていると思う。これは回り回って原点に戻ってきたのだけれども、一番の軸で「自分たちに扱える技術なのか」という点である。お仕事でプログラミングしている以上、完成してユーザに提供しないと意味がないことを今の僕は知っている。当時の僕は知っていたけれど見ないふりをしていた気がする。

俺たちには今しか確実には見えないし、今やれるかどうか、そして今選んだものを未来も選び続けられるかどうか、選ばないとして捨てられる選択肢かどうか、つまり自分がコントロール出来る範囲で選択するという感じである。軽量なフレームワークやライブラリを選べば、いざとなれば自分でメンテナンスができるが、重厚だとそれもままならない。これもコントロールできるかどうか、扱えるものなのかという観点だと思う。

これはチーム全体を見るベテランの観点であり、ジュニアのレベルで大事なのは、作りきれるかどうかだと思う。自分で作ろうと思ったものを作りきれたときに学べることは大変多い。言語や技術に特化した知識も学べるけれども、あとに効いてくるのはもっとメタな知識だと思う。メタな知識があれば、他の技術にわりかし楽に乗り移れる。強くてニューゲームがこの界隈にはあると思っている。あと技術を学ぶっていうのは、脳に覚えられる容量があって、一定の容量までしか詰め込められない、みたいなものではない。いっぱい覚えられるし、覚えれば覚えるほど技術の理解の解像度が上がる。ただ、時間的制約はあるので、そういう観点から使える技術をまず学ぶという圧力はあると思う。

最初に選んだ選択肢のうち、PHPは世間では広く使われている主流のプログラミング言語であるものの、今の僕は仕事で使っていない。もう一つのFlashの今の状況は、皆さんがよく知っているとおりである。だが、この選択肢は間違っていたかと言われると、全然間違っていなかった。なぜならどちらの道具も当時の僕が作りたいと思ったものを作りきれる技術だったからだ。それで学んだことは多いし、今にも活きている。