私がゲーム開発の仕事を始めたのは1990年代です。
当時は新しいゲーム機が登場するたびに、開発環境も大きく変わっていました。限られたメモリや処理能力をどう使うか。画面に表示するものを増やしながら、いかに処理を軽くするか。そうしたことを毎日のように考えていました。
周囲には優秀なプログラマーが大勢いました。
複雑な処理を短時間で実装する人もいれば、何日も解決できなかった不具合の原因をあっという間に見つける人もいました。自分には到底かなわないと感じたことも、一度や二度ではありません。
あれから30年以上が経ちました。
現在、私はエンジニアの採用や育成にも携わっています。開発をする立場から、人のキャリアを考える立場にもなったことで、若い頃とは少し違ったことが気になるようになりました。
それは、今どれだけ優れた技術を持っているかだけでなく、その技術を次の仕事にどう生かせるかということです。
ゲーム業界に限らず、ITエンジニアの仕事は技術の変化が激しい世界です。今の得意分野が、10年後も同じように求められるとは限りません。
では、若いうちから何を意識しておけばよいのでしょうか。
これまでの開発経験と、現在の採用・育成の仕事を通じて考えていることを書いてみます。
「何の言語を使ったか」より「何を解決したか」
エンジニアの採用では、経験したプログラミング言語や開発環境を確認します。
C++、C#、Java、Python、Unity、Unreal Engineなど、使ってきた技術は、その人が担当できそうな仕事を判断するための重要な情報です。
ただ、私はそれだけでは、その人の技術力を十分に判断できないと思っています。
例えば、ゲームの描画処理を担当していたプログラマーがいたとします。
同じ「描画処理の経験がある人」でも、既存の処理を修正していた人と、処理負荷を測定してボトルネックを調べ、改善方法を考えていた人では、経験した仕事の内容が違います。
後者であれば、開発環境が変わっても、性能上の問題を調査する際に過去の経験を生かせるかもしれません。
不具合の調査でも同じです。
原因が分からない現象に対して、再現条件を調べ、ログや内部状態を確認し、疑わしい処理を一つずつ検証していく。
こうした仕事の進め方は、特定のプログラミング言語だけに結びついたものではありません。
もちろん、新しい開発環境に移れば、新たに勉強しなければならないことはあります。それでも、問題を調べて解決するまでの経験があれば、初めて触る技術にも取り組みやすくなります。
若いエンジニアには、自分の職務経歴を振り返る際に、使った技術だけでなく、どんな問題に遭遇し、どう解決したのかも整理してほしいと思っています。
それは転職活動のためだけではありません。
自分がどのような仕事を任せられるようになったのかを知るうえでも役立ちます。
技術が変わったとき、以前の経験をどう生かすか
私がゲーム開発を始めた頃と現在では、開発の進め方が大きく変わりました。
以前はハードウェアの制約を強く意識してプログラムを書くことが多くありましたが、現在はゲームエンジンや各種ツールを利用する開発が一般的になっています。
オンライン機能を持つゲームも増え、サーバー、ネットワーク、セキュリティ、継続的な運用など、ゲームを作るために必要な技術の範囲も広がりました。
とはいえ、昔のプログラマーが身につけた知識が役に立たなくなったわけではありません。
例えば、メモリの使い方やデータ構造、アルゴリズムの知識は、現在の開発でも役立ちます。
ただし、以前のやり方がそのまま通用するとは限りません。
新しい開発環境には、その環境に適した設計や実装方法があります。昔の経験を頼りに何でも作ってしまうと、かえって扱いにくいプログラムになることもあります。
そこで必要になるのが、これまでの経験を生かしながら、新しいやり方も覚えていくことです。
例えば、長年C++で開発してきた人がC#を使う仕事に移る場合、オブジェクト指向の考え方などは役立ちますが、言語仕様や実行環境の違いを理解する必要があります。
さらにUnityを使うなら、エンジン特有の仕組みや開発手順も覚えなければなりません。
これは若手でもベテランでも同じです。
経験が増えるほど、新しく勉強する時間を確保するのが難しくなる場合もあります。しかし、過去の成功体験だけに頼っていると、仕事の選択肢が少しずつ狭くなることがあります。
私自身も、新しい技術を何でも簡単に覚えられるわけではありません。
それでも、今までの知識で理解できる部分と、新しく学ぶ必要がある部分を確認することは、年齢に関係なく続けたいと思っています。
一人でできる仕事が増えたら、次は人と仕事を進める力も必要になる
経験を積んだエンジニアは、少しずつ難しい仕事を任されるようになります。
最初は先輩に確認しなければできなかった作業も、自分で判断できるようになるでしょう。
ただ、そこで仕事を何でも一人で抱え込むようになると、別の問題が出てきます。
例えば、ある機能について自分だけが詳しくなり、仕様変更や不具合対応のたびに周囲から質問が集中するような場合です。
本人が優秀であるほど、仕事が集まってしまうこともあります。
しかし、いつまでもその人しか対応できない状態では、担当者が休んだときや、別の仕事を任されたときに困ります。
必要なのは、自分が解決できる問題を増やすことだけではありません。
他の人が理解できるように説明する。実装の意図を残す。レビューを通じて知識を共有する。自分で対応すべき仕事と、他の人に任せられる仕事を考える。
こうしたことができると、チームとして対応できる仕事も増えていきます。
もちろん、全員がマネージャーを目指す必要はありません。
技術を専門に追求し続けるキャリアもあります。
ただ、その場合でも、自分の考えを周囲に伝えたり、必要なときに協力を求めたりする能力は役立ちます。
技術力の高い人が、必ずしも一人で仕事を完結させる人とは限らないのです。
仕事の幅を広げる機会を、見逃さないでほしい
エンジニアとして成長するには、専門性を深めることが大切です。
一方で、経験を積むうちに、少し違う仕事にも触れておくと役立つことがあります。
例えば、プログラミングを主に担当している人なら、設計レビューに参加してみる。テストを担当している人なら、不具合の原因調査にも関わってみる。
ゲーム開発であれば、プランナーやデザイナーが何を実現したいのかを理解することも重要です。
自分が担当する処理だけを見ていると、仕様の意図を読み違えることがあります。
なぜその機能が必要なのか、プレイヤーにどのような体験を提供したいのかが分かれば、実装方法について別の提案ができる場合もあります。
こうした経験は、将来の仕事にもつながります。
ゲーム開発から業務システム開発へ移る場合でも、仕様を理解する力や、関係者と認識を合わせる力は役立ちます。
逆に、業務システム開発で身につけた設計やテストの経験を、ゲーム開発に生かせる場面もあります。
もちろん、どんな経験でも簡単に別分野へ転用できるわけではありません。転向先で必要な技術を勉強することは欠かせません。
それでも、一つの開発分野しか経験してはいけないわけではありません。
仕事を続けるための選択肢は、思っているより多いことがあります。
半年に一度、自分の仕事を振り返ってみる
若いうちは、目の前の仕事に集中するだけでも大変だと思います。
新しい言語を覚える。担当機能を完成させる。不具合を修正する。納期に間に合わせる。
そうした仕事をこなしているうちに、あっという間に数年が過ぎていきます。
だからこそ、半年に一度くらいは、自分ができるようになったことを確認してみてはどうでしょうか。
例えば、半年前に比べて、調査できる不具合の種類は増えたでしょうか。
以前は先輩に頼っていた設計や実装を、自分で判断できるようになったでしょうか。
他の人が書いたプログラムを読み、その意図や問題点を説明できるようになったでしょうか。
後輩や同僚から相談されたときに、具体的な助言ができるようになったでしょうか。
こうした変化は、使えるプログラミング言語が増えたかどうかだけでは分かりません。
自分の仕事の内容を振り返ることで、次に何を勉強すべきかも考えやすくなります。
また、これからも同じ仕事を続けたいのか、別の分野にも挑戦してみたいのかを考える機会にもなります。
キャリアプランは、一度決めたら変えてはいけないものではありません。
年齢や生活環境が変われば、仕事に求めるものが変わることもあります。
今まで楽しいと思っていた仕事が、必ずしも10年後にも同じように楽しいとは限りません。
それを悪いことだと考える必要はないと思っています。
エンジニアの努力だけでは、キャリアは作れない
ここまでは、エンジニア本人ができることについて書いてきました。
ただ、採用や育成に関わる立場として、もう一つ大切だと考えていることがあります。
それは、会社側にも、社員の経験を広げる機会を作る責任があるということです。
新しい仕事に挑戦したくても、その機会がなければ経験は積めません。
別の技術を勉強しても、実際の業務で使える場面がなければ、知識を定着させることも難しくなります。
もちろん、会社にも経営上の制約があります。本人が希望する仕事を、必ず用意できるとは限りません。
それでも、今の仕事でどんな経験が積めるのか、次の仕事につなげるには何が必要なのかを、一緒に考えることはできるはずです。
私たち辰巳電子工業SS事業部でも、エンジニアの採用やキャリア支援に取り組んでいます。
面談などで経験を確認する際には、現在の技術だけでなく、本人がこれからどんな仕事をしたいのか、どのような経験を積んでいきたいのかも大切にしたいと考えています。
今の仕事が、その人の将来につながるものになっているか。
本人だけでなく、採用や育成を担当する側も考え続ける必要があります。
10年後も働き続けるために
若い頃の私は、優秀なプログラマーというと、誰よりも速く、難しいプログラムを書ける人を思い浮かべていました。
今でも、そうした技術力を持った人を尊敬しています。
ただ、長い職業人生を考えたとき、それだけが大切なのではないと感じるようになりました。
新しい技術を学ぶこと。自分の経験を別の仕事に生かすこと。周囲の人と協力すること。そして、必要に応じて仕事の選び方を変えること。
こうしたことも、エンジニアとして働き続けるために役立ちます。
もちろん、ゲーム業界で長く働き続けることだけが正解ではありません。
別の業界へ移ることも、開発以外の仕事に挑戦することも、その人にとってよい選択になる場合があります。
大切なのは、今の仕事しか選べない状態にならないことだと思います。
10年後に何をしているかは、誰にも分かりません。
それでも、今の仕事を通じて何を身につけ、次にどんな仕事ができるようになるかは、少しずつ考えることができます。
私自身も、長い間この仕事に関わってきましたが、まだ勉強しなければならないことがたくさんあります。
これまでの経験を、これから仕事を始める人や、次のキャリアを考えている人たちに伝えていきたいと思っています。
SNS
開発や採用、育成、マネジメントについて、日々の仕事の中で考えたことはX・Bluesky・Facebookでも投稿しています。
Wantedlyのストーリーにするほど長くない話や、日々の仕事で気になったことも書いています。
Bluesky
https://bsky.app/profile/itchie-tatsumi.bsky.social
Facebook
https://www.facebook.com/ichino.souta
辰巳電子工業SS事業部
辰巳電子工業SS事業部では、IT・ゲームエンジニアの採用やキャリア支援に取り組んでいます。
現在の経験をどう生かすか、これからどんな仕事に挑戦するかなど、エンジニアとしてのキャリアを考えている方は、事業部のWebサイトもご覧ください。
辰巳電子工業SS事業部
https://www.tatsu-mi-systemsolution.jp/