Site icon imageganyariya blog

Post title iconエンジニアとしてのキャリアを考えてみる

Image in a image block
kawaii, girl, short hair, engineer, computer, career

はじめに

この記事では ganyariya が今後のエンジニアキャリアを考えるだけの記事(考えの吐き出し)です。
ganyariya が今後どうエンジニアとしてキャリアを積むべきか、を自分自身で考えるものです。

対象読者

対象読者は将来の ganyariya (と ganyariya に興味を持っていただける方)のみになります。

記事から得られること

将来、 ganyariya がこの記事を見返すことで「こういうこと考えていたのだな〜」と振り返られます。

ganyariya を知らないことにとっては「なんやこれ」になるため、特に得るものはありません。

結論

本記事の最後にある「まとめ」になります。


今後を考える前に まずは振り返ってみる

公のものについては RESUME にまとめています。

プライベートなもの(個人情報含む)については Forkwell, LAPLAS, Findy に登録していますが。しかし、Public にしていないので企業の人しか見れません。

学生・社会人ともに Qiita Zenn に技術記事を書いていたので(今みると非常に拙い内容ですが…)、おそらく発信力によるボーナススコアが加算されています。
実際の技術スキルはまだまだな状態です。

Image in a image block
Findy
Image in a image block
Lapras

学生時代のキャリア

大学 1, 2 年生のころは Unity や Siv3D でシンプルなゲームを作っていました。
今思うと git もほぼ知らない中、よく作成できていたなという感じです。
ゲームが好き、かつプログラミングしたい、という欲求でゲームを作っていました。

その後、競技プログラミングに出会い、その後ずっと競技プログラミングをやっていました。
運がよく、 ICPC 然りいくつかのオンサイトコンテストに出場できました。

また、何かしら情報を発信したり、誰かに認めてもらうことが好きであるため、 Qiita や Zenn に記事を多く書いていました。

お仕事を探すうえで

  • 自分を支えてくれたコンテンツ業界に関わりたい
  • 競プロで学んだアルゴリズム・実装力を活かしたい
  • 大規模なリクエスト扱いたい
  • カンファレンスや技術ブログなどで発信したい

という「やりたいこと」が明確にあったため、ソーシャルゲームを開発するエンターテインメント企業(技術系の発信が積極的)に新卒として入ることになりました。

社会人としてのキャリア

2022 年の 4 月から サーバサイドエンジニア として、ゲーム開発に携わらせていただいています(やりたいことができているため、ありがたい限りですね……!)。

と思いましたが、自分のやってきたことを振り返るとサーバサイドエンジニアではなく、社会一般的には バックエンドエンジニア のようです。

世にいうサーバサイドエンジニアは「サーバの仮想化」「Apache Nginx」「VMWare」の保守管理を指しているそうなので、これには当てはまらないですね。

バックエンドエンジニアとしてやってきたことは以下のようなことです。

  • ゲームのバックエンド API 開発
  • ゲームのユーザデータ・マスタデータ設計
  • ゲーム運営における運用
    • CS 調査
    • 補填対応
    • ランキング運営
  • CI/CD の改修(Drone Jenkins ArgoCD/Kubernetes)
  • GCP 費用削減

他にも、現在やっているタスクなど色々と経験させていただきました。

今のキャリアの問題点について

上記にまとめたように、ここ 1 年半ほど社会人としてお仕事をさせていただきました。
しかし、今のキャリアに問題を感じています。

それが「専門的な技術力(経験ともいえる)」です。

これまでのお仕事によって、ゲーム業界におけるバックエンドエンジニアとしての基礎中の基礎は身につけられてきました。

しかし、会社にいる他のエンジニアの方々とくらべて「専門的な技術力(経験)」、つまり「この技術・知識に関しては ganyariya くんに聞けばいいね〜」がないのです。

社内のつよいエンジニアの方々を見ると、何かしらの「専門的な技術」を身につけています。
たとえば、 Cache (Redis / Memcached) については A さん、 GCP Infra については B さん、バックエンド技術すべてに精通しているのが C さん… というものです。

社内・社外で必要とされるためには何かしらの「専門的な技術」(かつ、枯れた技術)が必要です。

しかし、学生時代における ganyariya については全般的に広く浅く学んでアウトプットを多くやる、というものであり、専門性が弱かったです。
競プロは青色程度にはやりこめられたものの、仕事で直接使えるかというと「筋肉」に近い分野であるため、「専門的な技術」とはいえません。

ここで、「フルスタックエンジニアになればいいのでは?」という選択肢があります。自分も昔はなんでもできるのかっこいいじゃん〜でフルスタックエンジニアを目指していました。
しかし、社会人としてゲーム業界に入った上で思うことは、フルスタックエンジニアでは器用貧乏になり、良い仕事はできなさそうということです。
チームとしてプロダクトを作っていく場合、なんでもかんでもできる必要はありません。ここだけは完璧にできる、他の人より知識と経験がある、という分野が 1 つさえあればなんとかなります。

もし 1 人でフリーランスとして仕事をしたい!のであればフルスタックエンジニアになればよいですが、自分はエンタメ業界においてチームで仕事をしていきたいです。

そのため、今後のキャリアを考えていくうえでは「専門的な技術(経験)」を身につけるのが目下の課題です。

では技術だけでよいのか?(スペシャリストだけでよいのか?)

キャリアとして専門的な技術を身につける、つまりスペシャリストの道を目指すのが良さそうです。しかし、自分のなかの考えとして、ずっと先の将来においてはマネジメント系も行えるようになりたい、という想いがあります。

こう思うようになったのは 3 つの理由があります。

  1. 周りのエンジニアをみて憧れるから(理想のケースだったから)
  2. 人間一人でできることには限りがあるから
  3. そもそも人と話すのが好きだったり、プロセスを改善することが好きだから

1, 周りのエンジニアをみて憧れるから

社内にはすごいなぁというエンジニアの方たちが多くいます。
技術力も豊富なうえに、ゲームプロダクトをより良いものにする、というエンジニアリング・マネジメントならびに行動力です(本当にすごい…)。

これらすごい方々は、自分の仕事だけでなく、チーム・プロダクトの時間と成果の最大化を行っています。
Bot 開発や Jenkins CI/CD という効率化という点もそうですし、綿密な仕様相談、タスク管理、スケジュール相談もそうです。

彼らのように、自分だけでなく周りの人もサポートしながら仕事をしたいです。

また、自分が内定アルバイトのときに関わらせていただいたときのマネージャー・メンターの方の働き方が自分にあっている、というかやりたいなぁとずっと思っています。

自分でコードも書きながら、チームのメンバーのサポートやタスクを管理して、サーバチーム全体を前に進めていく。
そのような働き方がしたいです。(コード 50%, タスク管理・サポート 50% ぐらい)

2, 人間一人にできることには限りがあるから

社会人として仕事をしてみると「人間 1 人ができること」は圧倒的に少ないなぁ…と思うようになりました。

個人開発においてはどんどん好き勝手コーディングできますが、ゲームの場合は仕様、設計、開発、QA、運営と様々な職種から構成されます。
色々なタスクが同時に進行し、 Slack でやり取りしながら進めていくと、 1 日 1 週間はあっという間に過ぎていきます。

そのため、 1 人月でエンジニアがプロダクトに対して寄与できるコード量や成果は、思っていたより圧倒的に少ないなと感じました。
(もっとなんでもできると思っていた。)

これは他の職種でも同じであり、人間 1 人が 1 月でできることは限られています。
とくにゲーム開発のように、チーム・プロダクトの規模が大きくなるほど時間に対するできる成果の割合が下がっていきます。

そのため、できるだけ自分の時間を使ってプロダクト・チーム全体の効率化したほうがいいなぁと思うようになりました。
人間 1 人ではなにも進みませんが、ツールによって効率化したり、プロセス(仕事の進め方)を改善することによって、他の人々を巻き込んで活性化できると考えています。
現に、今のプロダクトに他の人を巻き込んでチーム・プロダクト方を活性化させている、効率化している方々がいらっしゃって、すごいなぁ…となっています。

そのため、自分の時間を投資してチーム・プロダクトの効率化やサポートがおこなえればよいな〜と考えています。(自分はまだそれができる力が全然ないので、今後の課題です。できるのかな…)

3, 人と話すのがすきである&改善系がすき

昔は人と話すのが苦手でしたが、最近は 1 対 1 であれば、知っている人であれば話すのが好きになりました。
(話す、というよりは聞くのほうが好きです。)

そのため、マネジメント系の場合、色々な人と話せるのが楽しそうだなと思っています。

また、プロセスを改善する、効率化するというのが昔から好きです。
やり方を工夫してもっと良い方法を見つける、というものです。

学生の頃から色々なタスク管理ツールを使って、日ごと・週ごと・月ごとに振り返りをしてきました。
研究室で仕組みや振り返りを導入してみたりしていました。

なにか振り返りをやったり、それによってやり方が改善されることが好きであるため、振り返りをチームでやったり、やり方がどうすれば良くなるかを考えられるのがマネジメント系で楽しそうだなと考えています。

では技術系とマネジメント系両方やるのか?

ここまでの話をまとめてみると、エンジニアとして技術を高めていきたい、もっと技術を深めたいという自分もいれば、マネジメント系をやってみたいという自分もいます。
つまり、相反する自分がいて困っています

「両方やりたい」をふまえて考えた結果、技術系からマネジメント系に少しずつシフトしていく、という道を選ぼうと思います。(エンジニアはみんなこうな気もする…)

若いうちに枯れた技術・専門的な技術を深めて成長し、リードエンジニアを経験します。
リードエンジニアを経験すれば「自分にスペシャリストの道があっているのか」が分かりますし、自分の技術領域も広がると考えています。

その後、少しずつマネジメント系もはじめて、チームの方々のサポートならびにタスク管理なども行う「プレイングマネージャー」になりたいです。
まだまだコードもいっぱい書きたいし技術も身につけたいためプレイングマネージャー、です。

逆にいうと「プロダクトマネージャー」「エンジニアリングマネージャー」のようにマネジメント専門でやることは考えていません。
死ぬまでエンジニアリング・技術に触れ合っていたいためです。

人間は移ろいやすいので、実際に経験すれば考え方もかわりやっぱりマネジメント単体でやりたい〜と言っているかもしれません。
臨機応変に考えていきます。


まとめ 今後のキャリアについて

今までの議論をもとに、今後のキャリアについてまとめます。

前提として

キャリアは移り変わりゆくものです。
実際に経験したり、家庭環境が変わることによって、キャリアに対する考え方もかわります。

そのため、ここに書いていることを絶対に貫き通すのではなく、経験したタイミングで振り返って考え直します。

業界・転職について

できることなら、エンターテインメント(ゲーム・アニメ・マンガ・VTuber)業界にずっと関わりたいです。

転職は考えていません。
なぜならば、今は会社の先輩方に助けてもらってばかりなので、今度は自分が支える側にならないといけないためです。
会社・プロダクトに対してこれまでの恩を返せた…!! と思えるようになったら考えるかもしれません(そのときには、出産や子育てなど、家庭の都合もあると思います)。

方針について

枯れた技術(専門的な技術)を身につけて、会社ならびにプロダクトでその技術・知識については  ganyairya くんに聞けばいいよね〜というものを身につけます。
また、その知識と経験をもとに何かしらの会で発表します。

あわせてリードエンジニアを経験し、チームの方々と一緒にプロダクトのバックエンドを安定化することを目指します。(また、チームの方々の技術的なサポートをできるようになりたい。)

その後、少しずつマネジメント系にシフトします。
プレイングマネージャーとしてコードも書きながら、チームの方々の心理的サポートやタスク管理などを行えるようになりたいです。

年数にあわせた具体化目標について

方針だけ立てても、年数ならびに目標がなければいつまでに何を達成すればよいのかわかりません。

そのため、年数に合わせた具体化目標を記します。

(R)は累計です。

  • 1 年後 (2024 年 6 月まで)
    • リードエンジニアを経験している
    • (R) 誰かに頼られる枯れた技術ならびに経験が 1 つ以上ある
    • (R) 個人開発において何かしら 1 つやり遂げて作品を出している(累計)
  • 3 年後 (2027 年 6 月まで)
    • プレイングマネージャーを経験している
    • (R) ある技術についてカンファレンスで 1 回以上登壇している
    • (R) 誰かに頼られる枯れた技術ならびに経験が 3 つ以上ある
    • (R) 個人開発において何かしら 3 つやり遂げて作品を出している
    • OSS を開発しスター 50 を獲得している
  • 5 年後 (2029 年 6 月まで)
    • 新プロにおけるリードエンジニアもしくはプレイングマネージャーを経験している
    • (R) ある技術についてカンファレンスで 3 回以上登壇している
    • (R) 個人開発において何かしら 5 つやり遂げて作品を出している(累計)
    • OSS を開発しスター 100 を獲得している
  • 10 年後(2024 年 10 月まで)
    • 未来すぎてわからない
    • 実際にリードエンジニアやプレイングマネージャーを経験しないとなんともいえない

枯れた技術(専門的な技術について)

これらの技術について深めていきたい、についてまとめておきます。

仕事編と個人編があります。

  • 仕事編
    • Kubernetes
    • Container
    • GitHub Actions
    • Golang
    • GCP
    • 認証・認可
  • 個人編
    • ふりかえり
    • アジャイル(スクラム)
    • ebiten (ノベルゲームエンジン開発)
    • Web App Development

最後に

今日はお仕事おやすみをいただいていたのですが、なんだかんだ仕事みたいなことをして疲れました。

ゆっくり休みます。

次はエッセンシャル思考の具体化として、「人生でやりたいことリスト」をつくり、「やらなくてよいこと」を容赦なくやめます。
そして、やりたいことリストに専念できるようにします。