複数のプログラミング言語の習得とプログラマへの評価

 プログラマはたいてい複数の言語をある程度扱えるが、仕事で使うときはひとつの言語に絞られてくる。このことは、 IT 系では非常によくないことらしく、「複数プログラミング言語を使えるようになろう!」「プログラマとして高く評価されるよ!」という記事や話の種を見かける。

 それでは、ゲーム業界の場合はどうだろう。たとえば剛体物理学をゲームに生かせる程度に習熟した C++ プログラマの田中さんと鈴木さんがいたとする。そして、

  • 田中さんは新たに JavaC# を獲得した
  • 鈴木さんは新たに流体物理と通信対戦(ネットワーク)技術を獲得した


 とする。

 では、田中さんと鈴木さんのどちらが会社からより高く評価され、同僚からより信頼を得て、より高い給料を貰えるか。答えは鈴木さんになる。

 田中さんはゲーム屋として出来ることがそれほど増えていない(携帯電話のゲームが作れるようになったといえるかもしれないが、それには異動や転社が必要かもしれない)のに対して、鈴木さんは出来ることが増えている。日本式の開発現場では鈴木さんの取り組みは重宝される。

 なので、ゲーム開発の現場では「新しい技術を獲得しよう」とは言われるが、「新しいプログラミング言語を獲得しよう」とは言われない。ましてキャリアプラン視点では絶対に言われない。仮に人から「力学と Java とどっちを勉強しようか」と相談されたら僕は力学を推す。

 こんな業種がある一方で、携帯組み込み系のようにプラットフォームに合わせて言語を変更しなければならない業種もある。複数の言語を使ってプログラムをすること自体はそれほど大変ではないだろうが、移植とかは面倒そうだ。

 このあたりは一度掘り下げてみれば面白いと思う。しかし、ネット上で「プログラマ」という言葉が出たら、それはまず IT 系を指している。だからプログラマのライフプランやキャリアプランの話も、ソッチ系の業界の話で、直接参考にしたり議論に参加することは難しい。

 どこからが IT 系でどこまでが IT 系かという議論もあるだろうが、やっぱりゲームは IT とイコールではない。だから、(ゲーム業界べったりではない僕ですら)読むときも書くときも話すときも聞くときも、なかなか話とか感覚が擦り合わないと最近よく感じる。たとえば SE をトピックにした記事を色んなところで見かけるが、ゲーム業界に SE は存在しない。この時点で SE とプログラマの分業制をとっている現場と同じ視点に立つことはできないため、色んな記事や話や体験が「よその国の話」になってしまう。

 違いが楽しめるようになればきっと面白いと思うのだが、今はまだ「うーん話が分からん」「この議論のポイントは何??」で終わってしまうのが残念。。。


追伸. 田中さんと鈴木さん
 ちょっと例えが悪かったかもしれない。現実問題として開発には C/C++ しか使えないという背景があるから田中さんがとった進路はおかしい(現実にはこんなステップアップを組む人はいないだろう)。そのうえ、 C/C++ ベースの高級言語の習得には元々時間がかからないので、当然高い評価は受けられない。たとえばアセンブリが読めるになるとか、シェーダが書けるようになるとかいう方向で新しいプログラミング言語を習得していけば、それはそれで評価してもらえるはずである。

 ただ、アセンブリとシェーダはゲームプログラマならやれて当然みたいなところはあるし、それよりはやはり人工知能やプロシージャル技術といった技術を獲得していったほうが高く評価してもらえることは間違いないだろう。他には「面白いゲームを作れる」とかいうスキルもあるだろうけど、ここでは勉強で獲得できる(獲得したと組織に宣言してもまぁ殴られない)話に絞る。