IT業界未経験の僕が、約1年間現在の会社で働く中で、エンジニアとして進みたい方向がおおよそではあるものの、見えてきた感覚があります。

今回の記事では、現時点の僕がなりたいと思い描く将来的なエンジニア像と、それを実現するための中期的な目標をアウトプットしてみたいと思います。

エンジニアとしての目標を考える

業務を通じて見えてきた興味

現在、大規模分散システムを実現するためのプロダクトの検証作業を行うチームにアサインされています。

その一環で、コンテナオーケストレーションツールであるKubernetesを中心とした、CNCF(Cloud Native Computing Foundation)プロジェクトに出会ました。

CNCFプロジェクトでは、コンテナオーケストレーター(Kubernetes)、コンテナ監視ツール(Prometheus)、ロギングツール(fluentd)など数々のプロジェクトがホストされており、現在も勢いを増しています。

これらのプロダクトに触れているうちに、CNCFの思想に共感したことや、コンポーネントを組み合わせてシステムを構築するパズル的な要素が面白く感じるようになりました(実際は、パズルなど悠長なことは全く言える状況ではなく、未熟で分からないことばかりなのですが。。。)。

また、市場でもこれらの技術は、これから一層の盛り上がりが期待されています。

このように、自身の興味と今後の発展性が相まって、Cloud Native開発の分野でシステム設計ができるようなエンジニアになりたいと強く感じるようになりました。

所有スキル

自分の進みたい方向性が見えてきたところで、自分の現在のスキルから、学ぶべきスキルを分析したいと思います。

入社前

冒頭でも述べたとおり、僕はプログラミングを始めとして情報関係の技術はほとんど持たずに入社しました。

唯一経験があるとすれば、大学の講義・演習で少しかじったFORTLANくらいのものです。ターミナルの利用方法が掴めず、コンパイルに苦労したのが記憶に残っています。

入社後

研修・業務を通じて以下のようなスキルが身につきました。
  • シェルを通じたLinuxの基本的な操作
  • TCP/IPプロトコルの理解
  • gitの概念と操作方法
  • Kubernetesクラスタの構築に加え、各種リソースの理解
インフラの部署に配属されたため、サーバーの操作や、ネットワーキングなどのスキルが中心です。

反対に、 プログラミング言語は研修でJavaを少し学んだ程度の敬遠しかありません。この点に関しては、危機感を抱いている点でもあります。

今後必要だと考えるスキル

中期的な目標として以下のようなスキルを習得していきたいです。

  • キーコンポーネントとなるコンテナオーケストレーターKubernetesおよびCNCFコンポーネントについての知見
  • 実際にアプリケーションを作成し、Kubernetes上で運用する経験
  • Go言語の習得(CNCFコンポーネントで多く採用されており、マイクロサービスとの親和性が高いとされているため)

今後1年間の具体的な目標

上記のスキルを身につけるため、来年度に達成したい目標を定義します。
  • 実務的なKubernetesの資格であるCertified Kubernetes Administrator(CKA)、Certified Kubernetes Application Developer(CKDA)を取得する
  • 小規模なもので構わないので、Go言語を使ってマイクロサービス化したWebアプリケーションを作成し、Kubernetes上で動作させる。
  • 得られた学びや成果物をアウトプットする
去年までは、資格の取得がスキルアップに繋がると考えていましたが、より実践的な学習を行う方向にシフトしていきたいです。

CKA、CKAD等は資格なのですが、Kubernetesの実務経験が問われるものであると認識しているため、自分のスキルを可視化するために取得することを目標としています。

また、これらの目標は業務で不足していると感じる点を補うために設定したため、基本的には業務外でアプローチしていくことになるかと思います。

勢いで書いたものの、簡単に達成できるとは到底思えませんが、努力していきます。

1年後にこの記事を読み返した際に、達成できたと振り返れるよう、後悔のないように過ごしていきたいです。