平凡な社会人の日記

平凡な社会人の日記です。怠惰な毎日を送っております。

とある未経験ITエンジニア、一年目が終わる。

これはなに?

IT業界未経験の自分がエンジニアとして一年間でどれだけ成長できたかを書き留めておくだけです。IT業界に未経験で入る方の参考になればと思います。

結論

やったことのない仕事でも報告・連絡・相談をこまめに行いながら調査、実験することである程度の成果物が安定して出せるようになったことが一番大きいと思います。また、2,3人のタスクを割り出し、共有、管理をやることもあります。

自己紹介

こんにちは。猫好きITエンジニャーのさっちゃん(@toshiakisan1127)です。今回は新卒でIT企業に入社した自分が、研修、仕事を通して何ができるようになったかをまとめようと思います。正直まだまだ「ITエンジニアです」と胸を張れるほどやれていないので私生活では「パソコンをぽちぽちする仕事をしています。」と言っていますが、ここではITエンジニアと言っておきます。ソフトウェアエンジニアと言った方が正確かもしれません。現在の技術スタックは最後にまとめておきます。

入社前にやっていたこと

自分は大学と大学院では物理学をやっていたのですが、さまざまな事が重なって大学院を中退してあるIT企業に入社しました。(中退した理由はこちら)大学院の後期は休学していたため時間があったので、少しでもIT系の知識をつけようと思い以下のことを行いました。

  1. 競技プログラミングAtCoder
  2. progate
  3. 基本情報技術者試験
  4. javascriptのお勉強
  5. Linux 入門

以下捕捉。 1: 最初はプログラミングの勉強に目的が欲しくて5月ごろに始めましたが、ハマってしまって9,10,11月はずっとやっていました。言語はPythonで、このブログにも記事を載せています。レートは730くらいです。 2: いろんな言語に触ってみたくて、月1000円くらいだったので8月中にHTML, CSS初級・中級、javascript, python, Go, Ruby, スクリプトあたりをやって退会しました。 3: 薄く広く知識をつけたかったので基本情報技術者試験の勉強をしました。合格点は取れたんですが、選択問題をチェックするフラグをつけ忘れて取れませんでした...。ただここで身につけた知識は入社後に役立ちました。(というかこれくらいの知識がないとお話にならないことが多くて危なかった...。) 4: javascript本格入門という本を読みながら言語の使用を理解しようとしていました。しかしあまり身に付かなかったように思います。 5: 新しいLinuxの教科書という本でポチポチ練習しました。これもやっておいてよかったです。

他にもdockerだったりAWSでEC2のインスタンスを立ててsshでログインしてみたりと色々やりましたが、入社後ほどは身に付かなかったです。やっぱり最初の一歩は理解している人に教えてもらいながら進めた方が圧倒的に効率がいいように思います。この経験から、実務でも最初はペアプロ・モブプロを積極的に行なっています。

研修編

自分はエンジニアではなく(エンジニアになる前提で)総合職の枠で入ったので、初めはIT未経験の方々と一緒に2.5ヶ月間研修を受けさせてもらえました。バニラなjavascriptで簡単な呟きアプリを作成するところから始まりましたが、自分は早く終わったので、躓いているチームメンバーに困っていることはないか聞きつつTypeScriptとvue.jsの勉強をしていました。研修の後半ではvue, Spring boot, postgresqlを使ってログイン機能がついたモノリスなチャットアプリを作成しました。チーム開発を通してgitの使い方やタスクの管理を学べましたが、同期と仲良くなれたのが一番良かったかなと思います。dockerで環境を作ること、Spring bootの環境構築に苦労したことを覚えています。班の中では自分が割とできるほうだったので、業務中は班の進捗を管理したりゴールを設定しつつ、夜中まで環境構築したりSpring bootの勉強をして班員に教えられるように勉強していました。(時には日付を超えて勉強していて翌日寝坊してました。)全てが新鮮で「楽しいな〜」と言いながらやってました。

配属後

6月中旬に12人程度の新規開発チームに配属されました。業務知識、アジャイルスクラム、DDD、オニオンアーキテクチャ、マイクロサービスアーキテクチャなど勉強することが多く、またチームメンバーのことも知らないので「いつでも質問してね」と言われても何を質問すればいいか分からなかった最初の1ヶ月は辛い時期でした。今思うと、質問ではなく「不安」を共有するようにすればよかったですし、今は自分が教える時は「何か質問はありますか?」の後で「何か不安に思っていることはありますか?」と聞くようにしています。7月、8月はSpring bootでAPIの設計・実装・自動テストをしていました。

9月から新しいマイクロサービスの立ち上げを手伝いました。ここで初めてAWSを本格的に触るようになりましたが、API Gateway, Lambda, Cognito, Neptuneなど聞いたこともないサービスもOAuth2.0も分からなくて非常に困りました。会議をしても何を言っているかわかりません。AWSアーキテクチャのレビュー会議でも、それがいいのか悪いのかを判断する基準がなくて、本当に何も分からん!という感じでした。しかし分からん分からん言ってても分かるようにはならないので、業務後や土日を使ってAWS SAAの勉強を始め、11月に取得しました。さらに業務で話に出たサービスを個人でも遊んでみることで理解を深めました。OAuth2.0も趣味で勉強しました。(というかしないと文字通りお話にならない...。)

また、手でLambdaをデプロイするのは厳しいので、9月に初めてIaCの一種としてAWS SAMに手を出しました。SAMについてはこちらを書きました。SAMはCloudformationのラッパーですが、AWSのドキュメントとの睨めっこが厳しかったです...。CI/CDの構築が楽なのはいいところです。

11月後半あたりからterraformも触りましたが、SAMを触ってからterraformを触ると、ドキュメントが整備されていてめちゃくちゃ楽しかったです。

Python についてはLambdaで使っていますし、コルーチンを使ってシングルスレッドで並列処理を行う方法なども勉強しました。競技プログラミングでは使わない技術なので楽しいです。

そんなこんなでAPIの設計・実装・テスト、インフラ周りの設計・構築、アーキテクチャレビューを主に業務として行っていると3月になりました。kubernetesもjobを書いてapplyしたりしましたが、ちゃんと分かってないので近いうちに勉強します。

最近はterraformでgitlab runnerを作って社内記事にしたりして遊んでます。

これから

あっというまに1年が過ぎようとしています。よく成長したなと思う反面、もっとうまくやれたなーという思いです。これからですが、まだまだ勉強したいことがあるのでそれを消化していきます。転職を考えたりもしていますが、自分は今のチームが好きで学べることが多く、何より楽しくやれているのでもう少し先かなーと考えています。(会社は「どちらかというと好き」くらい。)でもいい条件があれば会社を変えることも考えています。

技術スタック

(技術スタック書くの難しい...。)

業務で使ったことがあるAWSのサービス

IAM, EC2, VPC, EKS, Aurora for mysql, API Gateway, Lambda, DynamoDB, Cognito, Neptune, Cloudformation, Cloudwatch logs, x-ray, Route53, S3, KMS, SAM

触ったことがあるAWSのサービス(遊び含む)

ElasticBeanStalk, ECS, Fargate

資格

AWS SAA

他にも思い出したら追記しておきます。

最後に

自分に対する自分の評価としては、すごく良くできるわけではないですが一年目はこんなもんじゃないですか?知らんけど。