入社5年目に挫折したことについて

はじめに

現在サイバーエージェントのメディア事業部でサーバサイドエンジニアをやっているukiy6969です。 メディア事業部、横軸組織PTAのアドベントカレンダーの19日目の記事となります。

あまり自分のことについて語るのは苦手ですが、今回は最近挫折したことについて、吐き出して心機一転し来年頑張ろうと思いました。

何が起きたのか

私は2017年に新卒入社しバックエンドエンジニアとして働いています。 最初はゲーム系の部署に所属しており、2020年にコロナで全社リモートになったタイミングと同時期に広告の部署に移動しました。 今まではそれなりにエンジニアとして活動できていたと自分では思ってましたが、最近十分なパフォーマンスを発揮できていないと感じておりました。

最近私自身が感じている課題について

  • コードを書く時間を確保しづらくなった
  • 設計するものが変わった
  • 今までと違って関わる人が増えた
  • 新しい技術に対するインプット不足

これらの課題について語っていきます。

コードを書く時間を確保しづらくなった

これは必要のないMTGが多いという不満ではありません。 エンジニアリング以外に採用などの業務が増えてきました。 私個人の問題ですが、こちらの業務に時間を取られてしまい、思った以上に自分のタスクを進められないことやメンバーのレビューが遅れてしまいメンバーに迷惑をかけてしまっていることがありました。

設計するものが変わった

今までは要件が明確になっていることが多くそれをどうやってエンジニアリングで解決することを求められていました。 最近は解決したいことはわかっているどのように解決していくかは決まっておらず、自分で考え、解決方法をメンバーに納得してもらい、仕様に落とし込んでいかなければなりません。 このスキルがかなり弱く上手く業務をすすめられませんでした。

今までと違って関わる人が増えた

現在広告のエンジニアとして働いていますが、DSPなどではなくメディア側の広告に属しています。 最近では、広告側のみで完結する機能だけではなくメディア側の機能に関わる機能改修も増えてきました。 ただ単に広告の売上を伸ばすことを考えるのではなく、メディアのことも考慮しなければなりません。 多くのメンバーの意向を聞き上手くまとめなければなりませんでした。

新しい技術に対するインプット不足

これは単に自分の怠惰ですが、近年はある程度の技術的要件に対しては、今まで得た自分の経験で解決できることが増えてきました。 この傲りが新しい技術に対する勉強のモチベーションを下げていました。 もし「一年後までに現在の開発チームに導入するべき技術を答えろ」と問われたとき、自身を持って答えることができません。

決意

これらの課題に対して、IQ2の頭でどのように変わるべきか考えました。

  • コードを書く時間を確保しづらくなった

→ メンバーを頼り、頼られる

時間が確保できない場合、どうしようもありません。 コーディングなどのエンジニアリング業務は自分でやることに拘らず、手が空いているメンバーに譲渡していくべきだと思いました。 メンバー任せにしてしまっては、ただのサボっている人となってしまいます。 エンジニアリング以外の業務で、メンバーに感謝されるような成果を残していかなければなりません。

  • 設計するものが変わった

→ プロダクト愛を持つ

仕様に落とし込むなどのスキルについては学ぶとして、一番必要なのはプロダクト愛だと考えました。 メンバーの中で誰よりもプロダクト愛があれば、そのプロダクトに必要な最適解を求めることができないかもしれませんが、最適解を模索し続けることができます。 この姿勢が直近の私に大きく足りないものだと感じました。

  • 今までと違って関わる人が増えた

→ メンバーの人となりを知る

コミュニケーションを多くとりメンバーの大事にしていることを理解しなければならないと強く感じました。 個人的にはリモートワーク時には雑談がしにくいと感じていますが、積極的にコミュニケーションをとっていこうと思いました。

  • 新しい技術に対するインプット不足

→ アウトプットまで習慣化

こちらについては習慣化するしかないと感じました。 定数的な目標を立てて(ブログを毎日N本見るなど)、インプットしアウトプットまでセットで実行したいと思ってます。 今年のアドベントカレンダーでは技術的な記事を書くことができなかったため、来年は書けるよう精進します。

さいごに

今回は、戒めを込めて直近挫折したことについて、書かせていただきました。 これらを早く供養し、突き進みたいと思います。

よいクリスマスを!!

ローカルのArchlinuxをGCEに移行してみた(移行中)

GCE上にArchlinuxでVNCサーバを立てたという話です。

はじめまして、みやぴと申します。社会人3年目になって今更ですが、ブログをはじめました。 日本語苦手なので、誤字脱字などありましたら、優しく指摘してください。

経緯

大学生の頃からArchlinuxを使用しているのですが、色々といじっていたらぶっ壊れてしまい、再インストールの衝動に何度もかられ(実際には時間がなく再インストールしていない…)、一から環境を作り直すをしんどいなと思ってました。 そのときにふとGCPにArchlinuxでVNCサーバを立てればいいじゃないかと思い立ちました。 なんでGCPなのかというと

  • 仕事で利用する機会があり、慣れている
  • 無料試用期間中300ドルのクレジットがもらえる(いつか勉強しようと思って使い余していた…)

なので、無料試用期間中に実際に運用しようと思いました。

構成

使用したツール

GCP上に立てるGCEインスタンスはansibleを用いて管理することにしました。ローカルのArchlinuxに構成管理ツールを使わなかったことを何度も後悔したので…

実際に使っているものは、githubにあげてます。

github.com

ansible初心者なので、archlinuxのansibleはこちらを参考にしました。

github.com

やったことは、

1.Archlinuxのイメージで VMインスタンスの作成

$ gcloud compute instances create archlinux \
        --machine-type=n1-standard-2 \
        --boot-disk-size=20GB \
        --image-project=arch-linux-gce \
        --image-family=arch

2.VNCサーバに必要なパッケージのインストール(ansibleで管理している)

主に入れているものは以下

  • TigerVNC
  • デスクトップ or ディスプレイマネージャ(私はi3 wmを利用しているのでi3 wmを入れた)
  • その他必要なパッケージ

3.VNCサーバの起動

$ vncserver

4.GCE上に立てているVNCサーバとの接続

GCEとの接続は、SSHポートフォワーディングで行っています。

$ gcloud compute ssh ${インスタンス名} -- -L 5901:localhost:5901

あとは、VNC Viewer でローカルホストの5901に接続するだけです。

デモ

「どれくらい遅延とかあるの?」と疑問に思う方多いと思いますが、個人的には許容できる範囲かと思います。まだ、ブラウザとターミナルぐらいしかためしていないですが… このブログもGCE上から書いてます。

メリット・デメリット

メリット

  • どこでも自分の開発環境が使える(スマホタブレットからでも)
  • お金さえあれば、いくらでもスペックを上げられる
  • Goolgeの回線でのインターネットサーフィンは快適

デメリット

  • 料金
  • GPUが使えない…
    • やはりこれはクリティカル
    • 東京リージョンでGPU使えないことをあとから知った…

今後の展望

  • 気力があれば、VirtualGL試したい
  • wayland のRDPを試してみたい
  • GCPを使っているので他のGCPサービスと連携してなにかしたい