開発経験のないITエンジニアが、コードを書けるようになるためにやっていること
開発経験がないITエンジニアとして、いま思っていること
私は現在30代後半で、今までITエンジニアを中心としてキャリアを積んできたのですが、私のキャリアの中には開発経験(いわゆるプログラミング経験)がありません。簡易的なシェルを書いたり、VBAで業務効率化のためのツールを作ったり、GCP内でWEB APIを叩くだけの簡易的なコードは書いたことはありますが、いわゆる「開発プロジェクト」の中でコードを書いたことは一度もありません。
現状の業務において特にコーディングスキルを求められることはないため、今の環境で働き続けるには全く支障はないのですが、開発経験がない(ちゃんとしたコードが書けない)ということについて、少しコンプレックスがあります。そのコンプレックスを解消するためにどのようなことをしているのかを簡単に整理してみました。
私のキャリアについて
・新卒でSIerに入社、ミドルウェア構築・運用担当
・会計事務所で税理士補助
・事業会社IT(情シス(会計・人事系パッケージ運用))
・事業会社IT(データエンジニア)
キャリアについて、上記のようなキャリアを歩んできました。本来は新卒で入社したSIerで配属ガチャ次第では開発案件に入れるはずなのですが、当時の私はプログラミングが超絶苦手+まったく勉強する気がなかったためインフラ案件に配属となり、そのまま同じ業務を約4年間続けることになりました。
その後、会計事務所に転職して税理士受験をしていた時期もあったのですが、資格試験に超絶不向きであることをすぐに実感し、ふたたびITに戻ることに、、事業会社のIT(いわゆる情シス)に転職して、業務システム周りの運用を行っていました。それ以降は事業会社のITでDWHの構築・運用まわりを中心に行う業務を続けて今に至ります。
どんなコンプレックスを感じているか
先ほど開発案件を経験していないことについてコンプレックスを感じていると書きましたが、具体的にどのようなことを感じているかを考えてみると、以下の2つが思い浮かびます。
1.今後のキャリアについての不安
2.プログラミングできたほうが楽しそう
1について、私は現状においてデータエンジニアと言われる業務をメインに行っており、また今後もデータエンジニアとしてのキャリアを積み上げていきたいと思っています。しかし、データエンジニアとしてのキャリアを歩んでいく上ではAWSやGCPなどのクラウド環境での業務がほぼ前提となるため、クラウド上でのインフラについての知識だけでなく、クラウド上での各種サービス(例えばGCPのDataflowやCloud Functionsなど)を利用する上ではコードを書く必要があります。
現在所属している組織ではデータ基盤の立ち上げフェーズのため、そこまで複雑なアーキテクチャを意識しなくてよく、ほとんどコードを書く必要はないのですが、今後ちゃんとしたデータ基盤の構築や運用の案件に関わることになった場合コーディングの機会が増えると感じたため、そのあたりに対応できるようにしておきたいと考えています。
2については、ちょっと雑ではありますが・・・単純に、ある程度プログラミングできたほうが人生が楽しくなるんじゃないか、という自己満足的な理由です。
プログラミングを(少しだけでも)書けるようになりたい!
では開発経験がない私が、(少しだけでも)プログラミングができるようになるために、具体的に行っているアクションについていくつか挙げてみます。
1.42Tokyoへの挑戦(Piscineで撃沈)
2.AtCoderでアルゴリズムの基礎を学習+コードを書く習慣を身に着ける
3.友人と定期的にもくもく会を実施して、簡易的なWEBアプリケーション当の開発
4.日々の情報のインプット(書籍、WEBなど)
1について、昨年の11月に42Tokyoの入学試験である、Piscineを受験しました。42Tokyoはフランス発の無料のプログラミングスクールです。スクールといっても教師や教材はおらず、ピアラーニングを活用して生徒だけで学んでいく環境です。入学試験のPiscineは不合格でしたが、特に仕事をしていたことが原因だとは感じず、自分をきちんと律して学び続ける適性がないと判断されたと思っています。正直自分には甘いタイプなので、不合格になったことについては少しほっとしてたりもします。。
2について、競技プログラミング(競プロ)サイトのAtCoderに登録して週に1回、コンテスト(ABC)に参加しています。(1か月前から開始)
競プロはプログラミングで何かサービスを作るというよりは、ある問いが与えられて、それを解くためのアルゴリズムを実装するような感じのものです。業務に直結する力が身につくわけではないと思いますが、コードだけでなく、アーキテクチャや業務上の仕様を考えるうえで、アルゴリズムを考える力は必須のため、AtCoderのような競技プログラミング系のサービスで学ぶことも大事だと思っています。
3について、やはり何か作りたいものを作るのが一番力がつくと思い、前職の同僚と定期的にオンラインでもくもく会を行っています。そこまでストイックな場ではないため、なかなか進捗がでないのですが、、しっかりと場を作って手を動かすため、もくもく会は良い場だと思っています。
4について、技術的な動向をちゃんと押さえるため、様々な情報のインプットを行っています。主に気になる技術書を購入して読んでみたり、Twitter上で技術に関する情報に目を通したり、QiitaやZenn等の技術系サイトで気になる情報に目を通し、理解を深めたいものについては、実際に手を動かしてみたりします。
今後について
先ほど、データエンジニアとしてのキャリアを続けていきたいと書いたものの、実際には現在行っているデータエンジニア業務の需要がどのように変わっていくかわからないため、ある程度応用が効くスキルを身に着ける必要があると思っています。そのため、もう少し手を動かせるようになりたいと思っています。(具体的な学習方法等については別途、整理してみようと思います。)