プログラマーと開発言語
さて、今日はプログラマーと開発言語についてのお話です。主にプログラムを始めたばかりの若いエンジニアや、これからこの業界に入ってみたいと思っている方にお話したいと思います。
当然のことながら、プログラマーにとっての商売道具は、自身の頭脳と両腕です。
プログラマーは自らの頭で導き出した最適な(と思われる)アルゴリズムを、10本の指をキーボードに叩きつけることによってこの世に具現化させます。
そしてその具現化されたプログラムコードという文字列が、市場で高い価値を認められ、売れて給料や報酬という金に換わるのです。
エレガントなコードは数行でも高く売れ、余計なコードは何千行あっても無価値です。
ある意味、ストリートファイター的な、ストイックで男らしい世界ですね。(失礼。女性にもすばらしいプログラマーはたくさんいます。)
しかし、それがゆえに、自分が今頑張っている「プログラム言語」が、業界の趨勢からはずれてしまうというのは大いなる脅威なわけです。
確かに、技術の変遷の早い業界です。
みな、次に生き残る言語は何か、食い扶持に困らない言語は何か、友人に言って恥ずかしくないイケてる言語は何か、いろんな思惑であたふたしているように見えます。
私もずっとプログラムをやってきましたので、気持ちは分かります。分かりますが、、どうもそれはスタンス的におかしいです。
言語にしがみついていたら、それはその言語と一緒に沈むのは当然です。
プログラム言語とは、自分の実現したいことをコンピュータに命令するためのただの道具です。
それそのものに価値などありません。
プログラマーは言語にこだわるのではなく、数々の業務経験の中で、自分が実現したいことを進化させ、そこにこそ徹底的にこだわるべきです。
「絶対にここはこうなっているべき」というような強い信念を自分の中に育てていかない限り、価値あるプログラマーになどなれるはずがありません。
私がよく弊社に入ったプログラマーに言うことがあります。
まずは、マスタメンテナンスの画面1系統だ。
と。
釣りは、フナ釣りに始まってフナ釣りに終わるというのであれば、プログラマーにとってはマスタメンテナンスこそがフナ釣りである。
あ、すみません。マスタメンテナンスとは、たとえば、ECサイトの管理システムであれば、商品情報を編集するための画面です。
大抵は、
新規登録 ─ 確認 ─ 登録完了
検索 ─ 一覧 ─ 詳細 ─ 編集 ─ 確認 ─ 登録完了
└ 削除 ─ 確認 ─ 削除完了
という画面構成になっています。(端折られていることもアリ)
システム開発の基本のき、と言っていいプログラムの一連のまとまりです。
ひとかどのプログラマーを目指すのであれば、まずひとつの言語で、完璧にこれが組めるようになるように精進するといいでしょう。
ただここで、「組めるようになる」とは、「やればできる」ということではありません。
自身の理想の挙動や見た目やメンテナンシビリティを実現する、一行の無駄もないコードを書けるようになる、ことを意味します。
もちろん、「理想」や「無駄」の定義はプログラマー自身の成長によって変化しますので、これは永遠に完成することはありません。しかし、今の時点での最高の完成体をつくっておくのです。
スピードも重要です。何のリファレンスサイトも、コピペも使わず、素のテキストエディタで、3時間とか4時間でマスメン一系統を作るのです。
まだその言語に精通してなければ連続10回作ってみる。実務でメインプログラマーを任されるくらい精通していれば、1ヶ月に1回とかあらためて作ってみる。
「もう考えつくした」と思いながらも、毎回毎回新たな発見というのがあるものです。
「ああ、なるほど...!この書き方は、こないだの案件であったこういう要件に対応できないじゃないか...!」とか。
この完成体を習得すれば、どんな言語でも怖くはありません。新しい言語を目の前にしたときの姿勢が変わるからです。
「この言語ってどんな思想なんだろう?」
ではなく、
「自分がやりたいことを、この言語ではどうやるんだろう?」
という発想になります。
そうなると、言語という怪物に飲まれてあたふたすることはなく、逆に怪物の方が「私を理解してください。」「私にもそれはできます。」と寄り添ってきます。
もちろん、まったく思想の異なる言語というのはあります。
しかし文法を覚え、リファレンスを見ながら、ちょこちょことできることを増やしていくなどという素人チックな、無駄なアプローチは踏まなくなります。
戦場でのプログラマーは、自分の戦いの中で必要性を感じないことは知らなくてもいいのです。自身が実現したいことを木偶の坊なコンピュータに分からせるそのやり方が分かればそれでよい。
これにより、新言語を習得するための工数は1/10になります。
そのあとで、他のプログラマーと飲みに行ったときなどに「便利機能」を教えてもらったりして、ビールを噴くのは面白いことですね!
私はこの立ち返る基本の言語は、perlでもphpでもaspでもjavaでも何でもいいと思っています。古い言語であることを畏れるよりも、自分が実現したい機能が停滞していることがあれば、それに対して敏感になるべきです。
何でもいいからその言語を狂ったようにやって精通し、そして、その言語に惚れるのではなく、自らが実現したいことを時代に合わせて進化させていきましょう。
それが、長きにわたって価値あるプログラマーであり続けるための道だと思います。